From e8a728024b32be3d227e406c13aee47bb254d10f Mon Sep 17 00:00:00 2001
From: shuishen <1109946754@qq.com>
Date: Fri, 13 Aug 2021 09:05:33 +0800
Subject: [PATCH] 视频,地图等相关修改
---
src/views/map/carGps.vue | 684 +++++++++++++++++++++++++++++---------------------------
1 files changed, 354 insertions(+), 330 deletions(-)
diff --git a/src/views/map/carGps.vue b/src/views/map/carGps.vue
index 00f21bc..3bdc114 100644
--- a/src/views/map/carGps.vue
+++ b/src/views/map/carGps.vue
@@ -2,371 +2,395 @@
* @Author: Morpheus
* @Date: 2021-07-05 16:31:54
* @Last Modified by: Morpheus
- * @Last Modified time: 2021-07-23 14:12:24
+ * @Last Modified time: 2021-08-11 16:41:36
* 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="mode"
- label="车辆型号"
- width="136"
- >
- </el-table-column>
+ <el-row class="morpheus-map-box">
+ <el-col :span="24">
+ <el-card>
+ <div class="card-body">
+ <div>
+ <Map @childParameter="childParameter"
+ 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="mode"
+ 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.mode }}</div>
- </li>
+ 详细资料及轨迹查询
+ </div>
+ <ul>
+ <li>
+ <div>车辆型号:</div>
+ <div>{{ detailObj.mode }}</div>
+ </li>
- <li>
- <div>责任人:</div>
- <div>{{ detailObj.personInCharge }}</div>
- </li>
+ <li>
+ <div>责任人:</div>
+ <div>{{ detailObj.personInCharge }}</div>
+ </li>
- <li>
- <div>出场日期:</div>
- <div>{{ detailObj.dateForProduction }}</div>
- </li>
+ <li>
+ <div>出场日期:</div>
+ <div>{{ detailObj.dateForProduction }}</div>
+ </li>
- <li>
- <div>厂商:</div>
- <div>{{ detailObj.brand }}</div>
- </li>
+ <li>
+ <div>厂商:</div>
+ <div>{{ detailObj.brand }}</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-dialog title=""
+ :modal='false'
+ :visible.sync="dialogVisible"
+ :before-close="dialogBeforeClose"
+ class="car-video-box">
+ <iframe src="/carVideo/parent.html"
+ frameborder="0"></iframe>
+ </el-dialog>
+ </el-col>
+ </el-row>
</template>
<script>
import { getCarList, getPosition, getTrack } from "@/api/map/car";
-import gunPng from "@/assets/img/gun.png";
+import carPng from "@/assets/img/car.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() {
- getCarList({
- 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: 2, 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: {},
+ dialogVisible: false
+ };
+ },
+ created () {
+ this.getList();
+ },
+ mounted () {
+
+
+
+
+
+ },
+ methods: {
+ getList () {
+ getCarList({
+ 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: 2, 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: "枪支位置",
+ },
+ carPng,
+ 0.8,
+ "gunlayer",
+ "gunAddlayer"
+ );
+ }
+ });
+ },
+
+ detailsClick (row) {
+ this.detailFlag = true;
+ this.detailObj = {
+ mode: row.mode,
+ personInCharge: row.personInCharge,
+ dateForProduction: row.dateForProduction,
+ brand: row.brand,
+ 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()) +
+ " " +
+ this.disposeTime(startTime.getHours()) +
+ ":" +
+ this.disposeTime(startTime.getMinutes()) +
+ ":" +
+ this.disposeTime(startTime.getSeconds());
+ 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.disposeTime(endTime.getHours()) +
+ ":" +
+ this.disposeTime(endTime.getMinutes()) +
+ ":" +
+ this.disposeTime(endTime.getSeconds());
+
+ getTrack({
+ workerId: this.detailObj.id,
+ type: 2,
+ startTime: start,
+ endTime: end,
+ }).then((res) => {
+ var result = res.data.data;
+ if (result.length > 1) {
+ let arr = [];
+
+ result.forEach((item) => {
+ arr.push([Number(item.longitude), Number(item.latitude)]);
+ });
+
+ this.$refs.modalForm.addLines(arr);
+ }
+ });
+ },
+ // 处理时间补零操作
+ disposeTime (s) {
+ return s < 10 ? "0" + s : s;
+ },
+
+ goOut () {
+ this.detailFlag = !this.detailFlag;
+ this.$refs.modalForm.clearLine();
+ this.trackTime = [];
+ },
+
+ childParameter (data) {
+
+ this.$nextTick(function () {
+ data.on('singleclick', this.realVideo)
+ })
+
+ },
+
+ realVideo () {
+ this.dialogVisible = true
}
- });
+
},
-
- detailsClick(row) {
- this.detailFlag = true;
- this.detailObj = {
- mode: row.mode,
- personInCharge: row.personInCharge,
- dateForProduction: row.dateForProduction,
- brand: row.brand,
- id: row.id,
- };
+ destroyed () {
+ window.ol2d.removeLayer(this.peopleAddlayer);
},
-
- 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()) +
- " " +
- this.disposeTime(startTime.getHours()) +
- ":" +
- this.disposeTime(startTime.getMinutes()) +
- ":" +
- this.disposeTime(startTime.getSeconds());
- 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.disposeTime(endTime.getHours()) +
- ":" +
- this.disposeTime(endTime.getMinutes()) +
- ":" +
- this.disposeTime(endTime.getSeconds());
-
- getTrack({
- workerId: this.detailObj.id,
- type: 2,
- startTime: start,
- endTime: end,
- }).then((res) => {
- var result = res.data.data;
- if (result.length > 1) {
- let arr = [];
-
- result.forEach((item) => {
- arr.push([Number(item.longitude), Number(item.latitude)]);
- });
-
- this.$refs.modalForm.addLines(arr);
- }
- });
- },
- // 处理时间补零操作
- disposeTime(s) {
- return s < 10 ? "0" + s : s;
- },
-
- 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