代码合并

master
徐景良 2 years ago
parent 26ccf19d54
commit ebaffb96bf

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

@ -90,7 +90,7 @@ export const constantRouterMap = [
path: '/gridman_forestranger',
name: 'gridman_forestranger',
meta: { title: '护林员', icon: 'zhuyeicon', sortNo: 0 }, // iconfont icon-
component: () => import('@/views/gridman/forestranger/index')
component: () => import('@/views/gridman/clockin/index')
},{
path: '/gridman_firefighter',
name: 'firefighter',

@ -0,0 +1,332 @@
<template>
<div class="clockin-content">
<div class="left-content">
<div class="filter-container">
<el-input type="text" v-model="listQuery.name" placeholder="请输入搜索关键字" style="width:300px;margin-right:15px;" size="mini" round></el-input>
<el-button type="default" size="mini" @click="resetListQuery"></el-button>
<el-button type="primary" size="mini" icon="el-icon-search" @click="getTaskList()"></el-button>
<el-button type="primary" size="mini" icon="el-icon-plus">创建任务</el-button>
</div>
<div class="clock-item-container">
<div class="clock-item" v-for="(item,index) in tasklist" :key="index">
<p>任务描述{{ item.pointname }}</p>
<p>创建时间{{ item.createtime }}</p>
<p>负责人员{{item.usernames}}</p>
<p style="text-align:right;">
<el-popconfirm
title="确定删除吗?"
@confirm="deleteTask(item.id)"
>
<el-button slot="reference" type="default" round size="mini" icon="el-icon-delete" style="margin-right:15px;">删除</el-button>
</el-popconfirm>
<el-button type="primary" round size="mini" icon="el-icon-location-outline">位置</el-button>
<el-button type="primary" round size="mini" icon="el-icon-location-outline">查看</el-button>
<el-button type="primary" round size="mini" icon="el-icon-edit">编辑</el-button>
</p>
</div>
</div>
<div class="page-container">
<el-pagination
background
layout="prev, pager, next"
@size-change="handleSizeChange"
@current-change="handleCurrentChange"
:total="total">
</el-pagination>
</div>
</div>
<div class="right-content">
<div class="map-container">
<Map></Map>
</div>
<div class="item-container">
<div class="item-container-left">
<el-descriptions class="margin-top" :column="1" :size="'middle'" border>
<el-descriptions-item>
<template slot="label">
<i class="el-icon-time"></i>
创建时间
</template>
2023-10-07 09:23:42
</el-descriptions-item>
<el-descriptions-item>
<template slot="label">
<i class="el-icon-place"></i>
打开地点
</template>
118.88888,35.666666&nbsp;&nbsp;<el-button type="primary" size="mini" round icon="el-icon-location-outline">定位</el-button>
</el-descriptions-item>
<el-descriptions-item>
<template slot="label">
<i class="el-icon-office-building"></i>
任务内容
</template>
江苏省苏州市吴中区吴中大道 1188
</el-descriptions-item>
</el-descriptions>
</div>
<div class="item-container-right">
<div class="user-item" v-for="(item,index) in userlist" :key="index">
<div class="user-photo">
<img src="/img/gridman/user.png" alt="">
</div>
<div class="user-name">{{item.name}}</div>
<div class="user-phone">{{item.phone}}</div>
<span class="user-operation">
<el-button type="primary" size="mini" round icon="el-icon-map-location">范围</el-button>
<el-button type="primary" size="mini" icon="el-icon-wind-power" round>轨迹</el-button>
</span>
</div>
</div>
</div>
</div>
</div>
</template>
<script>
import { getMethodCommon, postMethodCommon } from '../../../api/common';
import Map from './widget/ditu.vue'
export default {
components:{
Map,
},
data(){
return {
listQuery:{
pageSize:10,
pageIndex:1,
name:null,
},
total:0,
tasklist:[],
userlist:[
{
name:"徐景良",
phone:"1786185775"
},{
name:"石超",
phone:"1786185775"
},{
name:"张斌",
phone:"1786185775"
},{
name:"张凯",
phone:"1786185775"
},{
name:"徐景良",
phone:"1786185775"
}
]
}
},
created(){
this.getTaskList();
},
methods:{
getTaskList(){
getMethodCommon("/FireGrid/GetCheckPoint",this.listQuery).then(res=>{
if(res.code == 200){
this.tasklist = res.data;
this.total = res.count;
}
})
},
resetListQuery(){
this.listQuery.name = null;
this.listQuery.pageIndex = 1;
this.listQuery.pageSize = 10;
this.getTaskList();
},
deleteTask(id){
postMethodCommon("/FireGrid/DeleteCheckPoint?id="+id).then(res=>{
if(res.code == 200){
this.$message({
type:"success",
message:res.message
})
this.getTaskList();
}
})
},
handleSizeChange(e){
this.listQuery.pageSize = e;
this.getTaskList();
},
handleCurrentChange(e){
this.listQuery.pageIndex = e;
this.getTaskList();
}
}
}
</script>
<style scoped>
.clockin-content{
width:100%;
height: calc(100vh - 100px);
padding:15px;
}
.left-content{
width:600px;
height:100%;
background:#272d39;
float:left;
}
.filter-container{
width:100%;
height:60px;
padding:15px;
border-bottom:1px solid #636262;
}
.clock-item-container{
width: 100%;
height: calc( 100% - 131px);
padding:15px;
color:#efefef;
overflow: auto;
}
.page-container{
width:100%;
height:79px;
border-top:1px solid #636262;
padding:20px 6px;
}
.clock-item{
width:100%;
height:170px;
margin:10px 0px;
padding:15px;
background:#464545;
border-radius: 10px;
}
.right-content{
width: calc( 100% - 615px);
height:100%;
float:right;
}
.map-container{
width:100%;
height: calc( 100% - 215px);
background:#272d39;
margin-bottom:15px;
}
.item-container{
width:100%;
height:200px;
background:#272d39;
padding:15px;
}
.item-container-left{
width:50%;
height:100%;
float:left;
}
.item-container-right{
width:50%;
height: calc( 100% - 15px);
float:right;
overflow: auto;
margin:0px 0px;
padding:0px;
}
.item-container-right div{
float:left;
}
.user-item{
width:100%;
height:50px;
line-height:50px;
padding:0px 30px;
color:#fff;
}
.user-photo{
float:left;
width:36px;
height:36px;
margin-top:6px;
background-color:rgb(255, 255, 255);
border-radius: 50%;
line-height: 36px;
text-align: center;
}
.user-photo img{
width:32px;
height:32px;
margin:0px;
}
.user-name{
width:100px;
text-align: center;
font-weight: bold;
color:#fff;
}
.user-phone{
width:100px;
text-align: center;
}
.user-operation{
float:right;
}
::v-deep .el-descriptions__body{
background:none;
color:#fff;
}
::v-deep .el-descriptions-item__label.is-bordered-label{
background:none;
}
::v-deep .el-descriptions .is-bordered .el-descriptions-item__cell{
border-color: #272d39;
}
::-webkit-scrollbar {
height: 10px;
width: 10px;
background: transparent;
border-radius: 5px;
}
::-webkit-scrollbar-thumb {
padding-top: 100px;
-webkit-box-shadow: inset 1px 1px 0 rgba(0, 0, 0, 0.1),
inset -1px -1px 0 rgba(0, 0, 0, 0.07);
background-color: #797979;
min-height: 28px;
border-radius: 4px;
background-clip: padding-box;
}
::-webkit-scrollbar-track,
::-webkit-scrollbar-thumb {
border: 0;
}
::-webkit-scrollbar-thumb:hover {
-webkit-box-shadow: inset 1px 1px 1px rgba(0, 0, 0, 0.25);
background-color: rgba(0, 0, 0, 0.4);
}
::-webkit-scrollbar-thumb:active {
-webkit-box-shadow: inset 1px 1px 3px rgba(0, 0, 0, 0.35);
background-color: rgba(0, 0, 0, 0.5);
}
::v-deep .el-descriptions-item__label.is-bordered-label{
color:#efefef;
}
</style>

@ -0,0 +1,254 @@
<template>
<div class="data-map" ref="datamap" id="mapbox"></div>
</template>
<script>
import { postMethodCommon, getMethodCommon } from "../../../../api/common";
import mapboxgl from "mapbox-gl";
import { waiData } from "../../../../assets/xianjiewai";
mapboxgl.accessToken = "pk.eyJ1Ijoic2hpY2hhbzEyMyIsImEiOiJja3FobnI1aDEwNGF6Mm9vOXVhNnBzZmFhIn0.2fZKiMqCQHxVY74QShMEGQ";
export default {
props: ["rowkey", "lnglat", "flyCenter"],
data() {
return {
map: null,
clockInList: [],
markerArr:[],
popup:null,
};
},
watch: {
rowkey: function (e) {
console.log('123',e)
this.getClockInList()
},
lnglat: function (e) {},
flyCenter: function (e) {
console.log("eee123", e);
this.flyTo(e);
},
},
created(){
window.addMapTask = this.addMapTask
},
mounted() {
this.$nextTick(function () {
this.initMap();
});
},
methods: {
addMapTask(lng,lat){
console.log("lngLat",lng,lat);
},
flyTo(e) {
this.map.flyTo({
center: e, //
zoom: 14, //
curve: 1,
});
},
getClockInList() {
getMethodCommon("/FireGrid/GetTotalCheckPoint").then((res) => {
this.clockInList = res.result;
for (var i = this.markerArr.length - 1; i >= 0; i--) {
this.markerArr[i].remove();
}
this.addPointLayer();
});
},
addPointLayer() {
let _this = this
this.clockInList.forEach((item) => {
console.log("iii", item);
let el = document.createElement("img"); //
el.className = "marker";
el.src = "/img/dakadian.png"; //
el.style.width = "40px";
// el.onclick = function(){
// console.log('123item',item)
// _this.$emit("editClock",item)
// }
//
let marker = new mapboxgl.Marker(el).setLngLat([item.lng, item.lat]).addTo(this.map);
this.markerArr.push(marker)
});
},
initMap(url, jwd) {
let _this = this;
this.map = new mapboxgl.Map({
container: this.$refs.datamap,
style: "mapbox://styles/shichao123/clf3b1bxk007801moo0nnl87k",
center: [117.977325, 35.265961],
zoom: 10,
language: "zh-cmn",
projection: "globe",
});
this.map.on("load", () => {
this.loadGaoQingLayer();
this.loadMengban();
this.loadZhenJieLayer();
this.loadXianJieLayer();
this.getClockInList();
this.map.on('contextmenu', function (e) {
//
e.preventDefault();
if (this.popup) {
if (this.popup) {
this.popup.remove();
}
}
this.popup = new mapboxgl.Popup({
closeButton: false,
closeOnClick: false
});
// popup
this.popup.setLngLat(e.lngLat).setHTML(`<div style="color:#333;padding:3px 12px;cursor:pointer;" type="primary" icon="el-icon-search" onclick="addMapTask(${e.lngLat.lng},${e.lngLat.lat})">添加打卡点</div>`).addTo(_this.map);
});
//
this.map.addSource('mapbox-dem', {
'type': 'raster-dem',
'url': 'mapbox://mapbox.mapbox-terrain-dem-v1',
'tileSize': 512,
'maxzoom': 14
});
// add the DEM source as a terrain layer with exaggerated height
this.map.setTerrain({ source: "mapbox-dem", exaggeration: 1.5 });
});
this.map.on("click", (e) => {
this.$emit("getLocation", e);
});
},
loadMengban() {
this.map.addLayer({
// //
id: "mb-tag",
type: "fill",
source: {
type: "geojson",
data: {
type: "Feature",
geometry: {
type: "Polygon",
coordinates: [
[
//
[-180, 90],
[180, 90],
[180, -90],
[-180, -90],
],
waiData.DATA,
],
},
},
},
paint: {
"fill-color": "rgba(0,10,36,1)",
// 'fill-opacity': 1 /* */,
},
layout: {
visibility: "visible",
},
});
},
loadGaoQingLayer() {
this.map.addLayer({
id: "gaoqingyingxiang",
type: "raster",
source: {
type: "raster",
tiles: [
"http://60.213.14.14:8060/geoserver/feixian/wms?service=WMS&version=1.1.0&request=GetMap&layers=feixian:yingxiang&styles=&bbox={bbox-epsg-3857}&width=256&height=256&srs=EPSG:3857&format=image/png&TRANSPARENT=TRUE",
],
tileSize: 256,
},
layout: {
visibility: "visible",
},
paint: {},
});
},
loadXianJieLayer() {
this.map.addLayer({
id: "xianjie",
type: "line",
layout: {
visibility: "visible",
},
source: {
type: "geojson",
data: "http://175.27.168.120:8080/geoserver/feixian/ows?service=WFS&version=1.0.0&request=GetFeature&typeName=feixian%3Axianjie&maxFeatures=50&outputFormat=application%2Fjson",
},
paint: {
"line-width": 2,
"line-color": "orange",
},
});
},
loadZhenJieLayer() {
this.map.addSource("shp_1691822212", {
type: "vector",
scheme: "tms", //new
tiles: [
"http://223.99.16.253:9007/geoserver/gwc/service/tms/1.0.0/ksp:shp_1691822212@EPSG:900913@pbf/{z}/{x}/{y}.pbf",
],
});
this.map.addLayer({
id: "zhenjieline",
type: "line",
source: "shp_1691822212",
"source-layer": "shp_1691822212",
paint: {
"line-color": "#0000ff",
"line-width": 2,
},
});
this.map.addLayer({
id: "zhenjiepoint",
type: "symbol",
source: "shp_1691822212",
"source-layer": "shp_1691822212",
layout: {
"text-field": "{xzqmc}",
"text-size": 18,
},
paint: {
"text-color": "#000000", // #000000
"text-halo-color": "#FFFFFF",
"text-halo-width": 1,
},
});
},
},
};
</script>
<style scoped>
.data-map {
width: 100%;
height: 100%;
}
.data-map .map {
width: 100%;
height: 100%;
}
::v-deep.data-map .mapboxgl-ctrl-bottom-left {
display: none !important;
}
::v-deep.data-map .mapboxgl-ctrl-bottom-right {
display: none !important;
}
</style>

@ -6,8 +6,7 @@
import { postMethodCommon, getMethodCommon } from "../../../../api/common";
import mapboxgl from "mapbox-gl";
import { waiData } from "../../../../assets/xianjiewai";
mapboxgl.accessToken =
"pk.eyJ1Ijoic2hpY2hhbzEyMyIsImEiOiJja3FobnI1aDEwNGF6Mm9vOXVhNnBzZmFhIn0.2fZKiMqCQHxVY74QShMEGQ";
mapboxgl.accessToken = "pk.eyJ1Ijoic2hpY2hhbzEyMyIsImEiOiJja3FobnI1aDEwNGF6Mm9vOXVhNnBzZmFhIn0.2fZKiMqCQHxVY74QShMEGQ";
export default {
props: ["rowkey", "lnglat", "flyCenter"],
data() {

@ -62,11 +62,6 @@
<div class="map-container" id="mapContainer"></div>
<div class="grider-list-container" v-if="userListContainer">
<div class="grid-info-contianer">
<p>名称东蒙镇</p>
<p>名称类型</p>
<p>督察长徐景良</p>
</div>
<div class="grid-list-box">
<div
class="grider-list-item"
@ -86,10 +81,13 @@
<el-input v-model="item.workunit"></el-input>
</el-form-item>
<el-form-item label="防火职务:" prop="households">
<el-input v-model="item.fireduties"></el-input>
<el-radio v-model="item.fireduties" label="县级包保领导"></el-radio>
<el-radio v-model="item.fireduties" label=""></el-radio>
</el-form-item>
<el-form-item label="督察职务:" prop="households">
<el-input v-model="item.supervision"></el-input>
<el-radio v-model="item.supervision" label="督查长"></el-radio>
<el-radio v-model="item.supervision" label="副督查长"></el-radio>
<el-radio v-model="item.supervision" label=""></el-radio>
</el-form-item>
</el-form>
<div style="height: 40px">
@ -195,7 +193,7 @@ export default {
);
},
deleteUser(id) {
postMethodCommon("/FireGrid/DeleteInspectors", { id: id }).then((res) => {
postMethodCommon("/FireGrid/DeleteInspectors?id="+id).then((res) => {
if (res.code == 200) {
this.$message({
type: "success",
@ -206,15 +204,21 @@ export default {
});
},
saveUser(item) {
console.log("item", item);
item.id = 0;
let api_url = null;
if(!item.id){
item.id = 0;
api_url = "/FireGrid/AddInspector";
}else{
api_url="/FireGrid/EditInspectors";
}
item.townid = [this.currentStreetId];
postMethodCommon("/FireGrid/AddInspector", item).then((res) => {
postMethodCommon(api_url, item).then((res) => {
if (res.code == 200) {
this.$message({
type: "success",
message: "添加成功!",
message: "保存成功!",
});
this.getUserlist(this.currentStreetId);
}
});
},
@ -441,7 +445,7 @@ export default {
.grid-list-box {
width: 100%;
height: calc(100% - 135px);
height: calc(100% - 15px);
overflow: auto;
}

@ -24,11 +24,11 @@
</el-option>
</el-select>
<el-input clearable size="mini" v-model="listQuery.key" prefix-icon="el-icon-search" style="width: 200px;margin-bottom: 0;margin:0px 12px;" class="filter-item" :placeholder="'人员姓名'"
<el-input clearable size="mini" v-model="listQuery.name" prefix-icon="el-icon-search" style="width: 200px;margin-bottom: 0;margin:0px 12px;" class="filter-item" :placeholder="'人员姓名'"
>
</el-input>
<el-button type="default" size="mini" @click="listQuery.key=null;getListData();"></el-button>
<el-button type="default" size="mini" @click="listQuery.name=null;getListData();"></el-button>
<el-button type="primary" size="mini" @click="getListData"></el-button>
</div>
@ -85,10 +85,9 @@ import axios from 'axios'
],
listQuery:{
name:null,
pageIndex:1,
pageSize:12,
key:null,
name:null,
},
checkPhoneArr:[],
checkRandom:1,

@ -13,6 +13,7 @@
</div>
<div class="inputer">
<span style="float:left;margin-left:12px;">接收人员</span>
<div class="" style="float:left;width:300px;">
<el-table ref="multipleTable" :data="list" tooltip-effect="dark" height="200px"
style="width: 100%;margin-top:12px;" @selection-change="handleSelectionChange">
@ -35,6 +36,7 @@
<script>
import axios from 'axios'
import { getMethodCommon } from '../../../api/common';
let BASE_URL = process.env.VUE_APP_BASE_API;
export default {
name: 'taskDelivery',
@ -46,6 +48,11 @@ export default {
pathPointGraphicLayer: null,
list: [],
multipleSelection: [],
listQuery:{
pageIndex:1,
pageSize:12,
name:null,
}
}
},
watch: {
@ -64,15 +71,9 @@ export default {
this.multipleSelection = val;
},
getUserList() {
axios({
method: "get",
url: BASE_URL + "/FireManagement/LoadFireClueUser",
headers: {
"X-Token": localStorage.getItem("X-Token")
}
}).then(res => {
if (res.data.code == 200) {
this.list = res.data.data;
getMethodCommon("/FireManagement/LoadFireClueUser",this.listQuery).then(res=>{
if(res.code == 200){
this.list = res.data;
}
})
},

@ -106,9 +106,6 @@
})
},
goDetail(item) {
let sql = `
`
if (item.lable == '数据中心') {
window.open('http://223.99.16.253:9003/#/dashboard?id=' + localStorage.getItem("X-Token"), '_blank')
}else if (item.lable == '监测中心') {

Loading…
Cancel
Save