liuyg
2021-11-26 fbde521b53ed8fc5bdb9c4bbb6cf8f6871378ec2
Merge branch 'master' of http://192.168.0.105:10010/r/zhba_regulatory
16 files modified
1 files added
2018 ■■■■ changed files
package-lock.json 44 ●●●●● patch | view | raw | blame | history
package.json 2 ●●●●● patch | view | raw | blame | history
src/api/index/index.js 2 ●●● patch | view | raw | blame | history
src/api/map/car.js 24 ●●●●● patch | view | raw | blame | history
src/api/map/people.js 18 ●●●●● patch | view | raw | blame | history
src/router/axios.js 2 ●●● patch | view | raw | blame | history
src/store/modules/user.js 2 ●●● patch | view | raw | blame | history
src/views/commandQuery/taskDistribution.vue 77 ●●●● patch | view | raw | blame | history
src/views/home/index.scss 47 ●●●● patch | view | raw | blame | history
src/views/home/index.vue 925 ●●●● patch | view | raw | blame | history
src/views/home/index_1280_1024.scss 59 ●●●● patch | view | raw | blame | history
src/views/home/index_1600_900.scss 60 ●●●● patch | view | raw | blame | history
src/views/map/carGps copy.vue 422 ●●●●● patch | view | raw | blame | history
src/views/map/carGps.vue 227 ●●●● patch | view | raw | blame | history
src/views/map/peopleGps.vue 99 ●●●● patch | view | raw | blame | history
src/views/statisticalQueryManagement/businessStatisticsFwdq.vue 6 ●●●● patch | view | raw | blame | history
src/views/statisticalQueryManagement/securityGuardDetail.vue 2 ●●● patch | view | raw | blame | history
package-lock.json
@@ -5391,6 +5391,31 @@
      "resolved": "https://registry.nlark.com/d3-array/download/d3-array-1.2.4.tgz",
      "integrity": "sha1-Y1zk1e6nWfb2BYY9vPww7cc39x8="
    },
    "d3-dsv": {
      "version": "3.0.1",
      "resolved": "https://registry.nlark.com/d3-dsv/download/d3-dsv-3.0.1.tgz",
      "integrity": "sha1-xjr5ePTWoNCEpSpnOSK+IWB4m3M=",
      "requires": {
        "commander": "7",
        "iconv-lite": "0.6",
        "rw": "1"
      },
      "dependencies": {
        "commander": {
          "version": "7.2.0",
          "resolved": "https://registry.npmmirror.com/commander/download/commander-7.2.0.tgz?cache=0&sync_timestamp=1634886357672&other_urls=https%3A%2F%2Fregistry.npmmirror.com%2Fcommander%2Fdownload%2Fcommander-7.2.0.tgz",
          "integrity": "sha1-o2y1fQtQHOEI5NIFWaFQo5HZerc="
        },
        "iconv-lite": {
          "version": "0.6.3",
          "resolved": "https://registry.nlark.com/iconv-lite/download/iconv-lite-0.6.3.tgz",
          "integrity": "sha1-pS+AvzjaGVLrXGgXkHGYcaGnJQE=",
          "requires": {
            "safer-buffer": ">= 2.1.2 < 3.0.0"
          }
        }
      }
    },
    "d3-geo": {
      "version": "1.7.1",
      "resolved": "https://registry.nlark.com/d3-geo/download/d3-geo-1.7.1.tgz",
@@ -6133,6 +6158,11 @@
        "is-date-object": "^1.0.1",
        "is-symbol": "^1.0.2"
      }
    },
    "es6-promise": {
      "version": "4.2.8",
      "resolved": "https://registry.npm.taobao.org/es6-promise/download/es6-promise-4.2.8.tgz",
      "integrity": "sha1-TrIVlMlyvEBVPSduUQU5FD21Pgo="
    },
    "escalade": {
      "version": "3.1.1",
@@ -6933,6 +6963,15 @@
      "requires": {
        "inherits": "^2.0.3",
        "readable-stream": "^2.3.6"
      }
    },
    "flv.js": {
      "version": "1.6.2",
      "resolved": "https://registry.nlark.com/flv.js/download/flv.js-1.6.2.tgz",
      "integrity": "sha1-+jNA/j9+4B05d/eHau5muENuWSI=",
      "requires": {
        "es6-promise": "^4.2.8",
        "webworkify-webpack": "^2.1.5"
      }
    },
    "follow-redirects": {
@@ -14439,6 +14478,11 @@
      "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==",
      "dev": true
    },
    "webworkify-webpack": {
      "version": "2.1.5",
      "resolved": "https://registry.npm.taobao.org/webworkify-webpack/download/webworkify-webpack-2.1.5.tgz",
      "integrity": "sha1-v0M2YkwGJsvoXPH/3hV/eqkLHRw="
    },
    "which": {
      "version": "1.3.1",
      "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
package.json
@@ -17,9 +17,11 @@
    "babel-polyfill": "^6.26.0",
    "classlist-polyfill": "^1.2.0",
    "crypto-js": "^4.0.0",
    "d3-dsv": "^3.0.1",
    "echarts": "^5.1.2",
    "element-ui": "^2.15.1",
    "file-saver": "^2.0.5",
    "flv.js": "^1.6.2",
    "js-base64": "^2.5.1",
    "js-cookie": "^2.2.0",
    "js-md5": "^0.7.3",
src/api/index/index.js
@@ -87,7 +87,7 @@
    method: "post"
  });
};
// 资格审查异常人员清单
// 资格审查异常人员清单/现实表现差人员清单
export const qualificationPages = params => {
  return request({
    url: "/api/blade-user/pages",
src/api/map/car.js
@@ -23,3 +23,27 @@
    params: param
  })
}
export const getNewPosition = (param) => {
  return request({
    url: '/api/car/locationcar',
    method: 'get',
    params: param
  })
}
export const getNewCarTark = (param) => {
  return request({
    url: '/api/car/locationhistoryTrack',
    method: 'get',
    params: param
  })
}
export const getVideoSrc = (param) => {
  return request({
    url: '/api/car/cmd',
    method: 'get',
    params: param
  })
}
src/api/map/people.js
@@ -38,4 +38,20 @@
        method: 'get',
        params: param
    })
}
}
export const getNewPeople = (param) => {
  return request({
    url: '/api/car/Peo',
    method: 'get',
    params: param
  })
}
export const getNewTark = (param) => {
  return request({
    url: '/api/car/Peog',
    method: 'get',
    params: param
  })
}
src/router/axios.js
@@ -17,7 +17,7 @@
import 'nprogress/nprogress.css';
//默认超时时间
axios.defaults.timeout = 10000;
axios.defaults.timeout = 60000;
//返回其他状态码
axios.defaults.validateStatus = function (status) {
  return status >= 200 && status <= 500;
src/store/modules/user.js
@@ -239,7 +239,7 @@
    },
    SET_USER_INFO: (state, userInfo) => {
      if (validatenull(userInfo.avatar)) {
        userInfo.avatar = "http://47.49.36.190:9000/zhba/upload/picture/mrtx.png\n";
        userInfo.avatar = "http://47.49.36.190:9000/zhba/upload/picture/mrtx.png";
      }
      state.userInfo = userInfo;
      setStore({ name: 'userInfo', content: state.userInfo })
src/views/commandQuery/taskDistribution.vue
@@ -2,7 +2,7 @@
 * @Author: Morpheus
 * @Date: 2021-07-07 17:30:05
 * @Last Modified by: Morpheus
 * @Last Modified time: 2021-11-17 09:21:36
 * @Last Modified time: 2021-11-25 14:54:40
 * menu-name 监管信息
 */
<template>
@@ -43,7 +43,7 @@
                   :visible.sync="seeLocationFlag"
                   :modal-append-to-body="false"
                   width="width">
            <Map ref="locationForm" />
            <Map v-if="seeLocationFlag" ref="locationForm" />
        </el-dialog>
        <el-dialog class="see-track"
@@ -67,7 +67,7 @@
                </el-button>
            </div>
            <Map ref="tarckForm" />
            <Map v-if="seeTrackFlag" ref="tarckForm" />
        </el-dialog>
    </basic-container>
</template>
@@ -84,7 +84,8 @@
// import { datasing } from "./dataqualificationExamination";
// import { getList } from "@/api/qualificationExamination/qualificationExamination";
import { getLisperetaskDistribution } from "@/api/commandQuery/commandQuery";
import { getDirectiveLiveLocationVoList, getDirectiveLocusInfoList } from "@/api/map/people";
import { getDirectiveLiveLocationVoList, getDirectiveLocusInfoList, getNewPeople, getNewTark } from "@/api/map/people";
import peoplePng from "@/assets/img/people.png";
export default {
@@ -380,13 +381,17 @@
            this.seeLocationFlag = true
            getDirectiveLiveLocationVoList({ type: 1, userIds: row.receiveDirectiveIds }).then((result) => {
                var res = result.data.data;
                if (JSON.stringify(res) != "[]") {
                    res.forEach((data)=>{
                getNewPeople().then(res => {
                    if (JSON.stringify(res.data) != "{}") {
                        var arr = res.data.sort(function (a, b) {
                            return a['date'] < b['date'] ? 1 : -1
                        })
                        this.$refs.locationForm.addEntitys(
                            {
                                LGTD: data.longitude,
                                LTTD: data.latitude,
                                LGTD: arr[0].gis_jd,
                                LTTD: arr[0].gis_wd,
                                name: "人员位置",
                            },
                            peoplePng,
@@ -394,9 +399,25 @@
                            "peoplelayer",
                            "peopleAddlayer"
                        );
                    })
                    }
                })
                }
                // var res = result.data.data;
                // if (JSON.stringify(res) != "[]") {
                //     res.forEach((data)=>{
                //         this.$refs.locationForm.addEntitys(
                //             {
                //                 LGTD: data.longitude,
                //                 LTTD: data.latitude,
                //                 name: "人员位置",
                //             },
                //             peoplePng,
                //             0.5,
                //             "peoplelayer",
                //             "peopleAddlayer"
                //         );
                //     })
                // }
            });
        },
@@ -449,20 +470,38 @@
                startTime: start,
                endTime: end,
            }).then((res) => {
                var result = res.data.data;
                if (JSON.stringify(res) != "[]") {
                    result.forEach((item) => {
                        if (item.length > 1) {
                getNewTark().then(res => {
                    if (JSON.stringify(res.data.track) != "{}") {
                        if (res.data.track.length > 1) {
                            let arr = [];
                            item.forEach((data) => {
                                arr.push([Number(data.longitude), Number(data.latitude)]);
                            res.data.track.forEach((item) => {
                                arr.push([Number(item.gis_jd), Number(item.gis_wd)]);
                            });
                            this.$refs.tarckForm.addLines(arr);
                        }
                    })
                }
                    }
                })
                // var result = res.data.data;
                // if (JSON.stringify(res) != "[]") {
                //     result.forEach((item) => {
                //         if (item.length > 1) {
                //             let arr = [];
                //             item.forEach((data) => {
                //                 arr.push([Number(data.longitude), Number(data.latitude)]);
                //             });
                //             this.$refs.tarckForm.addLines(arr);
                //         }
                //     })
                // }
            });
        },
src/views/home/index.scss
@@ -238,12 +238,12 @@
    }
  }
  .middle {
    .el-table {
      width: calc(100% - 40px);
      height: calc(100% - 65px);
      margin: 0px 20px 15px;
      top: 50px;
    }
    // .el-table {
    //   width: calc(100% - 40px);
    //   height: calc(100% - 65px);
    //   margin: 0px 20px 15px;
    //   top: 50px;
    // }
    /deep/ .el-table--striped .el-table__body tr.el-table__row--striped td {
      background: #031d4b !important;
    }
@@ -405,10 +405,10 @@
  .mapBtn:nth-child(3) {
    margin-top: 160px;
  }
  /deep/ .el-table__body-wrapper {
    overflow: auto;
    height: calc(100% - 50px);
  }
  // /deep/ .el-table__body-wrapper {
  //   overflow: auto;
  //   height: calc(100% - 50px);
  // }
}
.left2-btn {
  height: 21px;
@@ -694,3 +694,30 @@
    height: 77%;
  }
}
.bottom-table{
  width: calc(100% - 40px);
  height: 100%;
  margin: 0px 20px 15px;
  top: 50px;
  .el-table{
    width: 100%;
    height: calc(100% - 65px);
    top: 50px;
    overflow-y: auto;
  }
}
::-webkit-scrollbar{
  display: none;
}
.dialog-table{
  top: 0px !important;
  margin: 0px !important;
  width: 100% !important;
  height: calc(100% - 50px) !important;
  overflow: auto;
  .el-table{
    width: 100%;
    height: 100%;
    overflow: auto;
  }
}
src/views/home/index.vue
@@ -115,119 +115,121 @@
          <div class="leftbottom"></div>
          <div class="righttop"></div>
          <div class="rightbottom"></div>
          <el-table :data="tableData" stripe ref="indexTable">
            <template v-if="curTableType === 2">
              <el-table-column
                :key="curTableType"
                type="index"
                label="序号"
                width="50"
              ></el-table-column>
              <el-table-column
                :key="curTableType"
                prop="carNum"
                label="押运车辆车牌号"
                width="180"
              ></el-table-column>
              <el-table-column
                :key="curTableType"
                show-overflow-tooltip
                prop="location"
                label="实时位置"
              ></el-table-column>
              <el-table-column
                :key="curTableType"
                show-overflow-tooltip
                prop="company"
                label="所属公司"
              ></el-table-column>
              <el-table-column
                :key="curTableType"
                show-overflow-tooltip
                prop="linkman"
                label="联系人"
              ></el-table-column>
              <el-table-column
                :key="curTableType"
                show-overflow-tooltip
                prop="tel"
                label="联系电话"
              ></el-table-column>
            </template>
            <template v-if="curTableType === 1">
              <el-table-column
                :key="curTableType"
                type="index"
                label="序号"
                width="50"
              ></el-table-column>
              <el-table-column
                :key="curTableType"
                show-overflow-tooltip
                prop="name"
                label="押运人员名称"
                width="180"
              ></el-table-column>
              <el-table-column
                :key="curTableType"
                show-overflow-tooltip
                prop="location"
                label="实时位置"
              ></el-table-column>
              <el-table-column
                :key="curTableType"
                show-overflow-tooltip
                prop="company"
                label="所属公司"
              ></el-table-column>
              <el-table-column
                :key="curTableType"
                show-overflow-tooltip
                prop="tel"
                label="联系电话"
              ></el-table-column>
              <!-- <el-table-column :key="curTableType" prop="bz" label="备注">
          <div class="bottom-table">
            <el-table :data="tableData" stripe ref="indexTable">
              <template v-if="curTableType === 2">
                <el-table-column
                  :key="curTableType"
                  type="index"
                  label="序号"
                  width="50"
                ></el-table-column>
                <el-table-column
                  :key="curTableType"
                  prop="carNum"
                  label="押运车辆车牌号"
                  width="180"
                ></el-table-column>
                <el-table-column
                  :key="curTableType"
                  show-overflow-tooltip
                  prop="location"
                  label="实时位置"
                ></el-table-column>
                <el-table-column
                  :key="curTableType"
                  show-overflow-tooltip
                  prop="company"
                  label="所属公司"
                ></el-table-column>
                <el-table-column
                  :key="curTableType"
                  show-overflow-tooltip
                  prop="linkman"
                  label="联系人"
                ></el-table-column>
                <el-table-column
                  :key="curTableType"
                  show-overflow-tooltip
                  prop="tel"
                  label="联系电话"
                ></el-table-column>
              </template>
              <template v-if="curTableType === 1">
                <el-table-column
                  :key="curTableType"
                  type="index"
                  label="序号"
                  width="50"
                ></el-table-column>
                <el-table-column
                  :key="curTableType"
                  show-overflow-tooltip
                  prop="name"
                  label="押运人员名称"
                  width="180"
                ></el-table-column>
                <el-table-column
                  :key="curTableType"
                  show-overflow-tooltip
                  prop="location"
                  label="实时位置"
                ></el-table-column>
                <el-table-column
                  :key="curTableType"
                  show-overflow-tooltip
                  prop="company"
                  label="所属公司"
                ></el-table-column>
                <el-table-column
                  :key="curTableType"
                  show-overflow-tooltip
                  prop="tel"
                  label="联系电话"
                ></el-table-column>
                <!-- <el-table-column :key="curTableType" prop="bz" label="备注">
              </el-table-column>-->
            </template>
            <template v-if="curTableType === 3">
              <el-table-column
                :key="curTableType"
                type="index"
                label="序号"
                width="50"
              ></el-table-column>
              <el-table-column
                :key="curTableType"
                show-overflow-tooltip
                prop="number"
                label="枪支编号"
                width="180"
              ></el-table-column>
              <el-table-column
                :key="curTableType"
                show-overflow-tooltip
                prop="location"
                label="实时位置"
              ></el-table-column>
              <el-table-column
                :key="curTableType"
                show-overflow-tooltip
                prop="company"
                label="所属公司"
              ></el-table-column>
              <el-table-column
                :key="curTableType"
                show-overflow-tooltip
                prop="linkman"
                label="负责人"
              ></el-table-column>
              <el-table-column
                :key="curTableType"
                prop="tel"
                label="联系电话"
              ></el-table-column>
            </template>
          </el-table>
              </template>
              <template v-if="curTableType === 3">
                <el-table-column
                  :key="curTableType"
                  type="index"
                  label="序号"
                  width="50"
                ></el-table-column>
                <el-table-column
                  :key="curTableType"
                  show-overflow-tooltip
                  prop="number"
                  label="枪支编号"
                  width="180"
                ></el-table-column>
                <el-table-column
                  :key="curTableType"
                  show-overflow-tooltip
                  prop="location"
                  label="实时位置"
                ></el-table-column>
                <el-table-column
                  :key="curTableType"
                  show-overflow-tooltip
                  prop="company"
                  label="所属公司"
                ></el-table-column>
                <el-table-column
                  :key="curTableType"
                  show-overflow-tooltip
                  prop="linkman"
                  label="负责人"
                ></el-table-column>
                <el-table-column
                  :key="curTableType"
                  prop="tel"
                  label="联系电话"
                ></el-table-column>
              </template>
            </el-table>
          </div>
        </div>
      </div>
      <div class="right">
@@ -269,8 +271,12 @@
              <img src="../../../public/img/bajgxt/u4.png" />
              <img src="../../../public/img/bajgxt/u256.png" />
              <img src="../../../public/img/bajgxt/u1.png" />
              <span>{{ rightData.poorPerformance }}</span>
              <span>现实表现差</span>
              <span class="showDialog" @click="shoeDialog('xs')">{{
                rightData.poorPerformance
              }}</span>
              <span class="showDialog" @click="shoeDialog('xs')"
                >现实表现差</span
              >
            </div>
            <div class="card-list">
              <img src="../../../public/img/bajgxt/u4.png" />
@@ -389,307 +395,321 @@
      element-loading-text="数据加载中"
      :visible.sync="dialogTableVisible"
    >
      <el-table :data="gridData.data">
        <template v-if="gridData.type === 'zg'">
          <el-table-column
            label="序号"
            width="50"
            :key="gridData.type"
            type="index"
          >
          </el-table-column>
          <el-table-column
            :key="gridData.type"
            prop="realName"
            label="保安姓名"
            :show-overflow-tooltip="true"
            width="100"
          ></el-table-column>
          <el-table-column
            :key="gridData.type"
            prop="deptName"
            label="保安公司"
            :show-overflow-tooltip="true"
          ></el-table-column>
          <el-table-column
            :key="gridData.type"
            prop="sex"
            label="性别"
            :formatter="sexFormatter"
            :show-overflow-tooltip="true"
            width="100"
          ></el-table-column>
          <el-table-column
            :key="gridData.type"
            prop="cardid"
            label="身份证号"
            :show-overflow-tooltip="true"
            width="180"
          ></el-table-column>
          <el-table-column
            :key="gridData.type"
            prop="age"
            label="年龄"
            :show-overflow-tooltip="true"
            width="100"
          ></el-table-column>
          <!-- <el-table-column
      <div class="dialog-table">
        <el-table :data="gridData.data">
          <template v-if="gridData.type === 'zg' || gridData.type === 'xs'">
            <el-table-column
              label="序号"
              width="50"
              :key="gridData.type"
              type="index"
            >
            </el-table-column>
            <el-table-column
              :key="gridData.type"
              prop="realName"
              label="保安姓名"
              :show-overflow-tooltip="true"
              width="100"
            ></el-table-column>
            <el-table-column
              :key="gridData.type"
              prop="deptName"
              label="保安公司"
              :show-overflow-tooltip="true"
            ></el-table-column>
            <el-table-column
              :key="gridData.type"
              prop="sex"
              label="性别"
              :formatter="sexFormatter"
              :show-overflow-tooltip="true"
              width="100"
            ></el-table-column>
            <el-table-column
              :key="gridData.type"
              prop="cardid"
              label="身份证号"
              :show-overflow-tooltip="true"
              width="180"
            ></el-table-column>
            <el-table-column
              :key="gridData.type"
              prop="age"
              label="年龄"
              :show-overflow-tooltip="true"
              width="100"
            ></el-table-column>
            <!-- <el-table-column
          prop="birthday"
          label="出生日期"
          :show-overflow-tooltip="true"
        ></el-table-column> -->
          <el-table-column
            :key="gridData.type"
            prop="securitynumber"
            label="保安员证编号"
            :show-overflow-tooltip="true"
            width="150"
          ></el-table-column>
          <el-table-column
            :key="gridData.type"
            prop="phone"
            label="联系方式"
            :show-overflow-tooltip="true"
            width="150"
          ></el-table-column>
          <el-table-column
            :key="gridData.type"
            prop="examinationType"
            label="审查状态"
            :formatter="examinationFormatter"
            :show-overflow-tooltip="true"
            width="100"
          ></el-table-column>
          <el-table-column
            :key="gridData.type"
            prop="examinationMx"
            label="审查明细"
            :show-overflow-tooltip="true"
            width="150"
          ></el-table-column>
        </template>
        <template v-if="gridData.type === 'wg'">
          <el-table-column
            label="序号"
            width="50"
            :key="gridData.type"
            type="index"
          >
          </el-table-column>
          <el-table-column
            :key="gridData.type"
            prop="enterpriseName"
            label="公司名称"
            :show-overflow-tooltip="true"
          ></el-table-column>
          <el-table-column
            :key="gridData.type"
            prop="znum"
            label="保安员数量"
            :show-overflow-tooltip="true"
            width="150"
          ></el-table-column>
          <el-table-column
            :key="gridData.type"
            prop="cznum"
            label="持证保安"
            :show-overflow-tooltip="true"
            width="150"
          ></el-table-column>
          <el-table-column
            :key="gridData.type"
            prop="czl"
            label="持证率"
            :show-overflow-tooltip="true"
            width="150"
          >
          </el-table-column>
          <el-table-column
            :key="gridData.type"
            prop="sbnum"
            label="缴纳社保人数"
            :show-overflow-tooltip="true"
            width="150"
          ></el-table-column>
          <el-table-column
            :key="gridData.type"
            prop="sbl"
            label="缴纳社保比例"
            :show-overflow-tooltip="true"
            width="150"
          ></el-table-column>
        </template>
        <template v-if="gridData.type === 'jy'">
          <el-table-column
            label="序号"
            width="50"
            :key="gridData.type"
            type="index"
          >
          </el-table-column>
          <el-table-column
            :key="gridData.type"
            prop="enterpriseName"
            label="公司名称"
            :show-overflow-tooltip="true"
          ></el-table-column>
          <el-table-column
            :key="gridData.type"
            prop="znum"
            label="保安员数量"
            :show-overflow-tooltip="true"
            width="150"
          ></el-table-column>
          <el-table-column
            :key="gridData.type"
            prop="cznum"
            label="持证保安"
            :show-overflow-tooltip="true"
            width="150"
          ></el-table-column>
          <el-table-column
            :key="gridData.type"
            prop="painum"
            label="派遣人数"
            :show-overflow-tooltip="true"
            width="150"
          ></el-table-column>
          <el-table-column
            :key="gridData.type"
            prop="fwnum"
            label="服务对象数量"
            :show-overflow-tooltip="true"
            width="150"
          ></el-table-column>
          <el-table-column
            :key="gridData.type"
            prop="pql"
            label="派遣率"
            :show-overflow-tooltip="true"
            width="150"
          ></el-table-column>
          <el-table-column
            :key="gridData.type"
            prop="pjpqrs"
            label="平均派遣人数"
            :show-overflow-tooltip="true"
            width="150"
          ></el-table-column>
        </template>
        <template v-if="gridData.type === 'ym'">
          <el-table-column
            label="序号"
            width="50"
            :key="gridData.type"
            type="index"
          >
          </el-table-column>
          <el-table-column
            :key="gridData.type"
            prop="enterpriseName"
            label="公司名称"
            :show-overflow-tooltip="true"
            width="450"
          ></el-table-column>
          <el-table-column
            :key="gridData.type"
            prop="znum"
            label="保安员数量"
            :show-overflow-tooltip="true"
          ></el-table-column>
          <el-table-column
            :key="gridData.type"
            prop="cznum"
            label="持证保安"
            :show-overflow-tooltip="true"
          ></el-table-column>
          <el-table-column
            :key="gridData.type"
            prop="painum"
            label="派遣人数"
            :show-overflow-tooltip="true"
          ></el-table-column>
          <el-table-column
            :key="gridData.type"
            prop="fwnum"
            label="服务对象数量"
            :show-overflow-tooltip="true"
          ></el-table-column
          >gridData
        </template>
        <template v-if="gridData.type === 'jg'">
          <el-table-column
            label="序号"
            width="50"
            :key="gridData.type"
            type="index"
          >
          </el-table-column>
          <el-table-column
            :key="gridData.type"
            prop="enterpriseName"
            label="公司名称"
            :show-overflow-tooltip="true"
          ></el-table-column>
          <el-table-column
            :key="gridData.type"
            prop="punishtype"
            label="处罚类别"
            :formatter="punishType"
            :show-overflow-tooltip="true"
            width="150"
          ></el-table-column>
          <el-table-column
            :key="gridData.type"
            prop="punishreason"
            label="处罚原因"
            :show-overflow-tooltip="true"
            width="200"
          ></el-table-column>
          <el-table-column
            :key="gridData.type"
            prop="penalty"
            label="处罚单位"
            :show-overflow-tooltip="true"
            width="200"
          ></el-table-column>
          <el-table-column
            :key="gridData.type"
            prop="punishtime"
            label="处罚时间"
            :show-overflow-tooltip="true"
            width="100"
          ></el-table-column>
        </template>
        <template v-if="gridData.type === 'ywdx_gs'">
          <el-table-column
            label="序号"
            width="50"
            :key="gridData.type"
            type="index"
          >
          </el-table-column>
          <el-table-column
            :key="gridData.type"
            prop="enterprisename"
            label="保安公司名称"
            :show-overflow-tooltip="true"
          ></el-table-column>
          <el-table-column
            :key="gridData.type"
            prop="stats"
            label="保安公司类型"
            :formatter="companyFormatter"
            :show-overflow-tooltip="true"
          ></el-table-column>
          <el-table-column
            :key="gridData.type"
            prop="jurisdictionName"
            label="所属辖区"
            :show-overflow-tooltip="true"
          ></el-table-column>
        </template>
      </el-table>
            <el-table-column
              :key="gridData.type"
              prop="securitynumber"
              label="保安员证编号"
              :show-overflow-tooltip="true"
              width="150"
            ></el-table-column>
            <el-table-column
              :key="gridData.type"
              prop="phone"
              label="联系方式"
              :show-overflow-tooltip="true"
              width="150"
            ></el-table-column>
            <el-table-column
              v-if="gridData.type === 'zg'"
              :key="gridData.type"
              prop="examinationType"
              label="审查状态"
              :formatter="examinationFormatter"
              :show-overflow-tooltip="true"
              width="100"
            ></el-table-column>
            <el-table-column
              v-if="gridData.type === 'zg'"
              :key="gridData.type"
              prop="examinationMx"
              label="审查明细"
              :show-overflow-tooltip="true"
              width="150"
            ></el-table-column>
            <el-table-column
              v-if="gridData.type === 'xs'"
              :key="gridData.type"
              prop="score"
              label="现实表现情况"
              :show-overflow-tooltip="true"
              width="150"
              :formatter="scoreFormatter"
            ></el-table-column>
          </template>
          <template v-if="gridData.type === 'wg'">
            <el-table-column
              label="序号"
              width="50"
              :key="gridData.type"
              type="index"
            >
            </el-table-column>
            <el-table-column
              :key="gridData.type"
              prop="enterpriseName"
              label="公司名称"
              :show-overflow-tooltip="true"
            ></el-table-column>
            <el-table-column
              :key="gridData.type"
              prop="znum"
              label="保安员数量"
              :show-overflow-tooltip="true"
              width="150"
            ></el-table-column>
            <el-table-column
              :key="gridData.type"
              prop="cznum"
              label="持证保安"
              :show-overflow-tooltip="true"
              width="150"
            ></el-table-column>
            <el-table-column
              :key="gridData.type"
              prop="czl"
              label="持证率"
              :show-overflow-tooltip="true"
              width="150"
            >
            </el-table-column>
            <el-table-column
              :key="gridData.type"
              prop="sbnum"
              label="缴纳社保人数"
              :show-overflow-tooltip="true"
              width="150"
            ></el-table-column>
            <el-table-column
              :key="gridData.type"
              prop="sbl"
              label="缴纳社保比例"
              :show-overflow-tooltip="true"
              width="150"
            ></el-table-column>
          </template>
          <template v-if="gridData.type === 'jy'">
            <el-table-column
              label="序号"
              width="50"
              :key="gridData.type"
              type="index"
            >
            </el-table-column>
            <el-table-column
              :key="gridData.type"
              prop="enterpriseName"
              label="公司名称"
              :show-overflow-tooltip="true"
            ></el-table-column>
            <el-table-column
              :key="gridData.type"
              prop="znum"
              label="保安员数量"
              :show-overflow-tooltip="true"
              width="150"
            ></el-table-column>
            <el-table-column
              :key="gridData.type"
              prop="cznum"
              label="持证保安"
              :show-overflow-tooltip="true"
              width="150"
            ></el-table-column>
            <el-table-column
              :key="gridData.type"
              prop="painum"
              label="派遣人数"
              :show-overflow-tooltip="true"
              width="150"
            ></el-table-column>
            <el-table-column
              :key="gridData.type"
              prop="fwnum"
              label="服务对象数量"
              :show-overflow-tooltip="true"
              width="150"
            ></el-table-column>
            <el-table-column
              :key="gridData.type"
              prop="pql"
              label="派遣率"
              :show-overflow-tooltip="true"
              width="150"
            ></el-table-column>
            <el-table-column
              :key="gridData.type"
              prop="pjpqrs"
              label="平均派遣人数"
              :show-overflow-tooltip="true"
              width="150"
            ></el-table-column>
          </template>
          <template v-if="gridData.type === 'ym'">
            <el-table-column
              label="序号"
              width="50"
              :key="gridData.type"
              type="index"
            >
            </el-table-column>
            <el-table-column
              :key="gridData.type"
              prop="enterpriseName"
              label="公司名称"
              :show-overflow-tooltip="true"
              width="450"
            ></el-table-column>
            <el-table-column
              :key="gridData.type"
              prop="znum"
              label="保安员数量"
              :show-overflow-tooltip="true"
            ></el-table-column>
            <el-table-column
              :key="gridData.type"
              prop="cznum"
              label="持证保安"
              :show-overflow-tooltip="true"
            ></el-table-column>
            <el-table-column
              :key="gridData.type"
              prop="painum"
              label="派遣人数"
              :show-overflow-tooltip="true"
            ></el-table-column>
            <el-table-column
              :key="gridData.type"
              prop="fwnum"
              label="服务对象数量"
              :show-overflow-tooltip="true"
            ></el-table-column
            >gridData
          </template>
          <template v-if="gridData.type === 'jg'">
            <el-table-column
              label="序号"
              width="50"
              :key="gridData.type"
              type="index"
            >
            </el-table-column>
            <el-table-column
              :key="gridData.type"
              prop="enterpriseName"
              label="公司名称"
              :show-overflow-tooltip="true"
            ></el-table-column>
            <el-table-column
              :key="gridData.type"
              prop="punishtype"
              label="处罚类别"
              :formatter="punishType"
              :show-overflow-tooltip="true"
              width="150"
            ></el-table-column>
            <el-table-column
              :key="gridData.type"
              prop="punishreason"
              label="处罚原因"
              :show-overflow-tooltip="true"
              width="200"
            ></el-table-column>
            <el-table-column
              :key="gridData.type"
              prop="penalty"
              label="处罚单位"
              :show-overflow-tooltip="true"
              width="200"
            ></el-table-column>
            <el-table-column
              :key="gridData.type"
              prop="punishtime"
              label="处罚时间"
              :show-overflow-tooltip="true"
              width="100"
            ></el-table-column>
          </template>
          <template v-if="gridData.type === 'ywdx_gs'">
            <el-table-column
              label="序号"
              width="50"
              :key="gridData.type"
              type="index"
            >
            </el-table-column>
            <el-table-column
              :key="gridData.type"
              prop="enterprisename"
              label="保安公司名称"
              :show-overflow-tooltip="true"
            ></el-table-column>
            <el-table-column
              :key="gridData.type"
              prop="stats"
              label="保安公司类型"
              :formatter="companyFormatter"
              :show-overflow-tooltip="true"
            ></el-table-column>
            <el-table-column
              :key="gridData.type"
              prop="jurisdictionName"
              label="所属辖区"
              :show-overflow-tooltip="true"
            ></el-table-column>
          </template>
        </el-table>
      </div>
      <el-pagination
        @current-change="changePage"
        @size-change="changePage"
@@ -745,6 +765,8 @@
  lazyTrees,
  getSecurityUnitInfoPage
} from "../../api/index/index";
import { getPosition, getNewPeople } from "@/api/map/people";
import { getNewPosition } from "@/api/map/car";
import car from "@/assets/img/car.png";
import peo from "@/assets/img/people.png";
@@ -828,7 +850,9 @@
      // },
      node1: {}, //选中的记录
      node2: {},
      params: null
      params: null,
      peopleGps: {},
      carGps: {}
    };
  },
  computed: {
@@ -840,6 +864,34 @@
    }
  },
  methods: {
    getPeoplePosition() {
      getPosition({ type: 1, workerId: "1432897970143014913" }).then(result => {
        getNewPeople().then(res => {
          if (JSON.stringify(res.data) != "{}") {
            var arr = res.data.sort(function(a, b) {
              return a["date"] < b["date"] ? 1 : -1;
            });
            this.peopleGps = {
              LGTD: arr[0].gis_jd,
              LTTD: arr[0].gis_wd
            };
          }
          this.getTableData(0);
        });
      });
    },
    getCarPosition() {
      getNewPosition({ imei: "861636056082414" }).then(result => {
        var res = result.data.data;
        if (JSON.stringify(res) != "{}") {
          this.carGps = {
            LGTD: res.x,
            LTTD: res.y
          };
        }
        this.getTableData(0);
      });
    },
    //点击节点
    handleNodeClick1(data) {
      this.value1 = data;
@@ -863,6 +915,11 @@
        return "异常";
      } else if (row.examinationType === "0") {
        return "正常";
      }
    },
    scoreFormatter(row) {
      if (row.score === "3") {
        return "差";
      }
    },
    punishType(row) {
@@ -1111,11 +1168,30 @@
            //   name: type,
            //   value: [Number(m.longitude), Number(m.latitude)],
            // };
            middleData[m.type]["geoData"].push([
              Number(m.longitude),
              Number(m.latitude)
            ]);
            middleData[m.type]["table"].push(obj);
            if (m.type === 1) {
              middleData[m.type]["geoData"].push([
                Number(this.peopleGps.LGTD),
                Number(this.peopleGps.LTTD)
              ]);
              middleData[m.type]["table"].push(obj);
            } else if (m.type === 2) {
              middleData[m.type]["geoData"].push([
                Number(this.carGps.LGTD),
                Number(this.carGps.LTTD)
              ]);
              middleData[m.type]["table"].push(obj);
            } else {
              middleData[m.type]["geoData"].push([
                Number(m.longitude),
                Number(m.latitude)
              ]);
              middleData[m.type]["table"].push(obj);
            }
            // middleData[m.type]["geoData"].push([
            //   Number(m.longitude),
            //   Number(m.latitude)
            // ]);
            // middleData[m.type]["table"].push(obj);
          });
          this.carNum = middleData[2]["table"].length;
          this.peoNum = middleData[1]["table"].length;
@@ -1170,6 +1246,9 @@
      } else if (type === "jg") {
        this.gridData.title = "受监管处罚公司清单(保安公司存在被处罚记录)";
        this.getPunishList(1);
      } else if (type === "xs") {
        this.gridData.title = "现实表现差人员清单";
        this.getQualificationPages(1);
      }
    },
    getWgTable() {
@@ -1230,7 +1309,7 @@
      });
    },
    changePage(page) {
      if (this.gridData.type === "zg") {
      if (this.gridData.type === "zg" || this.gridData.type === "xs") {
        this.getQualificationPages(page);
      } else if (this.gridData.type === "wg") {
        this.gridData.data = this.dialogTable.wgTable.slice(
@@ -1260,9 +1339,13 @@
      let params = {
        current: this.gridData.current,
        size: 10,
        examinationType: 1,
        jurisdiction: this.value1
      };
      if (this.gridData.type === "zg") {
        Object.assign(params, { examinationType: 1 });
      } else if (this.gridData.type === "xs") {
        Object.assign(params, { score: 3 });
      }
      qualificationPages(params).then(res => {
        if (res.data.code === 200) {
          this.gridData.data = res.data.data.records;
@@ -1405,12 +1488,14 @@
    }
  },
  mounted() {
    this.getPeoplePosition();
    this.getCarPosition();
    this.initEchart();
    this.getHolderNum(0);
    // this.getPoorPerformance(3);
    // this.getTableData("car");
    // this.initMap();
    this.getTableData(0);
    // this.getTableData(0);
    // this.initMapEchart();
    this.getOfficeData();
  }
src/views/home/index_1280_1024.scss
@@ -238,12 +238,12 @@
    }
  }
  .middle {
    .el-table {
      width: calc(100% - 40px);
      height: calc(100% - 65px);
      margin: 0px 20px 15px;
      top: 50px;
    }
    // .el-table {
    //   width: calc(100% - 40px);
    //   height: calc(100% - 65px);
    //   margin: 0px 20px 15px;
    //   top: 50px;
    // }
    /deep/ .el-table--striped .el-table__body tr.el-table__row--striped td {
      background: #031d4b !important;
    }
@@ -408,10 +408,10 @@
  .mapBtn:nth-child(3) {
    margin-top: 160px;
  }
  /deep/ .el-table__body-wrapper {
    overflow: auto;
    height: calc(100% - 50px);
  }
  // /deep/ .el-table__body-wrapper {
  //   overflow: auto;
  //   height: calc(100% - 50px);
  // }
}
.left2-btn {
  height: 19px;
@@ -663,17 +663,17 @@
  /deep/.dialog {
    z-index: 10000000 !important;
    .el-table {
      top: 0px !important;
      margin: 0px !important;
      width: 100% !important;
      height: calc(100% - 50px) !important;
      // top: 0px !important;
      // margin: 0px !important;
      // width: 100% !important;
      // height: calc(100% - 50px) !important;
      .el-table__header {
        background-color: #2d5cc8 !important;
      }
      .el-table__body-wrapper {
        height: calc(100% - 50px);
        overflow-x: hidden;
        overflow-y: auto;
        // overflow-x: hidden;
        // overflow-y: auto;
      }
    }
    .el-pagination {
@@ -697,3 +697,30 @@
    height: 77%;
  }
}
.bottom-table{
  width: calc(100% - 40px);
  height: 100%;
  margin: 0px 20px 15px;
  top: 50px;
  .el-table{
    width: 100%;
    height: calc(100% - 65px);
    top: 50px;
    overflow-y: auto;
  }
}
::-webkit-scrollbar{
  display: none;
}
.dialog-table{
  top: 0px !important;
  margin: 0px !important;
  width: 100% !important;
  height: calc(100% - 50px) !important;
  overflow: auto;
  .el-table{
    width: 100%;
    height: 100%;
    overflow: auto;
  }
}
src/views/home/index_1600_900.scss
@@ -238,12 +238,12 @@
    }
  }
  .middle {
    .el-table {
      width: calc(100% - 40px);
      height: calc(100% - 65px);
      margin: 0px 20px 15px;
      top: 50px;
    }
    // .el-table {
    //   width: calc(100% - 40px);
    //   height: calc(100% - 65px);
    //   margin: 0px 20px 15px;
    //   top: 50px;
    // }
    /deep/ .el-table--striped .el-table__body tr.el-table__row--striped td {
      background: #031d4b !important;
    }
@@ -407,10 +407,10 @@
  .mapBtn:nth-child(3) {
    margin-top: 160px;
  }
  /deep/ .el-table__body-wrapper {
    overflow: auto;
    height: calc(100% - 50px);
  }
  // /deep/ .el-table__body-wrapper {
  //   overflow: auto;
  //   height: calc(100% - 50px);
  // }
}
.left2-btn {
  height: 21px;
@@ -662,17 +662,16 @@
  /deep/.dialog {
    z-index: 10000000 !important;
    .el-table {
      top: 0px !important;
      margin: 0px !important;
      width: 100% !important;
      height: calc(100% - 50px) !important;
      // top: 0px !important;
      // margin: 0px !important;
      // width: 100% !important;
      // height: calc(100% - 50px) !important;
      .el-table__header {
        background-color: #2d5cc8 !important;
      }
      .el-table__body-wrapper {
        height: calc(100% - 50px);
        overflow-x: hidden;
        overflow-y: auto;
        height: 100%;
        overflow:hidden;
      }
    }
    .el-pagination {
@@ -696,3 +695,30 @@
    height: 77%;
  }
}
.bottom-table{
  width: calc(100% - 40px);
  height: 100%;
  margin: 0px 20px 15px;
  top: 50px;
  .el-table{
    width: 100%;
    height: calc(100% - 65px);
    top: 50px;
    overflow-y: auto;
  }
}
::-webkit-scrollbar{
  display: none;
}
.dialog-table{
  top: 0px !important;
  margin: 0px !important;
  width: 100% !important;
  height: calc(100% - 30px) !important;
  // overflow: auto;
  .el-table{
    width: 100%;
    height: 100%;
    overflow-y: auto;
  }
}
src/views/map/carGps copy.vue
New file
@@ -0,0 +1,422 @@
/*
 * @Author: Morpheus
 * @Date: 2021-07-05 16:31:54
 * @Last Modified by: Morpheus
 * @Last Modified time: 2021-11-17 09:20:19
 * menu-name 押运人员定位
 */
<template>
    <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 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>
                                <li>
                                    <div>责任人:</div>
                                    <div>{{ detailObj.personInCharge }}</div>
                                </li>
                                <li>
                                    <div>出场日期:</div>
                                    <div>{{ detailObj.dateForProduction }}</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>
                                    <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"
                       :close-on-click-modal='false'
                       class="car-video-box">
                <iframe src="/carVideo/parent.html"
                        ref="videoIframe"
                        frameborder="0"></iframe>
            </el-dialog>
        </el-col>
    </el-row>
</template>
<script>
import { getCarList, getPosition, getTrack } from "@/api/map/car";
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: {},
            dialogVisible: false,
            map: null,
        };
    },
    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.map = data;
            this.$nextTick(function () {
                data.on('singleclick', this.realVideo)
            })
        },
        realVideo (e) {
            var that = this;
            // 在点击时获取像素区域
            var pixel = this.map.getEventPixel(e.originalEvent)
            this.map.forEachFeatureAtPixel(pixel, function (feature) {
                const cont = feature.values_.attributes
                if (cont != undefined) {
                    that.dialogVisible = true
                  setTimeout(() =>{
                    that.$refs.videoIframe.contentWindow.startVideo()
                  },3000);
                }
            })
        },
        dialogBeforeClose() {
          this.dialogVisible = false
          this.$refs.videoIframe.contentWindow.closeVideo()
        }
    },
    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;
}
.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);
            }
        }
        .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>
src/views/map/carGps.vue
@@ -2,7 +2,7 @@
 * @Author: Morpheus
 * @Date: 2021-07-05 16:31:54
 * @Last Modified by: Morpheus
 * @Last Modified time: 2021-11-17 09:20:19
 * @Last Modified time: 2021-11-25 15:24:53
 * menu-name 押运人员定位
 */
<template>
@@ -122,24 +122,38 @@
                </div>
            </el-card>
            <el-dialog title=""
            <el-dialog title="视频监控"
                       :modal='false'
                       :visible.sync="dialogVisible"
                       :before-close="dialogBeforeClose"
                       :close-on-click-modal='false'
                       @closed="videoClose"
                       class="car-video-box">
                <iframe src="/carVideo/parent.html"
                        ref="videoIframe"
                        frameborder="0"></iframe>
                <div class="container"
                     v-loading="videoLoading">
                    <video id="videoElementOne"
                           controls="controls"></video>
                    <video id="videoElementTwo"
                           controls="controls"></video>
                    <video id="videoElementThree"
                           controls="controls"></video>
                    <video id="videoElementFour"
                           controls="controls"></video>
                </div>
            </el-dialog>
        </el-col>
    </el-row>
</template>
<script>
import { getCarList, getPosition, getTrack } from "@/api/map/car";
import { getCarList, getPosition, getNewPosition, getTrack, getVideoSrc, getNewCarTark } from "@/api/map/car";
import axios from 'axios';
import carPng from "@/assets/img/car.png";
import flvjs from 'flv.js/dist/flv.min.js';
const d3 = require('d3-dsv');
export default {
    data () {
@@ -156,16 +170,13 @@
            detailObj: {},
            dialogVisible: false,
            map: null,
            videoLoading: true
        };
    },
    created () {
        this.getList();
    },
    mounted () {
    },
    methods: {
@@ -192,14 +203,17 @@
        },
        positionClick (val) {
            getPosition({ type: 2, workerId: val.id }).then((result) => {
            // console.log(val)
            getNewPosition({ imei: "861636056082414" }).then((result) => {
                var res = result.data.data;
                if (JSON.stringify(res) != "{}") {
                    this.$refs.modalForm.addEntitys(
                        {
                            LGTD: 115.86,
                            LTTD: 28.71,
                            name: "枪支位置",
                            LGTD: res.x,
                            LTTD: res.y,
                            name: "车辆位置",
                        },
                        carPng,
                        0.8,
@@ -239,6 +253,12 @@
                this.disposeTime(startTime.getMinutes()) +
                ":" +
                this.disposeTime(startTime.getSeconds());
            const startTWO =
                startTime.getFullYear() + '' +
                this.disposeTime(startTime.getMonth() + 1) + '' +
                this.disposeTime(startTime.getDate());
            if (this.trackTime.length == 1) {
                this.$message({ message: "请选择结束时间", duration: 2000 });
                return;
@@ -257,22 +277,48 @@
                ":" +
                this.disposeTime(endTime.getSeconds());
            const endTWO =
                endTime.getFullYear() + '' +
                this.disposeTime(endTime.getMonth() + 1) + '' +
                this.disposeTime(endTime.getDate());
            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)]);
                    });
                getNewCarTark({
                    beginTime: startTWO,
                    endTime: endTWO,
                    rectify: 0,
                    callbackId: 123
                }).then(res => {
                    axios.get('http://s16s652780.51mypc.cn/car/' + res.data.data).then(result => {
                        var ret = d3.csvParse(result.data)
                    this.$refs.modalForm.addLines(arr);
                }
                        let arr = [];
                        ret.forEach((item, index) => {
                            if (index < ret.length - 1) {
                                arr.push([Number(item.x), Number(item.y)]);
                            }
                        })
                        this.$refs.modalForm.addLines(arr);
                    })
                })
                // 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);
                // }
            });
        },
        // 处理时间补零操作
@@ -305,20 +351,101 @@
                if (cont != undefined) {
                    that.dialogVisible = true
                    var oneflag = false, twoflag = false, threefalse = false, fourfalse = false;
                    getVideoSrc({ camera: 0, action: 'start' }).then(res => {
                        oneflag = true;
                        if (twoflag == true && threefalse == true && fourfalse == true) {
                            that.videoLoading = false;
                        }
                        if (flvjs.isSupported()) {
                            var videoElement = document.getElementById('videoElementOne')
                            var flvPlayer = flvjs.createPlayer({
                                // isLive: true,
                                // hasAudio: false,
                                type: 'flv',
                                url: res.data.data.live_url
                            })
                            flvPlayer.attachMediaElement(videoElement)
                            flvPlayer.load()
                            flvPlayer.play()
                        }
                    })
                  setTimeout(() =>{
                    that.$refs.videoIframe.contentWindow.startVideo()
                  },3000);
                    getVideoSrc({ camera: 1, action: 'start' }).then(res => {
                        twoflag = true;
                        if (oneflag == true && threefalse == true && fourfalse == true) {
                            that.videoLoading = false;
                        }
                        if (flvjs.isSupported()) {
                            var videoElement = document.getElementById('videoElementTwo')
                            var flvPlayer = flvjs.createPlayer({
                                // isLive: true,
                                // hasAudio: false,
                                type: 'flv',
                                url: res.data.data.live_url
                            })
                            flvPlayer.attachMediaElement(videoElement)
                            flvPlayer.load()
                            flvPlayer.play()
                        }
                    })
                    getVideoSrc({ camera: 2, action: 'start' }).then(res => {
                        threefalse = true;
                        if (oneflag == true && twoflag == true && fourfalse == true) {
                            that.videoLoading = false;
                        }
                        if (flvjs.isSupported()) {
                            var videoElement = document.getElementById('videoElementThree')
                            var flvPlayer = flvjs.createPlayer({
                                // isLive: true,
                                // hasAudio: false,
                                type: 'flv',
                                url: res.data.data.live_url
                            })
                            flvPlayer.attachMediaElement(videoElement)
                            flvPlayer.load()
                            flvPlayer.play()
                        }
                    })
                    getVideoSrc({ camera: 4, action: 'start' }).then(res => {
                        fourfalse = true;
                        if (oneflag == true && twoflag == true && threefalse == true) {
                            that.videoLoading = false;
                        }
                        if (flvjs.isSupported()) {
                            var videoElement = document.getElementById('videoElementFour')
                            var flvPlayer = flvjs.createPlayer({
                                // isLive: true,
                                // hasAudio: false,
                                type: 'flv',
                                url: res.data.data.live_url
                            })
                            flvPlayer.attachMediaElement(videoElement)
                            flvPlayer.load()
                            flvPlayer.play()
                        }
                    })
                }
            })
        },
        dialogBeforeClose() {
          this.dialogVisible = false
        videoClose () {
            this.dialogVisible = false;
            getVideoSrc({ camera: 0, action: 'stop' })
          this.$refs.videoIframe.contentWindow.closeVideo()
            getVideoSrc({ camera: 1, action: 'stop' })
            getVideoSrc({ camera: 2, action: 'stop' })
            getVideoSrc({ camera: 4, action: 'stop' })
        },
        dialogBeforeClose () {
            this.dialogVisible = false
        }
    },
@@ -419,4 +546,48 @@
        }
    }
}
.car-video-box {
    .container {
        position: relative;
        width: 100%;
        height: 100%;
        display: flex;
        flex-wrap: wrap;
        video {
            flex: 1;
            width: 50%;
            height: 50%;
            object-fit: fill;
        }
        // #videoElementOne {
        //     position: absolute;
        //     top: 0;
        //     left: 0;
        //     width: 50%;
        //     height: 50%;
        // }
        // #videoElementTwo {
        //     position: absolute;
        //     top: 0;
        //     right: 0;
        //     width: 50%;
        //     height: 50%;
        // }
        // #videoElementThree {
        //     position: absolute;
        //     bottom: 0;
        //     left: 0;
        //     width: 50%;
        //     height: 50%;
        // }
        // #videoElementFour {
        //     position: absolute;
        //     bottom: 0;
        //     right: 0;
        //     width: 50%;
        //     height: 50%;
        // }
    }
}
</style>
src/views/map/peopleGps.vue
@@ -2,7 +2,7 @@
 * @Author: Morpheus
 * @Date: 2021-07-05 16:31:54
 * @Last Modified by: Morpheus
 * @Last Modified time: 2021-11-17 09:21:25
 * @Last Modified time: 2021-11-25 13:48:23
 * menu-name 押运人员定位
 */
<template>
@@ -131,10 +131,9 @@
</template>
<script>
import { getPeopleList, getPosition, getTrack } from "@/api/map/people";
import { getPeopleList, getPosition, getTrack, getNewPeople, getNewTark } from "@/api/map/people";
import peoplePng from "@/assets/img/people.png";
export default {
    data () {
        return {
@@ -150,7 +149,10 @@
            detailObj: {},
        };
    },
    created () { },
    created () {
    },
    mounted () {
        this.getList();
    },
@@ -187,20 +189,44 @@
        positionClick (val) {
            getPosition({ type: 1, workerId: val.id }).then((result) => {
                var res = result.data.data;
                if (JSON.stringify(res) != "{}") {
                    this.$refs.modalForm.addEntitys(
                        {
                            LGTD: res.longitude,
                            LTTD: res.latitude,
                            name: "人员位置",
                        },
                        peoplePng,
                        0.5,
                        "peoplelayer",
                        "peopleAddlayer"
                    );
                }
                getNewPeople().then(res => {
                    if (JSON.stringify(res.data) != "{}") {
                        var arr = res.data.sort(function (a, b) {
                            return a['date'] < b['date'] ? 1 : -1
                        })
                        this.$refs.modalForm.addEntitys(
                            {
                                LGTD: arr[0].gis_jd,
                                LTTD: arr[0].gis_wd,
                                name: "人员位置",
                            },
                            peoplePng,
                            0.5,
                            "peoplelayer",
                            "peopleAddlayer"
                        );
                    }
                })
                // var res = result.data.data;
                // if (JSON.stringify(res) != "{}") {
                //     this.$refs.modalForm.addEntitys(
                //         {
                //             LGTD: res.longitude,
                //             LTTD: res.latitude,
                //             name: "人员位置",
                //         },
                //         peoplePng,
                //         0.5,
                //         "peoplelayer",
                //         "peopleAddlayer"
                //     );
                // }
            });
        },
@@ -256,17 +282,36 @@
                type: 1,
                startTime: start,
                endTime: end,
            }).then((res) => {
                var result = res.data.data;
                if (result.length > 1) {
                    let arr = [];
            }).then((result) => {
                    result.forEach((item) => {
                        arr.push([Number(item.longitude), Number(item.latitude)]);
                    });
                getNewTark().then(res => {
                    this.$refs.modalForm.addLines(arr);
                }
                    if (JSON.stringify(res.data.track) != "{}") {
                        if (res.data.track.length > 1) {
                            let arr = [];
                            res.data.track.forEach((item) => {
                                arr.push([Number(item.gis_jd), Number(item.gis_wd)]);
                            });
                            this.$refs.modalForm.addLines(arr);
                        }
                    }
                })
                // 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);
                // }
            });
        },
        // 处理时间补零操作
src/views/statisticalQueryManagement/businessStatisticsFwdq.vue
@@ -92,7 +92,7 @@
          },
          {
            label: "所属保安公司",
            prop: "tenantName",
            prop: "deptName",
            width: 300,
            display: false
          },
@@ -107,8 +107,8 @@
            display: false
          },
          {
            label: "保安员姓名",
            prop: "realName",
            label: "保安员数量",
            prop: "num",
            display: false
          },
          {
src/views/statisticalQueryManagement/securityGuardDetail.vue
@@ -220,7 +220,7 @@
            label: "是否持证",
            prop: "hold",
            type: "select",
            search: true,
            search: !this.paramCz,
            searchSpan: 4,
            dicData: [
              {