From 2c2ba6e9f7d5b5e0c7ebbb958f67cdbc2da24990 Mon Sep 17 00:00:00 2001
From: shuishen <1109946754@qq.com>
Date: Wed, 01 Dec 2021 14:19:42 +0800
Subject: [PATCH] 枪支
---
src/views/map/gunGps.vue | 703 ++++++++++++++++++++++++++++++----------------------------
src/api/map/gun.js | 2
2 files changed, 363 insertions(+), 342 deletions(-)
diff --git a/src/api/map/gun.js b/src/api/map/gun.js
index 1f7051d..d10451c 100644
--- a/src/api/map/gun.js
+++ b/src/api/map/gun.js
@@ -18,7 +18,7 @@
export const getTrack = (param) => {
return request({
- url: '/api/liveLocation/getLocusInfoList',
+ url: '/api/liveLocation/Gun',
method: 'get',
params: param
})
diff --git a/src/views/map/gunGps.vue b/src/views/map/gunGps.vue
index e190c2b..6b47cf6 100644
--- a/src/views/map/gunGps.vue
+++ b/src/views/map/gunGps.vue
@@ -2,390 +2,411 @@
* @Author: Morpheus
* @Date: 2021-07-05 16:31:54
* @Last Modified by: Morpheus
- * @Last Modified time: 2021-11-30 16:47:29
+ * @Last Modified time: 2021-12-01 14:19:01
* menu-name 押运人员定位
*/
<template>
- <el-row class="morpheus-map-box">
- <el-col :span="24">
- <el-card>
- <div class="card-body">
- <div>
- <Map ref="modalForm" />
- </div>
- <div>
- <div class="data-table map-people-table" v-show="!detailFlag">
- <el-table
- :data="tableData"
- style="width: 100%"
- v-loading="loading"
- >
- <el-table-column
- align="center"
- prop="gunMode"
- label="枪支类型"
- width="136"
- >
- </el-table-column>
+ <el-row class="morpheus-map-box">
+ <el-col :span="24">
+ <el-card>
+ <div class="card-body">
+ <div>
+ <Map ref="modalForm" />
+ </div>
+ <div>
+ <div class="data-table map-people-table"
+ v-show="!detailFlag">
+ <el-table :data="tableData"
+ style="width: 100%"
+ v-loading="loading">
+ <el-table-column align="center"
+ prop="gunMode"
+ label="枪支类型"
+ width="136">
+ </el-table-column>
- <el-table-column
- align="center"
- prop="personInCharge"
- label="责任人"
- >
- </el-table-column>
+ <el-table-column align="center"
+ prop="personInCharge"
+ label="责任人">
+ </el-table-column>
- <el-table-column label="操作" width="136" align="center">
- <template slot-scope="scope">
- <el-button
- @click="positionClick(scope.row)"
- type="text"
- size="small"
- title="定位"
- >
- <i class="el-icon-location"></i>
- </el-button>
- <el-button
- @click="detailsClick(scope.row)"
- type="text"
- size="small"
- title="轨迹"
- >
- <i class="el-icon-position"></i>
- </el-button>
- </template>
- </el-table-column>
- </el-table>
- <div ref="tablePagination">
- <el-pagination
- @size-change="handleSizeChange"
- @current-change="handleCurrentChange"
- background
- :page-sizes="[10, 30, 50, 100]"
- layout="sizes, prev, pager, next"
- :current-page="page.currentPage"
- :page-size="page.pageSize"
- :pager-count="3"
- :total="page.total"
- >
- </el-pagination>
- </div>
- </div>
- <div class="track-box" v-show="detailFlag">
- <div>
- <el-button @click="goOut" type="text" size="small" title="轨迹">
- <i class="el-icon-back"></i>
- </el-button>
+ <el-table-column label="操作"
+ width="136"
+ align="center">
+ <template slot-scope="scope">
+ <el-button @click="positionClick(scope.row)"
+ type="text"
+ size="small"
+ title="定位">
+ <i class="el-icon-location"></i>
+ </el-button>
+ <el-button @click="detailsClick(scope.row)"
+ type="text"
+ size="small"
+ title="轨迹">
+ <i class="el-icon-position"></i>
+ </el-button>
+ </template>
+ </el-table-column>
+ </el-table>
+ <div ref="tablePagination">
+ <el-pagination @size-change="handleSizeChange"
+ @current-change="handleCurrentChange"
+ background
+ :page-sizes="[10, 30, 50, 100]"
+ layout="sizes, prev, pager, next"
+ :current-page="page.currentPage"
+ :page-size="page.pageSize"
+ :pager-count="3"
+ :total="page.total">
+ </el-pagination>
+ </div>
+ </div>
+ <div class="track-box"
+ v-show="detailFlag">
+ <div>
+ <el-button @click="goOut"
+ type="text"
+ size="small"
+ title="轨迹">
+ <i class="el-icon-back"></i>
+ </el-button>
- 详细资料及轨迹查询
- </div>
- <ul>
- <li>
- <div>枪支类型:</div>
- <div>{{ detailObj.gunMode }}</div>
- </li>
+ 详细资料及轨迹查询
+ </div>
+ <ul>
+ <li>
+ <div>枪支类型:</div>
+ <div>{{ detailObj.gunMode }}</div>
+ </li>
- <li>
- <div>责任人:</div>
- <div>{{ detailObj.personInCharge }}</div>
- </li>
+ <li>
+ <div>责任人:</div>
+ <div>{{ detailObj.personInCharge }}</div>
+ </li>
- <li>
- <div>发证日期:</div>
- <div>{{ detailObj.issueTime }}</div>
- </li>
+ <li>
+ <div>发证日期:</div>
+ <div>{{ detailObj.issueTime }}</div>
+ </li>
- <li>
- <div>有效日期:</div>
- <div>{{ detailObj.validTime }}</div>
- </li>
+ <li>
+ <div>有效日期:</div>
+ <div>{{ detailObj.validTime }}</div>
+ </li>
- <li>
- <div>发证单位:</div>
- <div>{{ detailObj.issueUnit }}</div>
- </li>
+ <li>
+ <div>发证单位:</div>
+ <div>{{ detailObj.issueUnit }}</div>
+ </li>
- <li>
- <div>用枪编号:</div>
- <div>{{ detailObj.cardNumber }}</div>
- </li>
+ <li>
+ <div>用枪编号:</div>
+ <div>{{ detailObj.cardNumber }}</div>
+ </li>
- <li>
- <div>选择时间:</div>
- <div class="datetime">
- <el-date-picker
- v-model="trackTime"
- type="datetimerange"
- range-separator="至"
- start-placeholder="开始日期"
- size="mini"
- :editable="false"
- end-placeholder="结束日期"
- >
- </el-date-picker>
- </div>
- </li>
+ <li>
+ <div>选择时间:</div>
+ <div class="datetime">
+ <el-date-picker v-model="trackTime"
+ type="datetimerange"
+ range-separator="至"
+ start-placeholder="开始日期"
+ size="mini"
+ :editable="false"
+ end-placeholder="结束日期">
+ </el-date-picker>
+ </div>
+ </li>
- <li>
- <el-button type="text" @click="lookTrack">
- 查看轨迹
- </el-button>
- </li>
- </ul>
- </div>
- </div>
- </div>
- </el-card>
- </el-col>
- </el-row>
+ <li>
+ <el-button type="text"
+ @click="lookTrack">
+ 查看轨迹
+ </el-button>
+ </li>
+ </ul>
+ </div>
+ </div>
+ </div>
+ </el-card>
+ </el-col>
+ </el-row>
</template>
<script>
-import { getGunList, getPosition, getTrack, getNewTrack } from "@/api/map/gun";
+import { getGunList, getTrack } from "@/api/map/gun";
import gunPng from "@/assets/img/gun.png";
export default {
- data() {
- return {
- tableData: [],
- page: {
- pageSize: 10,
- currentPage: 1,
- total: 0,
- },
- detailFlag: false,
- loading: true,
- trackTime: [],
- detailObj: {},
- };
- },
- created() {
- this.getList();
- },
- mounted() {},
- methods: {
- getList() {
- getGunList({
- current: this.page.currentPage,
- size: this.page.pageSize,
- }).then((res) => {
- var data = res.data.data;
- this.tableData = data.records;
- this.page.total = data.total;
- this.loading = false;
- });
- },
- handleSizeChange(val) {
- this.page.pageSize = val;
- this.loading = true;
- this.getList();
- },
- handleCurrentChange(val) {
- this.page.currentPage = val;
- this.loading = true;
- this.getList();
- },
-
- positionClick(val) {
- getPosition({ type: 3, workerId: val.id }).then((result) => {
- var res = result.data.data;
- if (JSON.stringify(res) != "{}") {
- this.$refs.modalForm.addEntitys(
- {
- LGTD: 115.86,
- LTTD: 28.71,
- name: "枪支位置",
+ data () {
+ return {
+ tableData: [],
+ page: {
+ pageSize: 10,
+ currentPage: 1,
+ total: 0,
},
- gunPng,
- 0.8,
- "gunlayer",
- "gunAddlayer"
- );
- }
- });
+ detailFlag: false,
+ loading: true,
+ trackTime: [],
+ detailObj: {},
+ };
},
-
- detailsClick(row) {
- this.detailFlag = true;
- this.detailObj = {
- gunMode: row.gunMode,
- personInCharge: row.personInCharge,
- issueTime: row.issueTime,
- validTime: row.validTime,
- issueUnit: row.issueUnit,
- cardNumber: row.cardNumber,
- id: row.id,
- };
+ created () {
+ this.getList();
},
+ mounted () { },
+ methods: {
+ getList () {
+ getGunList({
+ current: this.page.currentPage,
+ size: this.page.pageSize,
+ }).then((res) => {
+ var data = res.data.data;
+ this.tableData = data.records;
+ this.page.total = data.total;
+ this.loading = false;
+ });
+ },
+ handleSizeChange (val) {
+ this.page.pageSize = val;
+ this.loading = true;
+ this.getList();
+ },
+ handleCurrentChange (val) {
+ this.page.currentPage = val;
+ this.loading = true;
+ this.getList();
+ },
- lookTrack() {
- if (this.trackTime.length == 0) {
- this.$message({ message: "请选择开始时间", duration: 2000 });
- return;
- }
- const startTime = new Date(this.trackTime[0]);
- const start =
- startTime.getFullYear() +
- "-" +
- this.disposeTime(startTime.getMonth() + 1) +
- "-" +
- this.disposeTime(startTime.getDate());
- if (this.trackTime.length == 1) {
- this.$message({ message: "请选择结束时间", duration: 2000 });
- return;
- }
- const endTime = new Date(this.trackTime[1]);
- const end =
- endTime.getFullYear() +
- "-" +
- this.disposeTime(endTime.getMonth() + 1) +
- "-" +
- this.disposeTime(endTime.getDate());
+ positionClick (val) {
+ var timestamp = Date.parse(new Date());
- // getTrack({
- // workerId: this.detailObj.id,
- // type: 3,
- // startTime: start,
- // endTime: end,
- // }).then((res) => {
- // var result = res.data.data;
- // if (result.length > 1) {
- // let arr = [];
+ var serverDate = new Date(timestamp);
- // result.forEach((item) => {
- // arr.push([Number(item.longitude), Number(item.latitude)]);
- // });
-
- // this.$refs.modalForm.addLines(arr);
- // }
- // });
-
- getNewTrack({
- startTime: start,
- endTime: end,
- }).then((res) => {
- console.log(res, "车辆轨迹");
- var result = res.data.data;
- if (result.length > 1) {
- let arr = [];
-
- result.res.forEach((item) => {
- arr.push([Number(item.dwjd), Number(item.dwwd)]);
- });
-
- this.$refs.modalForm.addLines(arr);
- }
- });
+ const start =
+ (serverDate.getFullYear() - 5) +
+ "-" +
+ this.disposeTime(serverDate.getMonth() + 1) +
+ "-" +
+ this.disposeTime(serverDate.getDate()) +
+ " " +
+ this.disposeTime(serverDate.getHours()) +
+ ":" +
+ this.disposeTime(serverDate.getMinutes()) +
+ ":" +
+ this.disposeTime(serverDate.getSeconds());
+ const end =
+ serverDate.getFullYear() +
+ "-" +
+ this.disposeTime(serverDate.getMonth() + 1) +
+ "-" +
+ this.disposeTime(serverDate.getDate()) +
+ " " +
+ this.disposeTime(serverDate.getHours()) +
+ ":" +
+ this.disposeTime(serverDate.getMinutes()) +
+ ":" +
+ this.disposeTime(serverDate.getSeconds());
+
+
+ getTrack({
+ hwysfzh: "",
+ szdw: "",
+ kssj: start,
+ jssj: end,
+ }).then((res) => {
+ var result = res.data.data;
+ if (JSON.stringify(res) != "{}") {
+ var array = result.sort(function (a, b) {
+ return a['dwsj'] < b['dwsj'] ? 1 : -1
+ })
+
+ this.$refs.modalForm.addEntitys(
+ {
+ LGTD: Number(array[0].dwjd),
+ LTTD: Number(array[0].dwwd),
+ name: "枪支位置",
+ },
+ gunPng,
+ 0.8,
+ "gunlayer",
+ "gunAddlayer"
+ );
+ }
+ });
+ },
+
+ detailsClick (row) {
+ this.detailFlag = true;
+ this.detailObj = {
+ gunMode: row.gunMode,
+ personInCharge: row.personInCharge,
+ issueTime: row.issueTime,
+ validTime: row.validTime,
+ issueUnit: row.issueUnit,
+ cardNumber: row.cardNumber,
+ id: row.id,
+ };
+ },
+
+ lookTrack () {
+ if (this.trackTime.length == 0) {
+ this.$message({ message: "请选择开始时间", duration: 2000 });
+ return;
+ }
+ const startTime = new Date(this.trackTime[0]);
+ const start =
+ startTime.getFullYear() +
+ "-" +
+ this.disposeTime(startTime.getMonth() + 1) +
+ "-" +
+ this.disposeTime(startTime.getDate());
+ if (this.trackTime.length == 1) {
+ this.$message({ message: "请选择结束时间", duration: 2000 });
+ return;
+ }
+ const endTime = new Date(this.trackTime[1]);
+ const end =
+ endTime.getFullYear() +
+ "-" +
+ this.disposeTime(endTime.getMonth() + 1) +
+ "-" +
+ this.disposeTime(endTime.getDate());
+ // this.detailObj.cardNo
+ getTrack({
+ hwysfzh: "",
+ szdw: "",
+ kssj: start,
+ jssj: end,
+ }).then((res) => {
+ var result = res.data.data;
+ if (result.length > 1) {
+ let arr = [];
+
+ var array = result.sort(function (a, b) {
+ return a['dwsj'] > b['dwsj'] ? 1 : -1
+ })
+
+ array.forEach((item) => {
+ arr.push([Number(item.dwjd), Number(item.dwwd)]);
+ });
+
+ this.$refs.modalForm.addLines(arr);
+ }
+ });
+
+ },
+ // 处理时间补零操作
+ disposeTime (s) {
+ return s < 10 ? "0" + s : s;
+ },
+
+ goOut () {
+ this.detailFlag = !this.detailFlag;
+ this.$refs.modalForm.clearLine();
+ this.trackTime = [];
+ },
},
- // 处理时间补零操作
- disposeTime(s) {
- return s < 10 ? "0" + s : s;
+ destroyed () {
+ window.ol2d.removeLayer(this.peopleAddlayer);
},
-
- goOut() {
- this.detailFlag = !this.detailFlag;
- this.$refs.modalForm.clearLine();
- this.trackTime = [];
- },
- },
- destroyed() {
- window.ol2d.removeLayer(this.peopleAddlayer);
- },
};
</script>
<style lang="scss" scoped>
.data-table {
- border: 1px solid transparent !important;
- box-shadow: 3px 3px 15px -2px rgb(0, 0, 0) !important;
+ border: 1px solid transparent !important;
+ box-shadow: 3px 3px 15px -2px rgb(0, 0, 0) !important;
}
.card-body {
- display: flex;
- & > div:first-child {
- flex: 8;
- }
-
- & > div:last-child {
- position: relative;
-
- flex: 3;
- & > div {
- position: absolute;
- top: 0;
- left: 0;
- width: 100%;
- height: 100%;
-
- & > .el-table {
- height: calc(100% - 34px);
- }
+ display: flex;
+ & > div:first-child {
+ flex: 8;
}
- .track-box {
- & > div {
+ & > div:last-child {
position: relative;
- height: 42px;
- line-height: 42px;
- text-align: center;
- color: #fff;
- border-bottom: 1px solid #fff;
- .el-button {
- padding: 0 !important;
- position: absolute;
- top: 4px;
- left: 4px;
- width: 42px;
- height: 28px;
- line-height: 28px;
- }
- }
- ul {
- margin: 0;
- padding: 0px;
- }
- li {
- margin: 0;
- padding: 0 4px;
- list-style: none;
- height: 42px;
- line-height: 42px;
- display: flex;
- color: #fff;
- border-bottom: 1px solid #fff;
+
+ flex: 3;
& > div {
- text-align: center;
- }
- & > div:first-child {
- flex: 2;
- }
- & > div:last-child {
- flex: 6;
- & > div {
- width: 100% !important;
- }
- }
- }
+ position: absolute;
+ top: 0;
+ left: 0;
+ width: 100%;
+ height: 100%;
- li:last-child {
- text-align: center;
- position: relative;
- .el-button {
- position: absolute;
- top: 0;
- left: 0;
- right: 0;
- bottom: 0;
- margin: auto;
- padding: 0 !important;
- width: 68px;
- height: 32px;
- line-height: 32px;
+ & > .el-table {
+ height: calc(100% - 34px);
+ }
}
- }
+
+ .track-box {
+ & > div {
+ position: relative;
+ height: 42px;
+ line-height: 42px;
+ text-align: center;
+ color: #fff;
+ border-bottom: 1px solid #fff;
+ .el-button {
+ padding: 0 !important;
+ position: absolute;
+ top: 4px;
+ left: 4px;
+ width: 42px;
+ height: 28px;
+ line-height: 28px;
+ }
+ }
+ ul {
+ margin: 0;
+ padding: 0px;
+ }
+ li {
+ margin: 0;
+ padding: 0 4px;
+ list-style: none;
+ height: 42px;
+ line-height: 42px;
+ display: flex;
+ color: #fff;
+ border-bottom: 1px solid #fff;
+ & > div {
+ text-align: center;
+ }
+ & > div:first-child {
+ flex: 2;
+ }
+ & > div:last-child {
+ flex: 6;
+ & > div {
+ width: 100% !important;
+ }
+ }
+ }
+
+ li:last-child {
+ text-align: center;
+ position: relative;
+ .el-button {
+ position: absolute;
+ top: 0;
+ left: 0;
+ right: 0;
+ bottom: 0;
+ margin: auto;
+ padding: 0 !important;
+ width: 68px;
+ height: 32px;
+ line-height: 32px;
+ }
+ }
+ }
}
- }
}
</style>
--
Gitblit v1.9.3