zhanghua
2023-03-29 d47e5437da19a4a49762986dcf49eb1ec3195c16
预警研判优化
6个文件已修改
225 ■■■■ 已修改文件
src/components/map/leafletMap.vue 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/utils/index.js 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/intelligentPatrol/statistics/unlawful/type/index.vue 79 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/intelligentPatrol/studyJudge/index.vue 134 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/systemSetting/device/point/index.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
vue.config.js 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/map/leafletMap.vue
@@ -74,6 +74,11 @@
    },
    locationMap() {
            debugger
            if (this.map_point && this.map_point.y) {
                this.map.setView([eval(this.map_point.y), eval(this.map_point.x)], this.map_zoom);
            }
      if (this.mark && this.map) {
        // 创建一个 Marker 实例:
        var marker = L.marker([eval(this.map_point.y), eval(this.map_point.x)]).addTo(
@@ -82,7 +87,6 @@
        let that = this
        // 将创建的点标记添加到已有的地图实例:
        marker.on("click", function (e) {
          console.log("666");
          that.$emit("fatherMethod");
        });
      }
src/utils/index.js
@@ -55,4 +55,4 @@
export const SUCCESS_CODE = 200;
export const FILE_ORIGINAL_URL = 'http://140.143.152.226:8410/'
export const FILE_ORIGINAL_URL = 'http://10.53.157.24:8001/'
src/views/intelligentPatrol/statistics/unlawful/type/index.vue
@@ -25,13 +25,18 @@
            @click="setTableDataHandle"
            >查询</el-button
          >
          <el-button icon="el-icon-delete-solid" @click="resetTableData"
                    <el-button
                        icon="el-icon-delete-solid"
                        @click="resetTableData"
            >重置</el-button
          >
        </div>
        <div class="main-nav-right">
          <el-button type="primary" icon="el-icon-upload2" @click="handleExport"
                    <el-button
                        type="primary"
                        icon="el-icon-upload2"
                        @click="handleExport"
            >导出</el-button
          >
        </div>
@@ -47,36 +52,68 @@
          :header-cell-style="{
            background: '#F5F5F5',
            'font-weight': '650',
            'line-height': '45px',
                        'line-height': '45px'
          }"
          :row-class-name="tableRowClassName"
          :data="list"
          style="width: 100%"
        >
          <el-table-column type="selection" min-width="5"> </el-table-column>
          <el-table-column prop="name" label="类型名称" min-width="10">
                    <el-table-column type="selection" min-width="5">
          </el-table-column>
          <el-table-column prop="count" label="事件总数" min-width="5">
                    <el-table-column
                        prop="name"
                        label="类型名称"
                        min-width="10"
                    >
                    </el-table-column>
                    <el-table-column
                        prop="count"
                        label="事件总数"
                        min-width="5"
                    >
            <template slot-scope="scope">
              <el-button type="text" @click="seachTotalEvents(scope.row.id)">{{scope.row.count}}</el-button>
                            <el-button
                                type="text"
                                @click="seachTotalEvents(scope.row.id, 1)"
                                >{{ scope.row.count }}</el-button
                            >
            </template>
          </el-table-column>
          <el-table-column prop="ratio" label="占比" min-width="5">
          </el-table-column>
          <el-table-column prop="register" label="立案" min-width="5">
          </el-table-column>
          <el-table-column prop="notRegister" label="暂不立案" min-width="5">
                    <el-table-column
                        prop="notRegister"
                        label="暂不立案"
                        min-width="5"
                    >
          </el-table-column>
          <el-table-column prop="closing" label="结案" min-width="5">
          </el-table-column>
          <el-table-column prop="relearn" label="再学习" min-width="5">
                    <el-table-column
                        prop="relearn"
                        label="再学习"
                        min-width="5"
                    >
          </el-table-column>
          <el-table-column prop="checked" label="已审核" min-width="5">
                    <el-table-column
                        prop="checked"
                        label="已审核"
                        min-width="5"
                    >
          </el-table-column>
          <el-table-column prop="checkedRatio" label="审核率" min-width="5">
                    <el-table-column
                        prop="checkedRatio"
                        label="审核率"
                        min-width="5"
                    >
          </el-table-column>
          <el-table-column prop="registerRatio" label="立案率" min-width="5">
                    <el-table-column
                        prop="registerRatio"
                        label="立案率"
                        min-width="5"
                    >
          </el-table-column>
        </el-table>
      </div>
@@ -103,7 +140,8 @@
          title="事件总数"
          :visible.sync="dialogVisibleEvent"
          width="80%"
          :before-close="handClose">
                :before-close="handClose"
            >
        <el-table
            border
            stripe
@@ -116,9 +154,7 @@
            :data="gridData"
            style="width: 100%"
            :row-class-name="tableRowClassName"
        >
          <el-table-column
              prop="code"
              label="事件编号"
@@ -209,7 +245,6 @@
          >
          </el-pagination>
        </div>
      </el-dialog>
    </main>
  </div>
@@ -278,18 +313,18 @@
      this.dialogVisibleEvent=false
    },
    changeCurrentPages(page){
      this.currentPages = page;
      this.seachTotalEvents(this.seachID)
            this.seachTotalEvents(this.seachID, page)
    },
// 处理时间
    filterTime(time) {
      return helper(time);
    },
    seachTotalEvents(id){
        seachTotalEvents(id, page) {
      this.seachID=id
      this.dialogVisibleEvent =true
      console.log(this.value2)
            this.currentPages = page;
      let params ={
        type:1,
        violationsTypeId:id,
@@ -299,7 +334,7 @@
      params.startTime = this.value2[0]||''
      params.endTime = this.value2[1]||''
      basecase.baseCasePoolList(params).then(res=>{
        console.log(res)
                // console.log(res)
        this.gridData =res.records
        this.pageSizes =res.size
        this.currentPages =res.current
src/views/intelligentPatrol/studyJudge/index.vue
@@ -53,7 +53,11 @@
              >报警时间:{{ currentEvent.alarmTime }}</span
            >
          </div>
          <div class="img-item" v-for="item in imageList" :key="item.id">
                    <div
                        class="img-item"
                        v-for="item in imageList"
                        :key="item.id"
                    >
            <img :src="item" />
          </div>
          <el-form
@@ -88,9 +92,62 @@
          <!-- <iframe src="https://183.245.159.161:8282/OneMap/index.html#/OneMap?code=2&clientVersion=&skin=white&locale=zh&otherAuthor=allowable"></iframe> -->
        </div>
        <div class="sjm-content-right">
                    <div class="header">
                        <el-form
                            :inline="true"
                            :model="seachData"
                            class="demo-form-inline"
                        >
                            <el-form-item label="事件类型">
                                <el-cascader
                                    v-model="seachData.gradeId"
                                    :options="eventGradeOptions"
                                    :props="options"
                                    clearable
                                ></el-cascader>
                            </el-form-item>
                            <el-form-item label="发生点位">
                                <el-select
                                    v-model="seachData.videoId"
                                    placeholder="请选择"
                                >
                                    <el-option
                                        v-for="item in videoOptions"
                                        :key="item.id"
                                        :label="item.name"
                                        :value="item.id"
                                    ></el-option>
                                </el-select>
                            </el-form-item>
                            <el-form-item label="报警时间">
                                <el-date-picker
                                    v-model="seachData.alarmTime"
                                    type="daterange"
                                    align="right"
                                    unlink-panels
                                    range-separator="至"
                                    start-placeholder="开始日期"
                                    end-placeholder="结束日期"
                                >
                                </el-date-picker>
                            </el-form-item>
                            <el-form-item>
                                <el-button
                                    type="primary"
                                    @click="getInspectionData"
                                    >查询</el-button
                                >
                                <el-button type="primary" @click="resetAll"
                                    >重置</el-button
                                >
                            </el-form-item>
                        </el-form>
                    </div>
          <div class="card-box">
            <div class="but-live">
              <el-button size="small" @click="createVideo(currentEvent, 'live')"
                            <el-button
                                size="small"
                                @click="createVideo(currentEvent, 'live')"
                >实时预览</el-button
              >
              <el-button
@@ -138,9 +195,13 @@
                  />
                </el-select>
              </el-form-item>
              <el-form-item v-if="eventInfoData.store" label="店铺得分:">
                            <el-form-item
                                v-if="eventInfoData.store"
                                label="店铺得分:"
                            >
                <span>{{
                  selectStoreChange(eventInfoData.store).storeScore
                                    selectStoreChange(eventInfoData.store)
                                        .storeScore
                }}</span>
              </el-form-item>
              <el-form-item label="处理意见:" prop="state">
@@ -202,7 +263,9 @@
                <el-button @click.native.prevent="handleConfirm"
                  >确认</el-button
                >
                <el-button @click="pageChange('next')">下一条</el-button>
                                <el-button @click="pageChange('next')"
                                    >下一条</el-button
                                >
              </el-form-item>
            </el-form>
          </div>
@@ -224,7 +287,10 @@
      v-show="dialogCreate"
      :before-close="handleClose2"
    >
      <div class="dom" style="width: 100%; height: 600px; position: relative">
            <div
                class="dom"
                style="width: 100%; height: 600px; position: relative"
            >
        <div id="dom1" class="dom1"></div>
      </div>
    </el-dialog>
@@ -244,10 +310,14 @@
import InspectionTable from "@/views/intelligentPatrol/studyJudge/inspectionTable/index.vue";
// import MyMap from "@/components/map";
import MyMap from "@/components/map/leafletMap.vue";
import videoPoint from "@/api/system/videoPoint";
import { getTypeList } from "@/utils/helper"
export default {
  components: { MyDispatch, MyMap, InspectionTable },
  created() {
        this.loadVideo();
        this.loadEventGrade();
    this.getInspectionData();
    this.initEventParams();
    this.getInspectionCount();
@@ -276,7 +346,7 @@
  mounted() {
    this.timer = setInterval(() => {
      this.getInspectionCount();
    }, 1000 * 10);
        }, 1000 * 60 * 15);
  },
  data() {
    const validateCarNumber = (rule, value, callback) => {
@@ -366,9 +436,31 @@
      point: null,
      mark: null,
      zoom: null,
            eventGradeOptions: [],
            videoOptions: [],
            options: {
                label: 'name',
                value: 'id',
            },
            seachData: {}
    };
  },
  methods: {
        loadVideo() {
            videoPoint
                .getVideoPointList({
                    current: 1,
                    size: 1000
                })
                .then(({ records, total }) => {
                    this.videoOptions = records;
                })
        },
        loadEventGrade() {
            getTypeList("1", "02").then((result) => {
                this.eventGradeOptions = result;
            })
        },
    getInspectionCount() {
      basecase
        .getInspectionCountData({
@@ -392,9 +484,21 @@
    },
    getInspectionData() {
            let data = {
                current: this.currentPage,
                videoId: this.seachData.videoId,
            }
            if (this.seachData.alarmTime) {
                data.beginTime = this.seachData.alarmTime[0]
                data.endTime = this.seachData.alarmTime[1]
            } if (this.seachData.gradeId) {
                data.gradeId = this.seachData.gradeId[1]
            }
      basecase
        .getInspectionData({ current: this.currentPage })
        .then(({ records }) => {
                .getInspectionData(data)
                .then(({ records, total }) => {
                    this.countData.review = total
                    if (records.length > 0) {
          this.currentEvent = records[0];
          this.point = {
            x: this.currentEvent.longitude,
@@ -405,7 +509,7 @@
          if (this.currentEvent?.picData) {
            this.imageList = this.currentEvent.picData
              .split(",")
              .map((item) => `${FILE_ORIGINAL_URL}${item}`);
                                .map((item) => `${FILE_ORIGINAL_URL}sccg/API/img?fileUrl=${item}`);
          }
          if (
            this.currentEvent?.alarmTime ||
@@ -422,6 +526,10 @@
            this.currentEvent.conntinueTime = `${parseInt(
              CONTINUE_DAY
            )}天${parseInt(CONTINUE_HOURS)}小时`;
                        }
                    } else {
                        this.currentEvent = {}
                        this.$message("当前查询条件无数据");
          }
        })
        .catch((err) => this.$message.error(err));
@@ -642,6 +750,9 @@
      second = second < 10 ? "0" + second : second;
      return y + "-" + m + "-" + d + " " + h + ":" + minute + ":" + second;
    },
        resetAll() {
            this.seachData = {}
        }
  },
  beforeDestroy() {
    clearInterval(this.timer);
@@ -751,4 +862,7 @@
  height: 100%;
  min-width: 460px;
}
.header {
    line-height: normal;
}
</style>
src/views/systemSetting/device/point/index.vue
@@ -28,7 +28,7 @@
        <div
          v-for="item in videoData"
          :key="item.id"
          style="position: relative"
          style="position: relative;height:350px"
        >
          <div class="video-title">{{ item.name }}{{ item.community }}</div>
vue.config.js
@@ -40,7 +40,7 @@
      // 跨域配置
      "/sccg": {
        // target: `http://42.193.1.25/`,      //测试环境
        target: `http://192.168.3.240:8082/`,
        target: `http://127.0.0.1:8082/`,
        changeOrigin: true
      }
    },