网格、区域、路段统计,任务指派人员

Lvtianfang
吕天方 1 year ago
parent 37294bc09d
commit 76d669a964

@ -2,7 +2,7 @@
# @Author: 张涛
# @Date: 2023-11-09 18:29:41
# @LastEditors: JC9527
# @LastEditTime: 2024-03-01 16:49:05
# @LastEditTime: 2024-03-07 20:51:13
# @FilePath: \JiangningUrbanManagePc\.env.development
###
# 页面标题
@ -14,10 +14,10 @@ ENV = 'development'
# 若依管理系统/开发环境
# /dev-api
# VUE_APP_BASE_API = 'http://39.101.188.84:9037'
# VUE_APP_BASE_API = 'https://t-jn-bjh-admin-server.jsszkd.com'
VUE_APP_BASE_API = 'https://t-jn-bjh-admin-server.jsszkd.com'
VUE_APP_BASE_API1 = 'https://t-kd-process-server.jsszkd.com'
VUE_APP_BASE_API2 = 'https://t-jn-development-manager-server.jsszkd.com/api/webapp'
VUE_APP_BASE_API = 'http://192.168.0.105:9037'
# VUE_APP_BASE_API = 'http://192.168.0.110:9037'
# 路由懒加载
VUE_CLI_BABEL_TRANSPILE_MODULES = true

@ -1,3 +1,11 @@
/*
* @Descripttion:
* @version:
* @Author: JC9527
* @Date: 2024-01-09 23:11:58
* @LastEditors: JC9527
* @LastEditTime: 2024-03-06 18:56:29
*/
import request from "@/utils/request2"
// 事件来源按日/月纬度统计
@ -48,4 +56,38 @@ export function getEventGridEnum() {
"X-Access-Token": localStorage.getItem('robotToken')
}
})
}
// 网格数据
export function statgrid(params){
return request({
url: "/event/summary/statgrid",
method:'get',
headers:{
isToken:false,
},
params
})
}
// 重点路段
export function statroad(params){
return request({
url: "/event/summary/statroad",
method:'get',
headers:{
isToken:false,
},
params
})
}
// 重点区域
export function statregion(params){
return request({
url: "/event/summary/statregion",
method:'get',
headers:{
isToken:false,
},
params
})
}

@ -4,19 +4,44 @@
* @Author: JC9527
* @Date: 2024-01-11 23:19:29
* @LastEditors: JC9527
* @LastEditTime: 2024-01-12 23:59:57
* @LastEditTime: 2024-03-06 11:39:06
*/
import request from "@/utils/request1"
// 自动提交事件流程
// 自动提交事件流程-1---保存事件数据接口
export function eventSaveData(params,data) {
return request({
url: "/api/eform/engine/formEngine/saveData",
method:'post',
// headers: {
// isToken: false
// },
params,
data
})
}
// 自动提交事件流程-2---获取流程权限
export function getBpmOperateVo(params){
return request({
url: "/api/bpm/bpm-front/displayRest/getBpmOperateVo/v1",
method:'get',
// headers: {
// isToken: false
// },
params
})
}
// 自动提交事件流程-3---调用自动提交
export function autoSubmit(params){
return request({
url: "/api/bpm/bpm-front/operateRest/autoSubmit/v1",
method:'put',
// headers: {
// isToken: false
// },
params
})
}
// 模拟登录
export function robotLogin(data){
return request({
@ -36,30 +61,22 @@ export function ViewListPage(params,data){
}
/**
*
* 任务派发流程
* 事件指派-保存业务数据
*/
// 任务派发流程----3调用自动提交
export function autoSubmit(data){
// 1.事件指派-保存业务数据
export function formEngineSaveData(params,data){
return request({
url: "/api/bpm/bpm-front/operateRest/autoSubmit/v1",
method:'put',
url: "/api/eform/engine/formEngine/saveData",
method:'post',
params,
data
})
}
// 任务派至城管队长----1获取流程权限
export function getBpmOperateVo(params){
// 2.事件指派-流程流转
export function auditSubmit(params){
return request({
url: "/api/bpm/bpm-front/displayRest/getBpmOperateVo/v1",
url: "/audit/auditSubmit",
method:'get',
params
})
}
// 任务派至城管队长----2保存业务数据
export function distributeSaveData(params,data){
return request({
url: "/api/eform/engine/formEngine/saveData",
method:'post',
params,
data
})
}
}

@ -14,7 +14,7 @@
//
.event-popup {
width: 252px;
height: 224px;
// height: 244px;
background-image: url("../images/popup/popup.png");
background-size: 100% 100%;
z-index: 600;
@ -63,6 +63,7 @@
.dot {
width: 4px;
height: 4px;
line-height: 17px;
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;
@ -78,8 +79,15 @@
line-height: 17px;
}
.name {
// flex: 1;
flex-wrap: nowrap;
}
.position {
width: 120px;
// flex: 1;
// flex-wrap: wrap;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
@ -104,11 +112,15 @@
}
}
}
.event-popupTwo {
// height: 190px;
}
//
.person-popup {
// width: 242px;
width: 470px;
// width: 470px;
width: 390px;
height: 244px;
background-image: url("../images/popup/popup.png");
background-size: 100% 100%;
@ -357,7 +369,7 @@
.info-left {
display: flex;
// align-items: center;
width: 45%;
width: 35%;
.dot {
width: 4px;
height: 4px;

@ -36,6 +36,9 @@ service.interceptors.request.use(config => {
// config.headers['Authorization'] = 'Bearer ' + getAccessToken() // 让每个请求携带自定义token 请根据实际情况自行修改
config.headers['X-Access-Token'] = localStorage.getItem('robotToken') // 让每个请求携带自定义token 请根据实际情况自行修改
}
// if (localStorage.getItem('accessToken') && isToken) {
// config.headers['X-Access-Token'] = localStorage.getItem('accessToken')
// }
// get请求映射params参数
if (config.method === 'get' && config.params) {
let url = config.url + '?' + tansParams(config.params);

@ -4,7 +4,7 @@
* @Author: JC9527
* @Date: 2023-08-15 09:44:13
* @LastEditors: JC9527
* @LastEditTime: 2024-03-01 16:48:15
* @LastEditTime: 2024-03-08 08:56:50
-->
<template>
<div class="left-box">
@ -82,7 +82,7 @@
<div class="item lfet-list-two" :style="itemOne">
<title-box title="车辆在线情况"></title-box>
<map-number title="在线车辆总数" :onLine="10" :sum="18" type="辆" :numberArray="vehicleArray" :height="oneHeight"
:id="3"></map-number>
:id="3" v-on="$listeners"></map-number>
</div>
</div>
</template>
@ -99,29 +99,7 @@ export default {
perpsonNum: 0,
personOnLine: 0,
peopleArray: [],
vehicleArray: [
{
userName: '苏A123456'
}, {
userName: '苏A123456'
}, {
userName: '苏A123456'
}, {
userName: '苏A123456'
}, {
userName: '苏A123456'
}, {
userName: '苏A123456'
}, {
userName: '苏A123456'
}, {
userName: '苏A123456'
}, {
userName: '苏A123456'
}, {
userName: '苏A123456'
},
],
vehicleArray: [],
itemOne: {
height: '',
},

@ -4,7 +4,7 @@
* @Author: JC9527
* @Date: 2023-08-15 11:09:57
* @LastEditors: JC9527
* @LastEditTime: 2024-02-02 13:38:08
* @LastEditTime: 2024-03-08 10:15:01
-->
<template>
<div class="right-box">
@ -32,6 +32,7 @@ import mapRight from '../../components/mapRight/index.vue'
import {
getFence,
} from "@/api/bigScreenApi";
import { statgrid, statroad, statregion } from "@/api/bigScreenApi/eventApi"
export default {
name:'mapRightContent',
components:{titleBox,mapRight},
@ -108,36 +109,30 @@ export default {
watch:{
quyuData:{
handler(newQuyu){
// console.log(newQuyu,'');
if(newQuyu) {
this.quyuArray = newQuyu
// this.quyuArray = newQuyu;
// console.log("");
this.getquyu(newQuyu);
}
},
immediate:true,
},
// weilanData:{
// handler(newWeilan){
// // console.log(newWeilan,'');
// if(newWeilan) {
// this.weilanArray = newWeilan
// }
// },
// immediate:true,
// },
luduanData:{
handler(newLuduan){
// console.log(newLuduan,'');
if(newLuduan) {
this.luduanArray = newLuduan
// console.log("");
// this.luduanArray = newLuduan;
this.getLuduan(newLuduan);
}
},
immediate:true,
},
wanggeData: {
handler(newWange){
// console.log(newWange,'');
if(newWange) {
this.wanggeArray = newWange
// console.log("");
// this.wanggeArray = newWange;
this.getWangge(newWange);
}
},
immediate:true,
@ -163,8 +158,85 @@ export default {
this.weilanArray = res.data;
}
})
},
getWangge(newWange){
let data = newWange.map((item)=>{
let data = {
startTime: this.getCurrentTime(),
endTime: this.getCurrentTime(1),
gridld: item.id
}
statgrid(data).then(res=>{
this.$set(item,'total',res.data.total);
item.total = res.data.total;
item.handled = res.data.handled;
item.unhandled = res.data.unhandled;
})
return item;
})
this.wanggeArray = data;
// let grids = []
// newWange.map((item)=>{
// grids.push(item.id);
// })
// let data = {
// startTime: this.getCurrentTime(),
// endTime: this.getCurrentTime(1),
// gridld: grids.join(",")
// }
// statgrid(data).then(res=>{
// this.$set(item,'total',res.data.total);
// item.total = res.data.total;
// item.handled = res.data.handled;
// item.unhandled = res.data.unhandled;
// console.log(res,"");
// })
},
getquyu(newQuyu){
let data = newQuyu.map((item)=>{
let data = {
startTime: this.getCurrentTime(),
endTime: this.getCurrentTime(1),
gridld: item.id
}
statroad(data).then(res=>{
this.$set(item,'total',res.data.total);
item.total = res.data.total;
item.handled = res.data.handled;
item.unhandled = res.data.unhandled;
})
return item;
})
this.quyuArray = data;
},
getLuduan(newLuduan){
let data = newLuduan.map((item)=>{
let data = {
startTime: this.getCurrentTime(),
endTime: this.getCurrentTime(1),
gridld: item.id
}
statregion(data).then(res=>{
this.$set(item,'total',res.data.total);
item.total = res.data.total;
item.handled = res.data.handled;
item.unhandled = res.data.unhandled;
})
return item;
})
this.luduanArray = data;
},
getCurrentTime(id) {
const currentDate = new Date();
if(id){
currentDate.setDate(currentDate.getDate() + 1);
}
const year = currentDate.getFullYear();
const month = currentDate.getMonth() + 1 < 10 ? '0' + (currentDate.getMonth() + 1) : currentDate.getMonth() + 1; // 01
const day = currentDate.getDate() < 10 ? '0' + currentDate.getDate() : currentDate.getDate();
return year + "-" + month + "-" + day;
}
},
mounted(){
window.addEventListener("resize", () => {

@ -4,7 +4,7 @@
* @Author: JC9527
* @Date: 2024-01-09 23:08:15
* @LastEditors: JC9527
* @LastEditTime: 2024-03-04 10:48:02
* @LastEditTime: 2024-03-08 09:06:26
-->
<template>
<div class="map-main">
@ -104,8 +104,8 @@
</div>
<div class="btns">
<div @click="travelPath()"></div>
<div>附近队员</div>
<div>位置分</div>
<!-- <div>附近队员</div> -->
<div @click="shareClick"></div>
<div @click="watchClick"></div>
<div @click="taskClick"></div>
</div>
@ -121,7 +121,7 @@
:position="eventInfo.position"
:visible.sync="eventInfo.visible"
>
<div class="event-popup">
<div class="event-popup" :class="eventInfo.info.status == '待受理' ? '':'event-popupTwo'">
<div class="event-title">
<div class="title">事件信息</div>
<!-- <div class="mask" @click="markersClosePopup"></div> -->
@ -136,19 +136,30 @@
<div class="event-info">
<div class="dot"></div>
<div class="name">事件类别</div>
<div class="position">{{ eventInfo.info.type }}</div>
<el-tooltip :content="eventInfo.info.type" placement="top">
<div class="position">{{ eventInfo.info.type }}</div>
</el-tooltip>
</div>
<div class="event-info">
<div class="dot"></div>
<div class="name">事件地址</div>
<div class="position">{{ eventInfo.info.address }}</div>
<el-tooltip :content="eventInfo.info.address" placement="top">
<div class="position">{{ eventInfo.info.address }}</div>
</el-tooltip>
</div>
<div class="event-info">
<div class="dot"></div>
<div class="name">描述</div>
<div class="position">{{ eventInfo.info.content }}</div>
<el-tooltip :content="eventInfo.info.content" placement="top">
<div class="position">{{ eventInfo.info.content }}</div>
</el-tooltip>
</div>
<div class="btn" @click="eventBtn">
<div class="event-info">
<div class="dot"></div>
<div class="name">状态</div>
<div class="position">{{ eventInfo.info.status }}</div>
</div>
<div class="btn" v-show="eventInfo.info.status == '待受理'" @click="eventBtn">
指派
</div>
</div>
@ -158,7 +169,7 @@
<!-- 执法车辆弹框 -->
<el-amap-info-window
v-if="carInfo.visible"
:offset="[-10,-40]"
:offset="[-0,-10]"
:closeWhenClickMap="true"
:position="carInfo.position"
:visible.sync="carInfo.visible"
@ -172,8 +183,8 @@
<div class="car-main">
<div class="car-info">
<div class="dot"></div>
<div class="name">执法一队1号车</div>
<div class="position">苏A568974</div>
<div class="name">{{carInfo.info.carName}}</div>
<div class="position">{{carInfo.info.carCode}}</div>
</div>
<div class="btn" @click="travelPath()"></div>
</div>
@ -199,7 +210,7 @@
<div class="person-info">
<div class="info-left">
<div class="dot"></div>
<div class="name">监控点名称</div>
<div class="name">名称</div>
</div>
<div class="position">{{ monitoringInfo.info.name }}</div>
</div>
@ -254,12 +265,16 @@
<div class="event-info">
<div class="dot"></div>
<div class="name">所在地址</div>
<div class="position">{{ shopInfo.info.bodyAddress }}</div>
<el-tooltip :content="shopInfo.info.bodyAddress" placement="top">
<div class="position">{{ shopInfo.info.bodyAddress }}</div>
</el-tooltip>
</div>
<div class="event-info">
<div class="dot"></div>
<div class="name">描述</div>
<div class="position">{{ shopInfo.info.bodyName }}</div>
<el-tooltip :content="shopInfo.info.bodyName" placement="top">
<div class="position">{{ shopInfo.info.bodyName }}</div>
</el-tooltip>
</div>
<div class="btn" @click="getShopInfo">
@ -276,7 +291,7 @@
<transition name="left-animationMap">
<div class="map-left" v-if="leftAnimationData">
<!-- :personLine="personLine" -->
<map-left :carLine="carLine" @realTimeLocationClick="realTimeLocationClick"></map-left>
<map-left :carLine="carLine" @realTimeLocationClick="realTimeLocationClick" @carTimeLocationClick="realTimeLocationClick"></map-left>
</div>
</transition>
@ -415,6 +430,7 @@
<div class="bgt"></div>
</div>
<personage-track ref="personageTrack"></personage-track>
<!-- 事件指派人员 -->
<crew-assign ref="crewAssign"></crew-assign>
<!-- <video-wall ref="videoWall"></video-wall> -->
<alone-video ref="aloneVideo"></alone-video>
@ -545,6 +561,7 @@ export default {
//
carInfo: {
position: [],
info:{},
visible: false,
},
//
@ -958,7 +975,8 @@ export default {
},
//
_eventMarker (context) {
var content = `<div class="markerStyles"><img src="${require("../../../assets/images/icon/icon2.png")}" alt=""></div>`;
// console.log(context,"context");
var content = `<div class="markerStyles"><img src="${context.data[0].info.status == '已处理' ? require("../../../assets/images/icon/offLine2.png") : require("../../../assets/images/icon/icon2.png")}" alt=""></div>`;
var offset = new AMap.Pixel(-13, -16);
context.marker.setContent(content)
context.marker.setOffset(offset)
@ -968,6 +986,18 @@ export default {
this.eventInfo.visible = true;
})
},
//
_carMarker(context){
var content = `<div class="markerStyles"><img src="${require("../../../assets/images/icon/icon4.png")}" alt=""></div>`;
var offset = new AMap.Pixel(-13, -16);
context.marker.setContent(content)
context.marker.setOffset(offset)
context.marker.on('click',(ev)=>{
this.carInfo.position = context.data[0].position;
this.carInfo.info = context.data[0].info;
this.carInfo.visible = true;
})
},
//
_renderMarker (context) {
var content = `<div class="markerStyles"><img src="${context.data[0].info.status == 1 ? require("../../../assets/images/icon/icon5.png") : require("../../../assets/images/icon/offLine4.png")}" alt=""></div>`;
@ -993,6 +1023,7 @@ export default {
this.shopInfo.visible = true;
})
},
//
getMarkers(id,status){
@ -1119,17 +1150,58 @@ export default {
}
})
} else if(id == 3){
point.features.forEach((element)=>{
if (element.properties.name == "执法车辆") {
// 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 = element.properties.status == "0"? offIcon3 : ico4;
// obj.text = element.properties.name;
// this.markers.push(obj)
// this.mapLoading = false;
// }
// })
getCarManageList({pageNum: 1,pageSize: 1000}).then(res=>{
// console.log('',res);
this.carLine = res.rows
let videoPoint = [];
this.mapLoading = false;
res.rows.forEach((element)=>{
// console.log(element);
let obj = {position:[]};
obj.position[0] = element.geometry.coordinates[0];
obj.position[1] = element.geometry.coordinates[1];
obj.imgSrc = element.properties.status == "0"? offIcon3 : ico4;
obj.text = element.properties.name;
this.markers.push(obj)
obj.position[0] = element.longitude;
obj.position[1] = element.latitude;
// obj.imgSrc = element.status == "0" ? offIcon4 : ico5;
obj.lnglat = new AMap.LngLat(element.longitude ? element.longitude : 0 ,element.latitude ? element.latitude : 0)
obj.imgSrc = ico4;
obj.info = element;
// this.markers.push(obj)
videoPoint.push(obj)
})
this.count = videoPoint.length;
AMap.plugin(['AMap.MarkerCluster','AMap.Size','AMap.Pixel'],()=>{
this.cluster = new AMap.MarkerCluster(this.map,videoPoint,{
gridSize: 60, //
styles: sts,
maxZoom: 15,
// renderClusterMarker: this._renderClusterMarker, //
renderMarker: this._carMarker, //
})
})
// res.rows.forEach(element => {
// let obj = {position:[]};
// obj.position[0] = element.longitude;
// obj.position[1] = element.latitude;
// obj.imgSrc = ico6;
// obj.info = element;
// this.markers.push(obj)
// this.mapLoading = false;
// })
}).catch(err=>{
this.mapLoading = false;
}
})
})
} else if(id == 4){
getVideoPageEq({pageNo:1,pageSize:1000}).then(res=>{
this.mapLoading = false;
@ -1251,7 +1323,11 @@ export default {
},
//
taskClick(){
this.$refs.personageTask.open(this.personInfo.info);
if(this.personInfo.info.status == "1") {
this.$refs.personageTask.open(this.personInfo.info);
} else {
this.$modal.msgError("该设备已离线");
}
},
//
initVideoPlayer(videoUrl){
@ -1324,7 +1400,7 @@ export default {
if(res.code == 200 && res.data.msg == '操作成功') {
// http://121.229.2.163:9291/live/9999 http://120.27.25.166:9305/live/9999_
setTimeout(()=>{
this.initVideoPlayer(`http://121.229.2.163:9291/live/9999_${this.personInfo.info.userId}.flv`)
this.initVideoPlayer(`https://121.229.2.163:9307/live/9999_${this.personInfo.info.userId}.flv`)
},3000)
}
})
@ -1343,6 +1419,21 @@ export default {
this.player = null
if(this.timer) clearInterval(this.timer)
},
//
shareClick(){
console.log(this.personInfo,"位置分享");
if(this.personInfo.info.status == "1") {
var aux = document.createElement("input");
aux.setAttribute("value", this.personInfo.info.address);
document.body.appendChild(aux);
aux.select();
document.execCommand("copy");
document.body.removeChild(aux);
this.$modal.msgSuccess("位置已复制");
} else {
this.$modal.msgError("该人员已离线");
}
},
//
eventBtn(){
this.$refs.crewAssign.open(this.eventInfo.info);
@ -1614,6 +1705,18 @@ export default {
})
})
},
//
getCurrentTime(id) {
const currentDate = new Date();
if(id){
currentDate.setDate(currentDate.getDate() + 1);
}
const year = currentDate.getFullYear();
const month = currentDate.getMonth() + 1; // 01
const day = currentDate.getDate();
return year + "-" +month + "-" + day;
},
//
openClick(layer){
layer.on('click',(e)=>{
@ -1672,14 +1775,20 @@ export default {
},
//
realTimeLocationClick(item,id){
if(id == this.actionMap) {
if(id == 1) {
this.personLine.forEach(per=>{
if(item.imei == per.imei) {
this.map.setZoomAndCenter(16,[per.longitude,per.latitude]);
}
})
} else if(id == this.actionMap){
} else if(id == 3){
// console.log("");
console.log(this.carInfo);
this.carLine.forEach(car=>{
if(item.id == car.id) {
this.map.setZoomAndCenter(16,[car.longitude,car.latitude]);
}
})
}
},
// /
@ -1687,7 +1796,7 @@ export default {
if(this.actionMap == 1) {
this.$refs.personageTrack.open("person", this.personInfo.info);
} else if(this.actionMap == 3) {
this.$refs.personageTrack.open("car");
this.$refs.personageTrack.open("car", this.car.info);
}
},
//
@ -2404,7 +2513,7 @@ export default {
},
confirm() {
//
this.getMarkers(2);
},
//
changeMap(id) {
@ -2449,7 +2558,7 @@ export default {
//
getCarList(){
getCarManageList({pageNum: 1,pageSize: 10}).then(res=>{
// console.log(res);
// console.log('',res);
this.carLine = res.rows
})
},
@ -2486,7 +2595,7 @@ export default {
// token
getrobotToken(){
robotLogin({username:"superAdmin",password:"sa@123456"}).then(res=>{
console.log(res,"登录信息");
// console.log(res,"");
if(res.code == 200) {
// setRobotToken(res.result.token)
localStorage.setItem('robotToken',res.result.token)

@ -4,7 +4,7 @@
* @Author: JC9527
* @Date: 2023-08-17 09:04:40
* @LastEditors: JC9527
* @LastEditTime: 2024-03-04 10:49:27
* @LastEditTime: 2024-03-07 13:53:39
-->
<template>
<dia-log ref="dialog2" width="30%" title="人员指派">
@ -52,6 +52,7 @@
<div class="right">
<el-date-picker
v-model="dateTime"
value-format="yyyy-MM-dd HH:mm:ss"
type="datetime"
placeholder="选择日期时间"
>
@ -69,6 +70,10 @@
<script>
import diaLog from "../../components/dialog/index.vue";
import { hasImeiTree, getDept } from "@/api/bigScreenApi"
import {
formEngineSaveData,
auditSubmit,
} from "@/api/bigScreenApi/robot.js";
export default {
components: { diaLog },
data() {
@ -82,14 +87,11 @@ export default {
lazy:true,
lazyLoad:(node, resolve)=>{
const { children,value,level } = node;
// console.log(children,"children")
// console.log(value);
// console.log("level",level);
if(children?.length == 0 ) {
if(children?.length == 0 ) {
getDept(value).then(res=>{
const nodes = Array.from(res.data).map((item)=>{
return {
deptId:item.userId,
deptId:item.userName,
deptName:item.nickName,
leaf:level >= level
}
@ -102,14 +104,33 @@ export default {
}
},
eventInfo:{},
query:{
formKey:"event-holder",
isFlow:"true",
},
body:{
formData:{
"report-event":{
id:"", // id
tasks:{
taskRandNumber:"", //
taskDeadline:"", //
taskName:"" //
},
}
},
saveParameter:{},
docList:[],
}
};
},
methods: {
open(info) {
this.$refs.dialog2.open("2");
hasImeiTree().then(res=>{
// console.log('',res);
console.log('部门树',res);
this.options = res.data[0].children[0].children;
console.log(this.options,"this.options");
})
this.eventInfo = info;
},
@ -120,10 +141,83 @@ export default {
cancel() {
this.$refs.dialog2.Close();
},
confirm() {},
confirm() {
if( !this.dateTime & !this.value) {
this.$modal.msgError("请选择指派人员和截止时间")
} else if(!this.dateTime){
this.$modal.msgError("请选择截止时间")
} else if(!this.value) {
this.$modal.msgError("请选择指派人员")
} else {
// console.log(this.body.reportEvent);
let body = {
formData:{
"report-event":{
id: this.eventInfo.id, // id
tasks:{
taskIsdiscard: "0",
taskVoidReason: "",
taskType: "2",
taskRandNumber:this.getCurrentTime(), //
taskDeadline:this.dateTime, //
taskStatus: "6",
taskName:this.eventInfo.name //
},
status: "1"
}
},
saveParameter:{},
docList:[],
}
formEngineSaveData(this.query,body).then(res=>{
// console.log(res,"");
// name
let name = this.recursion(this.value[this.value.length - 2],this.options);
if(res.code == 200) {
auditSubmit({formId:res.result,phone:this.value[this.value.length - 1],depName:"集团有限公司环卫管理部"}).then(resTwo=>{
// console.log(resTwo,"");
if(resTwo.code == 200) {
this.value = "";
this.dateTime = "";
this.$modal.msgSuccess("指派成功");
this.Close();
}
}).catch(err=>{
this.value = "";
this.dateTime = "";
this.Close();
})
}
})
}
},
handleChange(value){
console.log(value);
},
recursion(id,arr){
for (let i = 0; i < arr.length; i++) {
if (arr[i].deptId === id) {
return arr[i].deptName;
} else if (arr[i].children) {
let result = this.recursion(id, arr[i].children);
if (result) {
return result;
}
}
}
return null;
},
getCurrentTime() {
var currentDate = new Date();
var year = currentDate.getFullYear();
var month = ('0' + (currentDate.getMonth() + 1)).slice(-2);
var day = ('0' + currentDate.getDate()).slice(-2);
var hours = ('0' + currentDate.getHours()).slice(-2);
var minutes = ('0' + currentDate.getMinutes()).slice(-2);
var seconds = ('0' + currentDate.getSeconds()).slice(-2);
var milliseconds = ('00' + currentDate.getMilliseconds()).slice(-3);
return year + month + day + hours + minutes + seconds + milliseconds;
}
},
};
</script>

@ -75,12 +75,16 @@ export default {
realTimeLocation(item){
if(this.id == 1) {
this.$emit("realTimeLocationClick", item,this.id);
} else if(this.id == 3) {
this.$emit("carTimeLocationClick", item,this.id);
}
},
//
historicalRoute(item){
if(this.id == 1) {
this.$refs.personageTrack.open("person", item);
} else if(this.id == 3) {
this.$refs.personageTrack.open("car", item);
}
}
},

@ -18,10 +18,13 @@
<div>{{ item.resolved }}</div>
<div class="unsolved">{{ item.unsolved }}</div> -->
<div v-if="id == 4">{{ item.ydk || 0 }}</div>
<div v-else>50</div>
<!-- 今日事件 -->
<div v-else>{{ item.total }}</div>
<div v-if="id == 4">{{ item.wdk || 0 }}</div>
<div v-else>30</div>
<div class="unsolved" v-if="id != 4">20</div>
<!-- 已处理 -->
<div v-else>{{ item.handled }}</div>
<!-- 未处理 -->
<div class="unsolved" v-if="id != 4">{{ item.unhandled }}</div>
</div>
</div>
</div>

File diff suppressed because it is too large Load Diff

@ -1,6 +1,6 @@
<template>
<!-- 选择事件及派发按钮 -->
<dia-log ref="taskDialog" width="30%" :title="title">
<dia-log ref="taskDialog" width="30%" :title="title" @close="close">
<el-form :inline="true" :model="taskForm" class="demo-form-task" ref="formTask" :rules="rules">
<el-row>
<el-col :span="24">
@ -62,12 +62,13 @@
<template slot="label">
<div class="new-event-form">
<div class="ball"></div>
<span>发生时间</span>
<span>截至时间</span>
</div>
</template>
<div class="right">
<el-date-picker
v-model="taskForm.openTime"
value-format="yyyy-MM-dd HH:mm:ss"
type="datetime"
placeholder="选择日期时间"
>
@ -86,7 +87,7 @@
</el-col>
</el-row>
</el-form>
<dia-log ref="eventDialog" width="60%" title="选择事件">
<dia-log ref="eventDialog" width="70%" title="选择事件">
<section>
<el-table
class="exporttable"
@ -128,6 +129,11 @@
header-align="center"
label="事件发生时间">
</el-table-column>
<el-table-column
prop="status"
header-align="center"
label="事件状态">
</el-table-column>
<el-table-column
prop=""
header-align="center"
@ -156,7 +162,8 @@
</template>
<script>
import diaLog from "../../components/dialog/index.vue"
import { ViewListPage, autoSubmit, getBpmOperateVo, distributeSaveData } from "@/api/bigScreenApi/robot.js"
import { ViewListPage, formEngineSaveData, auditSubmit } from "@/api/bigScreenApi/robot.js"
import { getUserByImei } from "@/api/bigScreenApi"
export default {
components:{diaLog},
data() {
@ -176,6 +183,12 @@ export default {
info:null,
tableData: [],
TabLoading:false,
query:{
formKey:"event-holder",
isFlow:"true",
},
eventInfo:{},
phonenumber:"",
}
},
mounted() {
@ -185,12 +198,20 @@ export default {
open(info){
this.info = info;
this.$refs.taskDialog.open();
console.log(info,"info");
getUserByImei({imei: info.imei}).then(res=>{
if(res.code == 200) {
this.phonenumber = res.data[0].phonenumber;
}
})
},
getViewListPageList(page){
this.TabLoading = true;
let data = {'queryValue' : [], "myInstanceClassify" : "all", "parameterValue":[], fks: []}
ViewListPage({viewCode:'shi_jian_shou_li_list_page', pageNo: page || 1, pageSize:10}, data).then(res => {
let data = {'queryValue' : [{
"colCode": "status",
"queryValue": "0"
}], "myInstanceClassify" : "all", "parameterValue":[], fks: []}
ViewListPage({viewCode:'event-all-list', pageNo: page || 1, pageSize:10}, data).then(res => {
if(res.code == 200) {
this.total = res.result.total;
this.tableData = res.result.records;
@ -212,8 +233,9 @@ export default {
return 'font-size: 14px;font-family: "Source Han Sans CN-Regular";font-weight: 400;color: #d3eef2;'
},
zhipai(row){
console.log("事件触发了");
// console.log("");
this.taskForm.task = row.name
this.eventInfo = row;
this.$refs.eventDialog.Close();
},
//
@ -221,6 +243,11 @@ export default {
this.$refs.eventDialog.open()
this.getViewListPageList();
},
close(){
this.$nextTick(()=>{
this.$refs['formTask'].resetFields();
})
},
//
cancel(refForm){
this.$refs[refForm].resetFields();
@ -228,19 +255,57 @@ export default {
},
//
confirm(refForm){
this.$refs[formName].validate((valid) => {
this.$refs[refForm].validate((valid) => {
if(valid){
let ts = Math.round(new Date().getTime()/1000).toString();
// console.log(ts,"tstststs");
// console.log(this.taskForm,"taskForm");
// getBpmOperateVo({_t:ts,id:this.taskForm.task,idType:"formId",formCode:"event-holder"}).then(res=>{
// if(res.code == 200) {
// return distributeSaveData()
// }
// })
let body = {
formData:{
"report-event":{
id: this.eventInfo.id, // id
tasks:{
taskIsdiscard: "0",
taskVoidReason: "",
taskType: "2",
taskRandNumber:this.getCurrentTime(), //
taskDeadline:this.taskForm.openTime, //
taskStatus: "6",
taskName:this.eventInfo.name //
},
status: "1"
}
},
saveParameter:{},
docList:[],
}
formEngineSaveData(this.query,body).then(res=>{
if(res.code == 200) {
auditSubmit({formId:res.result,phone:this.phonenumber,depName:"集团有限公司环卫管理部"}).then(resTwo=>{
if(resTwo.code == 200) {
this.$message({
message: "任务派发成功",
type: "success"
});
this.cancel("formTask")
this.$refs.taskDialog.Close();
}
}).catch(()=>{
})
}
})
}
})
},
getCurrentTime() {
var currentDate = new Date();
var year = currentDate.getFullYear();
var month = ('0' + (currentDate.getMonth() + 1)).slice(-2);
var day = ('0' + currentDate.getDate()).slice(-2);
var hours = ('0' + currentDate.getHours()).slice(-2);
var minutes = ('0' + currentDate.getMinutes()).slice(-2);
var seconds = ('0' + currentDate.getSeconds()).slice(-2);
var milliseconds = ('00' + currentDate.getMilliseconds()).slice(-3);
return year + month + day + hours + minutes + seconds + milliseconds;
},
//
pageChange(pages) {
// console.log(pages);
@ -447,7 +512,7 @@ export default {
::v-deep .el-input__prefix {
display: none;
}
::v-deep .el-date-editor {
.el-date-editor {
background-color: transparent;
// width: 350px;
.el-input__inner {
@ -459,7 +524,7 @@ export default {
font-family: "Source Han Sans CN-Medium";
font-weight: 500;
color: #e9f4ff;
padding-left: 12px;
padding: 0px 15px;
}
.el-input__inner::placeholder {
/* 在这里添加你想要修改的 placeholder 样式 */
@ -474,7 +539,7 @@ export default {
.data_icon {
position: absolute;
right: 30px;
right: 10px;
top: 8px;
width: 20px;
}

@ -17,10 +17,10 @@
}}</span>
</div>
</div>
<div class="item car-item" v-if="!person">
<!-- <div class="item car-item" v-if="!person">
<div class="ball"></div>
<div class="content">驾驶员姓名<span>张三</span></div>
</div>
</div> -->
<div class="item">
<div class="ball"></div>
<div class="content">

@ -36,7 +36,7 @@
<div class="itemtwo">
<div class="left">
<div class="ball"></div>
<div class="content">查日期</div>
<div class="content">查日期</div>
</div>
<div class="right">
<el-date-picker
@ -68,20 +68,13 @@
<span>是否发起整改工单</span>
</div>
<div class="tb-list">
<div v-for="(item, ind) in 10" :key="ind">
<div v-for="(item, ind) in tableData" :key="ind">
<div class="tb-content">
<span>张天</span>
<span>网格1</span>
<span>2023-09-12</span>
<span></span>
<span></span>
</div>
<div class="tb-content_">
<span>张天</span>
<span>网格1</span>
<span>2023-09-12</span>
<span></span>
<span></span>
<span>{{item.name}}</span>
<span>{{item.grid}}</span>
<span>{{item.time}}</span>
<span>{{item.hidden}}</span>
<span>{{item.order}}</span>
</div>
</div>
</div>
@ -118,6 +111,39 @@ export default {
label: "网格5",
},
],
tableData:[
{
name: "王明光",
grid: "一中队一号网格",
time: "2024-01-12",
hidden: "否",
order: "否"
},{
name: "王龙",
grid: "一中队一号网格",
time: "2024-01-12",
hidden: "否",
order: "否"
},{
name: "鲁建国",
grid: "一中队一号网格",
time: "2024-01-12",
hidden: "否",
order: "否"
},{
name: "孔祥龙",
grid: "一中队一号网格",
time: "2024-01-12",
hidden: "否",
order: "否"
},{
name: "顾国庆",
grid: "一中队一号网格",
time: "2024-01-12",
hidden: "否",
order: "否"
},
],
};
},
};

@ -36,7 +36,7 @@
<div class="itemtwo">
<div class="left">
<div class="ball"></div>
<div class="content">排查日期</div>
<div class="content">整改期限</div>
</div>
<div class="right">
<el-date-picker
@ -63,23 +63,21 @@
<div class="tb-header">
<span>整改工单编号</span>
<span>整改期限</span>
<span>发起人</span>
<span>发起时间</span>
<span>是否整改完成</span>
<span>是否通过复查</span>
</div>
<div class="tb-list">
<div v-for="(item, ind) in 10" :key="ind">
<div v-for="(item, ind) in tableData" :key="ind">
<div class="tb-content">
<span>202309120001</span>
<span>2023-09-12</span>
<span></span>
<span></span>
</div>
<div class="tb-content_">
<span>202309120001</span>
<span>2023-09-12</span>
<span></span>
<span></span>
<span>{{ item.id }}</span>
<span>{{ item.qixian }}</span>
<span>{{ item.time }}</span>
<span>{{ item.hidden }}</span>
<span>{{ item.order }}</span>
<span>{{ item.fucha }}</span>
</div>
</div>
</div>
@ -116,6 +114,33 @@ export default {
label: "网格5",
},
],
tableData:[
{
id:"202401120925154",
name: "王明光",
qixian: "2024-01-20",
time: "2024-01-12",
hidden: "否",
order: "否",
fucha: "否"
},{
id:"202401221025154",
name: "王龙",
time: "2024-01-22",
qixian: "2024-02-05",
hidden: "否",
order: "否",
fucha: "否"
},{
id:"202401181125154",
name: "鲁建国",
time: "2024-01-18",
qixian: "2024-02-01",
hidden: "否",
order: "否",
fucha: "否"
}
],
};
},
};

@ -19,7 +19,7 @@
<div class="itemtwo">
<div class="left">
<div class="ball"></div>
<div class="content">排查日期</div>
<div class="content">告警时间</div>
</div>
<div class="right">
<el-date-picker
@ -48,16 +48,11 @@
</div>
<div class="tb-list">
<div v-for="(item, ind) in 10" :key="ind">
<div v-for="(item, ind) in tableData" :key="ind">
<div class="tb-content">
<span>202309120001</span>
<span>2023-09-12</span>
<span>2023-09-13</span>
</div>
<div class="tb-content_">
<span>202309120001</span>
<span>2023-09-12</span>
<span>2023-09-13</span>
<span>{{ item.id }}</span>
<span>{{ item.qixian }}</span>
<span>{{ item.gaojing }}</span>
</div>
</div>
</div>
@ -94,6 +89,17 @@ export default {
label: "网格5",
},
],
tableData:[
{
id:"202401120925154",
qixian: "2024-01-20",
gaojing: "2024-01-15",
},{
id:"202401221025154",
gaojing: "2024-01-30",
qixian: "2024-02-05",
}
],
};
},
};

Loading…
Cancel
Save