wl
2022-12-29 d6fb18b49cd61427a343fbe7a2a4f94e4b597bdc
src/views/intelligentPatrol/illegalSearch/index.vue
@@ -4,8 +4,17 @@
      <div class="headerContent">
        <!-- 条件筛选 -->
        <el-form ref="condition" :model="form" label-width="100px">
          <el-form-item :label=item.label :key=item.id v-for="item in headerList">
            <el-input v-model="item.value" :placeholder="item.placeholder"></el-input>
          <el-form-item :label=item.label :key=item.id v-for="item in headerList" :prop="item.prop">
            <el-input v-if="item.type === 'input'" v-model="form[item.prop]" :placeholder="item.placeholder"></el-input>
            <el-cascader v-if="item.type === 'cascader'" :options="item.options"
              :props="{ value: 'id', label: 'regionName' }" v-model="form[item.prop]"
              :placeholder="item.placeholder"></el-cascader>
            <el-select v-if="item.type === 'select'" v-model="form[item.prop]" :placeholder="item.placeholder">
              <el-option v-for="option in item.options" :value="option.id" :key="option.id"
                :label="option.name"></el-option>
            </el-select>
            <el-date-picker v-if="item.type === 'timepick'" type="datetimerange" v-model="form[item.prop]"
              start-placeholder="开始日期" end-placeholder="结束日期" value-format="yyyy-MM-dd HH:mm:ss"></el-date-picker>
          </el-form-item>
        </el-form>
      </div>
@@ -15,31 +24,31 @@
        <!-- 按钮区域 -->
        <div class="main-btns">
          <div class="main-btns-left">
            <el-button icon="el-icon-download">下载图片</el-button>
            <el-button icon="el-icon-folder">导出</el-button>
<!--            <el-button icon="el-icon-download">下载图片</el-button>-->
            <el-button icon="el-icon-folder" @click="exportTableData">导出</el-button>
          </div>
          <div class="main-btns-right">
            <el-button icon="el-icon-search">查询</el-button>
            <el-button icon="el-icon-search" @click="searchTableData">查询</el-button>
            <el-button icon="el-icon-delete-solid" @click="handleReset">重置</el-button>
          </div>
        </div>
        <!-- 数据展示 -->
        <el-table ref="multipleTable"
          :header-cell-style="{ background: '#06122c', 'font-size': '12px', color: '#4b9bb7', 'font-weight': '650', 'line-height': '45px' }"
          :header-cell-style="{ 'font-weight': '650', 'line-height': '45px' }"
          :data="tableData" style="width: 100%" :row-class-name="tableRowClassName">
          <el-table-column type="selection" min-width="5">
          </el-table-column>
          <el-table-column prop="number" label="事件编号" min-width="10">
          <el-table-column prop="code" label="事件编号" min-width="10">
          </el-table-column>
          <el-table-column prop="type" label="违规类型" min-width="10">
          <el-table-column prop="typeName" label="违规类型" min-width="10">
          </el-table-column>
          <el-table-column prop="source" label="事件来源" min-width="10">
          <el-table-column prop="eventSource" label="事件来源" min-width="10">
          </el-table-column>
          <el-table-column prop="level" label="事件等级" min-width="10">
          <el-table-column prop="gradeName" label="事件等级" min-width="10">
          </el-table-column>
          <el-table-column prop="point" label="报警点位" min-width="10">
          <el-table-column prop="streetName" label="报警点位" min-width="10">
          </el-table-column>
          <el-table-column prop="org" label="所属组织" min-width="10">
          <el-table-column prop="site" label="所属组织" min-width="10">
          </el-table-column>
          <el-table-column prop="alarmTime" label="报警时间" min-width="12">
          </el-table-column>
@@ -49,7 +58,7 @@
          </el-table-column>
          <el-table-column prop="state" label="审核状态" min-width="10">
          </el-table-column>
          <el-table-column prop="advice" label="处理意见" min-width="10">
          <el-table-column prop="handlingOpinion" label="处理意见" min-width="10">
          </el-table-column>
          <el-table-column prop="operation" label="操作" min-width="15">
            <template slot-scope="scope">
@@ -60,10 +69,32 @@
          </el-table-column>
        </el-table>
      </div>
      <div class="tools">
        <div class="funs">
          <!-- <div class="funsItem">
                            <el-checkbox v-model="all" @change="selectAll()">全选</el-checkbox>
                        </div>
                        <div class="funsItem">
                            <el-checkbox v-model="unsame" @change="disSame(tableData)">反选</el-checkbox>
                        </div>
                        <div class="funsItem">
                            <el-select v-model="myIdx" placeholder="批量操作" @change="selectChange">
                                <el-option v-for="item in options" :key="item.value" :label="item.label"
                                    :value="item.value" :disabled="item.disabled">
                                </el-option>
                            </el-select>
                        </div> -->
        </div>
        <div class="pagination">
          <el-pagination background :current-page="currentPage" layout="prev, pager, next" :total="totalNum"
            :page-size="pageSize" @current-change="changeCurrentPage" @prev-click="handlePrev" @next-click="handleNext">
          </el-pagination>
        </div>
      </div>
    </main>
    <footer>
      <!-- 查看具体信息 -->
      <el-dialog title="事件详情" :visible.sync="dialogView" width="45%" :before-close="handleClose">
      <el-dialog title="事件详情" destroy-on-close :visible.sync="dialogView" width="45%" :before-close="handleClose">
        <ViewInfo :info="info"></ViewInfo>
      </el-dialog>
    </footer>
@@ -71,163 +102,169 @@
</template>
<script>
import helper from "@/utils/mydate.js"
import ViewInfo from './viewInfo'
import helper from "@/utils/mydate.js";
import ViewInfo from './viewInfo';
import basecase from "@/api/operate/basecase";
import department from "@/api/system/department";
import { getVideoPoint } from "@/api/operate/storeManagement";
export default {
  components: {
    ViewInfo
  },
  created() {
    this.getTableData();
    // 获取组织列表
    department.getDepartmentList()
      .then(res => {
        this.headerList[0].options = res;
      })
      .catch(err => this.$message.error(err))
    getVideoPoint({ current: 1, size: 100 })
      .then(({ records }) => {
        this.headerList[4].options = records;
      })
      .catch(err => this.$message.error(err))
  },
  data() {
    return {
      tableData: [
        {
          number: '123456',
          type: '人民路右二',
          source: '视频上报',
          level: '一般事件',
          point: '123.123,123.233',
          org: '人民部',
          alarmTime: '2022-02-12 12:00:00',
          continueTime: '2小时30分钟06秒',
          carNumber: '浙B245CM',
          state: '待审核',
          advice: '需及时处理'
        },
        {
          number: '123457',
          type: '人民路左二',
          source: '视频上报',
          level: '高发事件',
          point: '123.123,123.233',
          org: '人民部',
          alarmTime: '2022-02-12 12:00:00',
          continueTime: '2小时30分钟06秒',
          carNumber: '浙B245CM',
          state: '待审核',
          advice: '需及时处理'
        },
        {
          number: '123458',
          type: '人寿路右二',
          source: '视频上报',
          level: '一般事件',
          point: '123.123,123.233',
          org: '人民部',
          alarmTime: '2022-02-12 12:00:00',
          continueTime: '2小时30分钟06秒',
          carNumber: '浙B245CM',
          state: '待审核',
          advice: '需及时处理'
        },
        {
          number: '123459',
          type: '人民路右二',
          source: '视频上报',
          level: '一般事件',
          point: '123.123,123.233',
          org: '人民部',
          alarmTime: '2022-02-12 12:00:00',
          continueTime: '2小时30分钟06秒',
          carNumber: '浙B245CM',
          state: '待审核',
          advice: '需及时处理'
        },
        {
          number: '123460',
          type: '人民路右二',
          source: '视频上报',
          level: '一般事件',
          point: '123.123,123.233',
          org: '人民部',
          alarmTime: '2022-02-12 12:00:00',
          continueTime: '2小时30分钟06秒',
          carNumber: '浙B245CM',
          state: '待审核',
          advice: '需及时处理'
        }
      ],
      context: "",
      tableData: [],
      dialogView: false,
      info: '',
      info: null,
      currentPage: 1,
      pageSize: 10,
      totalNum: null,
      headerList: [
        {
          id: 1,
          label: '所属组织:',
          value: '',
          placeholder: '请输入所属组织'
          placeholder: '请输入所属组织',
          prop: 'organization',
          type: 'cascader',
          options: []
        },
        {
          id: 2,
          label: '报警时间:',
          value: '',
          placeholder: '请输入报警时间'
          placeholder: '请输入报警时间',
          prop: 'alarmTime',
          type: 'timepick'
        },
        {
          id: 3,
          label: '违规类型:',
          value: '',
          placeholder: '请输入违规类型'
          placeholder: '请输入违规类型',
          prop: 'typeId',
          type: 'input'
        },
        {
          id: 4,
          label: '事件编号:',
          value: '',
          placeholder: '请输入事件编号'
          placeholder: '请输入事件编号',
          prop: 'code',
          type: 'input'
        },
        {
          id: 5,
          label: '监控点名称:',
          value: '',
          placeholder: '请输入监控点名称'
          placeholder: '请输入监控点名称',
          prop: 'videoPointId',
          type: 'select',
          options: []
        },
        {
          id: 6,
          label: '审核状态:',
          value: '',
          placeholder: '请输入审核状态'
          placeholder: '请输入审核状态',
          type: 'select',
          options: [{ id: 7, name: '未审核' }, { id: 8, name: '已经审核' }, { id: 9, name: '结案' }]
        },
        {
          id: 7,
          label: '车牌号:',
          value: '',
          placeholder: '请输入车牌号'
          placeholder: '请输入车牌号',
          prop: 'carNumber',
          type: 'input'
        },
        {
          id: 8,
          label: '处理意见:',
          value: '',
          placeholder: '请输入事件等级'
          placeholder: '请输入事件等级',
          prop: 'handlingOpinion',
          type: 'input'
        },
        {
          id: 9,
          label: '报警时间:',
          label: '事件等级:',
          value: '',
          placeholder: '请输入所属组织'
          placeholder: '请输入事件等级',
          prop: 'gradeId',
          type: 'input'
        },
      ],
      form: {
        gradeId: null,
        alarmTime: null,
        handlingOpinion: null,
        streetId: null,
        typeId: null,
        code: null,
        carNumber: null,
        state: null,
        videoPointId: null,
        organization: null
      }
    }
  },
  methods: {
    getTableData(params) {
      basecase.getViolationList({ current: this.currentPage, pageSize: this.pageSize, ...params })
        .then(({ records, total }) => {
          this.tableData = records;
          this.totalNum = total;
        })
        .catch(err => this.$message.error(err))
    },
    searchTableData() {
      const { alarmTime, organization } = this.form;
      const [startTime, endTime] = alarmTime ?? [null, null];
      const [communityId, streetId] = organization ?? [null, null];
      const params = Object.assign({}, this.form);
      delete params.alarmTime;
      delete params.organization;
      this.getTableData({ startTime, streetId, communityId, endTime, ...params });
    },
    changeTime({ createTime }) {
      return helper(createTime);
    },
    // 设置表格斑马纹
    tableRowClassName({ row, rowIndex }) {
      if ((rowIndex + 1) % 2 == 0) {
      if ((rowIndex + 1) % 2 === 0) {
        return 'warning-row';
      } else {
        return 'success-row';
      }
      return '';
    },
    // 表单重置
    handleReset() {
      this.headerList.forEach(item => {
        item.value = ''
      })
      this.currentPage = 1;
      this.$refs.condition.resetFields();
      this.getTableData();
    },
    // 关闭弹窗
    handleClose(done) {
@@ -237,15 +274,74 @@
    handleView(data) {
      this.info = data
      this.dialogView = true
      console.log(data)
    },
    // 自定义关闭弹窗
    // myCloseDialog({flag,str,index}){
    //   console.log( this[str])
    //   if(index === 0){
    //   }
    // }
    // 当前页改变触发事件
    changeCurrentPage(page) {
      const { alarmTime, organization } = this.form;
      const [startTime, endTime] = alarmTime ?? [null, null];
      const [communityId, streetId] = organization ?? [null, null];
      const params = Object.assign({}, this.form);
      delete params.alarmTime;
      delete params.organization;
      this.currentPage = page;
      this.getTableData({ startTime, streetId, communityId, endTime, ...params });
    },
    // 上一页点击事件
    handlePrev(page) {
      const { alarmTime, organization } = this.form;
      const [startTime, endTime] = alarmTime ?? [null, null];
      const [communityId, streetId] = organization ?? [null, null];
      const params = Object.assign({}, this.form);
      delete params.alarmTime;
      delete params.organization;
      this.currentPage = page;
      this.getTableData({ startTime, streetId, communityId, endTime, ...params });
    },
    // 下一页点击事件
    handleNext(page) {
      const { alarmTime, organization } = this.form;
      const [startTime, endTime] = alarmTime ?? [null, null];
      const [communityId, streetId] = organization ?? [null, null];
      const params = Object.assign({}, this.form);
      delete params.alarmTime;
      delete params.organization;
      this.currentPage = page;
      this.getTableData({ startTime, streetId, communityId, endTime, ...params });
    },
    exportTableData() {
      basecase.exportViolationData({ current: 1 })
          .then((res) => {
            console.log(res)
            this.$message.success('操作成功');
            // let res = basecase.exportUserOperationLogAjax({
            //   startLogTime: transDate(this.searchQuery.date[0], "YYYY-MM-DD"),
            //   endLogTime: transDate(this.searchQuery.date[1], "YYYY-MM-DD"),
            //   systemName: this.searchQuery.systemName,
            //   userName: this.searchQuery.user,
            // }).then((res)=>{
            //   console.log(res)
            // });
            let time = new Date()
            let deathdate =time.toLocaleDateString()
            const blob = new Blob([res.data], {
              type: "application/vnd.ms-excel;charset=utf-8",
            });
            if (window.navigator.msSaveBlob) {
              window.navigator.msSaveBlob(blob, deathdate+"违规数据" + ".xlsx");
            } else {
              const url = window.URL.createObjectURL(blob);
              const link = document.createElement("a");
              link.style.display = "none";
              link.href = url;
              link.download = deathdate+"违规数据" + ".xlsx";
              document.body.appendChild(link);
              link.click();
              document.body.removeChild(link);
            }
          })
          .catch(err => this.$message.error(err))
    }
  }
}
</script>
@@ -256,8 +352,7 @@
  color: #4b9bb7;
  header {
    background-color: #09152f;
    border: 1pox solid #fff;
    background-color: white;
    .headerContent {
      padding: 20px 40px;
@@ -282,10 +377,9 @@
  }
  main {
    background-color: #09152f;
    background-color: #ffffff;
    margin-top: 20px;
    padding-bottom: 50px;
    border: 1pox solid #fff;
    .mainTitle {
      line-height: 60px;
@@ -298,14 +392,16 @@
      padding: 0 20px;
      .el-button {
        background-color: #17324c;
        background-color: #2f91ec;
        border: 1px solid #17324c;
        color: #4b9bb7;
        color: #ffffff;
      }
    }
    .el-table{
      color: #4b9bb7;
    .el-table {
      // color: #4b9bb7;
    }
    .tools {
      display: flex;
      justify-content: space-between;
@@ -332,12 +428,13 @@
            padding: 0 10px;
          }
          .el-select {
            width: 120px;
          }
          &::v-deep .el-input__inner {
            border: none;
            background-color: #09152f;
          }}}}}}
            // background-color: #09152f;
          }
        }
      }
    }
  }
}
</style>