MrShi
2023-12-21 36c96b755fde8a7cfee6b605ccaff09ca0731b85
Mr.Shi
已修改8个文件
498 ■■■■ 文件已修改
admin/src/api/business/device.js 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/api/business/visitEvent.js 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/utils/util.js 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/views/business/carEvent.vue 123 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/views/business/device.vue 46 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/views/business/deviceEvent.vue 115 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/views/business/retention.vue 61 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/views/business/visitEvent.vue 117 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/api/business/device.js
@@ -7,6 +7,11 @@
  })
}
// 同步
export function syncDevices (data) {
  return request.post('/business/erpsync/syncDevices', data)
}
// 修改
export function updateById (data) {
  return request.post('/business/device/updateById', data)
admin/src/api/business/visitEvent.js
@@ -6,3 +6,11 @@
    trim: true
  })
}
// 导出Excel
export function exportExcel (data) {
  return request.post('/business/visitEvent/exportExcel', data, {
    trim: true,
    download: true
  })
}
admin/src/utils/util.js
@@ -18,3 +18,26 @@
  }
  return data
}
export function timeForMat (count) {
  // 拼接时间
  const time1 = new Date()
  const time2 = new Date()
  if (count === 1) {
    time1.setTime(time1.getTime() - (24 * 60 * 60 * 1000))
  } else {
    time1.setTime(time1.getTime())
  }
  const Y1 = time1.getFullYear()
  const M1 = ((time1.getMonth() + 1) > 9 ? (time1.getMonth() + 1) : '0' + (time1.getMonth() + 1))
  const D1 = (time1.getDate() > 9 ? time1.getDate() : '0' + time1.getDate())
  const timer1 = Y1 + '-' + M1 + '-' + D1 + ' ' + '23:59:59' // 当前时间
  time2.setTime(time2.getTime() - (24 * 60 * 60 * 1000 * count))
  const Y2 = time2.getFullYear()
  const M2 = ((time2.getMonth() + 1) > 9 ? (time2.getMonth() + 1) : '0' + (time2.getMonth() + 1))
  const D2 = (time2.getDate() > 9 ? time2.getDate() : '0' + time2.getDate())
  const timer2 = Y2 + '-' + M2 + '-' + D2 + ' ' + '00:00:00' // 之前的7天或者30天
  return [timer2, timer1]
}
admin/src/views/business/carEvent.vue
@@ -1,49 +1,47 @@
<template>
    <TableLayout :permissions="['business:category:query']">
    <TableLayout :permissions="['business:carevent:query']">
        <!-- 搜索表单 -->
        <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="100px" inline>
            <el-form-item label="车牌号" prop="plateNos">
                <el-input v-model="searchForm.plateNos" placeholder="请输入车牌号" @keypress.enter.native="search"></el-input>
            </el-form-item>
            <el-form-item label="姓名/手机号" prop="plateNos">
                <el-input v-model="searchForm.plateNos" placeholder="请输入姓名/手机号" @keypress.enter.native="search"></el-input>
            <el-form-item label="姓名/手机号" prop="keyWords">
                <el-input v-model="searchForm.keyWords" placeholder="请输入姓名/手机号" @keypress.enter.native="search"></el-input>
            </el-form-item>
            <el-form-item label="公司/部门名称" prop="plateNos">
                <el-input v-model="searchForm.plateNos" placeholder="请输入公司/部门名称" @keypress.enter.native="search"></el-input>
            <el-form-item label="公司/部门名称" prop="companyName">
                <el-input v-model="searchForm.companyName" placeholder="请输入公司/部门名称" @keypress.enter.native="search"></el-input>
            </el-form-item>
            <el-form-item label="人员类型" prop="plateNos">
                <el-select v-model="searchForm.plateNos" placeholder="请选择">
                    <el-option
                        v-for="item in options"
                        :key="item.value"
                        :label="item.label"
                        :value="item.value">
                    </el-option>
            <el-form-item label="人员类型" prop="memberType">
                <el-select v-model="searchForm.memberType" placeholder="请选择">
                    <el-option label="劳务访客" value="0"></el-option>
                    <el-option label="普通访客" value="1"></el-option>
                    <el-option label="内部人员" value="2"></el-option>
                </el-select>
            </el-form-item>
            <el-form-item label="事件类型" prop="eventType">
                <el-select v-model="searchForm.eventType" placeholder="请选择">
                    <el-option
                        v-for="item in options"
                        :key="item.value"
                        :label="item.label"
                        :value="item.value">
                    </el-option>
                    <el-option label="入场压线事件" value="771760130"></el-option>
                    <el-option label="入场放行事件" value="771760131"></el-option>
                    <el-option label="出场压线事件" value="771760133"></el-option>
                    <el-option label="出场放行事件" value="771760134"></el-option>
                </el-select>
            </el-form-item>
            <el-form-item label="起始时间" prop="eventType">
                <el-date-picker
                    v-model="searchForm.eventType"
                    type="daterange"
                    @change="seleTime"
                    v-model="time"
                    type="datetimerange"
                    format="yyyy-MM-dd HH:mm:ss"
                    value-format="yyyy-MM-dd HH:mm:ss"
                    range-separator="至"
                    start-placeholder="开始日期"
                    end-placeholder="结束日期">
                </el-date-picker>
            </el-form-item>
            <el-radio-group v-model="searchForm.eventType" size="small">
                <el-radio-button label="当天"></el-radio-button>
                <el-radio-button label="近7天"></el-radio-button>
                <el-radio-button label="近30天"></el-radio-button>
            <el-radio-group v-model="searchForm.radio" size="small" @input="changeRadio">
                <el-radio-button label="0">当天</el-radio-button>
                <el-radio-button label="1">近7天</el-radio-button>
                <el-radio-button label="2">近30天</el-radio-button>
            </el-radio-group>
            <section>
                <el-button type="primary" @click="search">搜索</el-button>
@@ -52,8 +50,8 @@
        </el-form>
        <!-- 表格和分页 -->
        <template v-slot:table-wrap>
            <ul class="toolbar" v-permissions="['business:member:create', 'business:member:delete']">
                <li><el-button type="primary" v-permissions="['business:member:create']">导出</el-button></li>
            <ul class="toolbar" v-permissions="['business:carevent:exportExcel']">
                <li><el-button type="primary" v-permissions="['business:carevent:exportExcel']">导出</el-button></li>
            </ul>
            <el-table
                v-loading="isWorking.search"
@@ -61,20 +59,34 @@
                stripe
            >
                <el-table-column prop="plateNos" label="车牌号" min-width="100px"></el-table-column>
                <el-table-column prop="plateNos" label="归属用户类型" min-width="100px"></el-table-column>
                <el-table-column prop="plateNos" label="姓名" min-width="100px"></el-table-column>
                <el-table-column prop="plateNos" label="手机号" min-width="100px"></el-table-column>
                <el-table-column prop="plateNos" label="公司/部门" min-width="100px"></el-table-column>
                <el-table-column label="归属用户类型" min-width="100px">
                    <template slot-scope="{row}">
                        <span v-if="row.personType === '0'">劳务访客</span>
                        <span v-if="row.personType === '1'">普通访客</span>
                        <span v-if="row.personType === '2'">内部人员</span>
                    </template>
                </el-table-column>
                <el-table-column prop="personName" label="姓名" min-width="100px"></el-table-column>
                <el-table-column prop="personPhone" label="手机号" min-width="100px"></el-table-column>
                <el-table-column prop="personCompanyName" label="公司/部门" min-width="100px"></el-table-column>
                <el-table-column prop="parkName" label="停车库名称" min-width="100px"></el-table-column>
                <el-table-column prop="gateName" label="出入口名称" min-width="100px"></el-table-column>
                <el-table-column prop="eventType" label="事件类型" min-width="100px"></el-table-column>
                <el-table-column prop="inoutType" label="出入类型" min-width="100px">
                <el-table-column prop="eventTypeName" label="事件类型" min-width="100px"></el-table-column>
                <el-table-column label="出入类型" min-width="100px">
                    <template slot-scope="{row}">
                        <span v-if="row.inoutType === 0">进场</span>
                        <span v-if="row.inoutType === 1">出场</span>
                    </template>
                </el-table-column>
                <el-table-column prop="vehiclePicUrl" label="抓拍图片" min-width="100px"></el-table-column>
                <el-table-column label="抓拍图片" min-width="100px">
                    <template slot-scope="{row}">
                        <el-image
                            style="width: 80px; height: 80px"
                            :src="row.vehiclePicUrl"
                            :preview-src-list="[row.vehiclePicUrl]">
                        </el-image>
                    </template>
                </el-table-column>
                <el-table-column prop="happenTime" label="事件时间" min-width="100px"></el-table-column>
            </el-table>
            <pagination
@@ -91,6 +103,7 @@
import BaseTable from '@/components/base/BaseTable'
import TableLayout from '@/layouts/TableLayout'
import Pagination from '@/components/common/Pagination'
import { timeForMat } from '@/utils/util'
export default {
  name: 'CarEvent',
  extends: BaseTable,
@@ -100,9 +113,15 @@
      // 搜索
      searchForm: {
        eventType: '',
        plateNos: ''
        keyWords: '',
        plateNos: '',
        memberType: '',
        companyName: '',
        startTime: '',
        endTime: '',
        radio: null
      },
      options: []
      time: []
    }
  },
  created () {
@@ -113,6 +132,38 @@
      'field.main': 'id'
    })
    this.search()
  },
  methods: {
    reset () {
      this.$refs.searchForm.resetFields()
      this.searchForm.startTime = ''
      this.searchForm.endTime = ''
      this.time = []
      this.searchForm.radio = null
      this.search()
    },
    changeRadio (e) {
      if (e === '0') {
        this.searchForm.startTime = timeForMat(1)[0]
        this.searchForm.endTime = timeForMat(1)[1]
        this.time = timeForMat(1)
      } else if (e === '1') {
        this.searchForm.startTime = timeForMat(7)[0]
        this.searchForm.endTime = timeForMat(7)[1]
        this.time = timeForMat(7)
      } else if (e === '2') {
        this.searchForm.startTime = timeForMat(30)[0]
        this.searchForm.endTime = timeForMat(30)[1]
        this.time = timeForMat(30)
      }
      this.search()
    },
    seleTime (e) {
      this.searchForm.startTime = e[0]
      this.searchForm.endTime = e[1]
      this.searchForm.radio = null
      this.search()
    }
  }
}
</script>
admin/src/views/business/device.vue
@@ -1,18 +1,15 @@
<template>
    <TableLayout :permissions="['business:company:query']">
    <TableLayout :permissions="['business:device:query']">
        <!-- 搜索表单 -->
        <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="100px" inline>
            <el-form-item label="门禁名称" prop="title">
                <el-input v-model="searchForm.title" placeholder="请输入门禁名称" @keypress.enter.native="search"></el-input>
            <el-form-item label="门禁名称" prop="name">
                <el-input v-model="searchForm.name" placeholder="请输入门禁名称" @keypress.enter.native="search"></el-input>
            </el-form-item>
            <el-form-item label="门禁等级" prop="level">
                <el-select v-model="searchForm.level" placeholder="请选择门禁等级" @keypress.enter.native="search">
                    <el-option
                        v-for="item in options"
                        :key="item.value"
                        :label="item.label"
                        :value="item.value">
                    </el-option>
                    <el-option label="一级门禁" value="1"></el-option>
                    <el-option label="二级门禁" value="2"></el-option>
                    <el-option label="三级门禁" value="3"></el-option>
                </el-select>
            </el-form-item>
            <section>
@@ -23,7 +20,7 @@
        <!-- 表格和分页 -->
        <template v-slot:table-wrap>
            <ul class="toolbar">
                <li><el-button type="primary">同步</el-button></li>
                <li><el-button type="primary" @click="synchronousData">同步</el-button></li>
            </ul>
            <el-table
                v-loading="isWorking.search"
@@ -32,16 +29,16 @@
            >
                <el-table-column prop="manufature" label="厂商" min-width="100px"></el-table-column>
                <el-table-column prop="no" label="设备编号" min-width="100px"></el-table-column>
                <el-table-column prop="title" label="门禁名称" min-width="100px"></el-table-column>
                <el-table-column prop="name" label="门禁名称" min-width="100px"></el-table-column>
                <el-table-column prop="level" label="门禁等级" min-width="100px"></el-table-column>
                <el-table-column prop="status" label="设备状态 0禁用 1启用" min-width="100px">
                <el-table-column prop="status" label="设备状态" min-width="100px">
                    <template slot-scope="{row}">
                        <span v-if="row.status === 0">禁用</span>
                        <span v-if="row.status === 1">启用</span>
                    </template>
                </el-table-column>
                <el-table-column
                    v-if="containPermissions(['business:company:update'])"
                    v-if="containPermissions(['business:device:update'])"
                    label="操作"
                    min-width="120"
                    fixed="right"
@@ -68,6 +65,7 @@
import TableLayout from '@/layouts/TableLayout'
import Pagination from '@/components/common/Pagination'
import OperaDeviceWindow from '@/components/business/OperaDeviceWindow'
import { syncDevices } from '@/api/business/device'
export default {
  name: 'Device',
  extends: BaseTable,
@@ -76,7 +74,7 @@
    return {
      // 搜索
      searchForm: {
        title: '',
        name: '',
        level: ''
      },
      options: []
@@ -90,6 +88,26 @@
      'field.main': 'id'
    })
    this.search()
  },
  methods: {
    synchronousData () {
      this.$confirm('确认同步吗?', '提示', {
        confirmButtonText: '确定',
        cancelButtonText: '取消',
        type: 'warning'
      }).then(() => {
        syncDevices({})
          .then(res => {
            this.$message({
              type: 'success',
              message: '同步成功'
            })
            this.search()
          })
      }).catch(() => {
      })
    }
  }
}
</script>
admin/src/views/business/deviceEvent.vue
@@ -1,53 +1,53 @@
<template>
    <TableLayout :permissions="['business:member:query']">
    <TableLayout :permissions="['business:deviceevent:query']">
        <!-- 搜索表单 -->
        <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="100px" inline>
            <el-form-item label="姓名/手机号" prop="eventType">
                <el-input v-model="searchForm.eventType" placeholder="请输入姓名/手机号" @keypress.enter.native="search"></el-input>
            <el-form-item label="姓名/手机号" prop="keyWords">
                <el-input v-model="searchForm.keyWords" placeholder="请输入姓名/手机号" @keypress.enter.native="search"></el-input>
            </el-form-item>
            <el-form-item label="公司/组织名称" prop="eventType">
                <el-input v-model="searchForm.eventType" placeholder="请输入公司/组织名称" @keypress.enter.native="search"></el-input>
            <el-form-item label="公司/组织名称" prop="personCompanyName">
                <el-input v-model="searchForm.personCompanyName" placeholder="请输入公司/组织名称" @keypress.enter.native="search"></el-input>
            </el-form-item>
            <el-form-item label="人员类型" prop="userType">
                <el-select v-model="searchForm.userType" placeholder="请选择">
                    <el-option label="未知" value="0"></el-option>
                    <el-option label="普通" value="1"></el-option>
                    <el-option label="来宾" value="2"></el-option>
                    <el-option label="黑名单" value="3"></el-option>
                    <el-option label="管理员" value="4"></el-option>
            <el-form-item label="人员类型" prop="personType">
                <el-select v-model="searchForm.personType" placeholder="请选择">
                    <el-option label="劳务访客" value="0"></el-option>
                    <el-option label="普通访客" value="1"></el-option>
                    <el-option label="内部人员" value="2"></el-option>
                </el-select>
            </el-form-item>
            <el-form-item label="事件类型" prop="eventType">
                <el-select v-model="searchForm.eventType" placeholder="请选择">
                    <el-option label="未知" value="0"></el-option>
                    <el-option label="普通" value="1"></el-option>
                    <el-option label="来宾" value="2"></el-option>
                    <el-option label="黑名单" value="3"></el-option>
                    <el-option label="管理员" value="4"></el-option>
                    <el-option label="人脸认证失败" value="197163"></el-option>
                    <el-option label="人脸认证通过" value="196893"></el-option>
                </el-select>
            </el-form-item>
            <el-form-item label="起始时间" prop="eventType">
                <el-date-picker
                    v-model="searchForm.eventType"
                    type="daterange"
                    @change="seleTime"
                    v-model="time"
                    type="datetimerange"
                    format="yyyy-MM-dd HH:mm:ss"
                    value-format="yyyy-MM-dd HH:mm:ss"
                    range-separator="至"
                    start-placeholder="开始日期"
                    end-placeholder="结束日期">
                </el-date-picker>
            </el-form-item>
            <el-radio-group v-model="searchForm.eventType" size="small">
                <el-radio-button label="当天"></el-radio-button>
                <el-radio-button label="近7天"></el-radio-button>
                <el-radio-button label="近30天"></el-radio-button>
            <el-radio-group v-model="searchForm.radio" size="small" @input="changeRadio">
                <el-radio-button label="0">当天</el-radio-button>
                <el-radio-button label="1">近7天</el-radio-button>
                <el-radio-button label="2">近30天</el-radio-button>
            </el-radio-group>
            <section>
                <el-button type="primary" @click="search">搜索</el-button>
                <el-button type="primary" :loading="isWorking.export" v-permissions="['business:member:exportExcel']" @click="exportExcel">导出</el-button>
                <el-button @click="reset">重置</el-button>
            </section>
        </el-form>
        <!-- 表格和分页 -->
        <template v-slot:table-wrap>
            <ul class="toolbar" v-permissions="['business:deviceevent:exportExcel']">
                <li><el-button type="primary" :loading="isWorking.export" v-permissions="['business:deviceevent:exportExcel']" @click="exportExcel">导出</el-button></li>
            </ul>
            <el-table
                v-loading="isWorking.search"
                :data="tableData.list"
@@ -63,12 +63,26 @@
                <el-table-column prop="name" label="姓名" min-width="100px"></el-table-column>
                <el-table-column prop="phone" label="手机号" min-width="100px"></el-table-column>
                <el-table-column prop="idcard" label="身份证号码" min-width="100px"></el-table-column>
                <el-table-column prop="company" label="公司/组织" min-width="100px"></el-table-column>
                <el-table-column prop="srcName" label="门禁名称" min-width="100px"></el-table-column>
                <el-table-column prop="personCompanyName" label="公司/组织" min-width="100px"></el-table-column>
                <el-table-column prop="devName" label="门禁名称" min-width="100px"></el-table-column>
                <el-table-column prop="srcName" label="门禁点" min-width="100px"></el-table-column>
                <el-table-column prop="eventType" label="事件类型" min-width="100px"></el-table-column>
                <el-table-column prop="eventType" label="出入类型" min-width="100px"></el-table-column>
                <el-table-column prop="extEventPictureURL" label="抓拍照片" min-width="100px"></el-table-column>
                <el-table-column prop="eventTypeName" label="事件类型" min-width="100px"></el-table-column>
                <el-table-column label="出入类型" min-width="100px">
                    <template slot-scope="{row}">
                        <span v-if="row.extEventInOut === 1">进</span>
                        <span v-if="row.extEventInOut === 0">出</span>
                        <span v-if="row.extEventInOut === -1">未知</span>
                    </template>
                </el-table-column>
                <el-table-column label="抓拍照片" min-width="100px">
                    <template slot-scope="{row}">
                        <el-image
                            style="width: 80px; height: 80px"
                            :src="row.extEventPictureURL"
                            :preview-src-list="[row.extEventPictureURL]">
                        </el-image>
                    </template>
                </el-table-column>
                <el-table-column prop="happenTime" label="事件时间" min-width="100px"></el-table-column>
            </el-table>
            <pagination
@@ -85,6 +99,7 @@
import BaseTable from '@/components/base/BaseTable'
import TableLayout from '@/layouts/TableLayout'
import Pagination from '@/components/common/Pagination'
import { timeForMat } from '@/utils/util'
export default {
  name: 'DeviceEvent',
  extends: BaseTable,
@@ -93,9 +108,15 @@
    return {
      // 搜索
      searchForm: {
        keyWords: '',
        personCompanyName: '',
        personType: '',
        eventType: '',
        userType: ''
      }
        startTime: '',
        endTime: '',
        radio: null
      },
      time: []
    }
  },
  created () {
@@ -106,6 +127,38 @@
      'field.main': 'id'
    })
    this.search()
  },
  methods: {
    changeRadio (e) {
      if (e === '0') {
        this.searchForm.startTime = timeForMat(1)[0]
        this.searchForm.endTime = timeForMat(1)[1]
        this.time = timeForMat(1)
      } else if (e === '1') {
        this.searchForm.startTime = timeForMat(7)[0]
        this.searchForm.endTime = timeForMat(7)[1]
        this.time = timeForMat(7)
      } else if (e === '2') {
        this.searchForm.startTime = timeForMat(30)[0]
        this.searchForm.endTime = timeForMat(30)[1]
        this.time = timeForMat(30)
      }
      this.search()
    },
    seleTime (e) {
      this.searchForm.startTime = e[0]
      this.searchForm.endTime = e[1]
      this.searchForm.radio = null
      this.search()
    },
    reset () {
      this.$refs.searchForm.resetFields()
      this.searchForm.startTime = ''
      this.searchForm.endTime = ''
      this.time = []
      this.searchForm.radio = null
      this.search()
    }
  }
}
</script>
admin/src/views/business/retention.vue
@@ -1,15 +1,12 @@
<template>
    <TableLayout :permissions="['business:member:query']">
    <TableLayout :permissions="['business:retention:query']">
        <!-- 搜索表单 -->
        <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="100px" inline>
            <el-form-item label="姓名" prop="name">
                <el-input v-model="searchForm.name" placeholder="请输入姓名" @keypress.enter.native="search"></el-input>
            <el-form-item label="姓名/手机号" prop="keyWords">
                <el-input v-model="searchForm.keyWords" placeholder="请输入姓名/手机号" @keypress.enter.native="search"></el-input>
            </el-form-item>
            <el-form-item label="手机号" prop="phone">
                <el-input v-model="searchForm.phone" placeholder="请输入手机号" @keypress.enter.native="search"></el-input>
            </el-form-item>
            <el-form-item label="公司/部门名称" prop="companyId">
                <el-input v-model="searchForm.companyId" placeholder="请输入公司/部门名称" @keypress.enter.native="search"></el-input>
            <el-form-item label="公司/部门名称" prop="companyName">
                <el-input v-model="searchForm.companyName" placeholder="请输入公司/部门名称" @keypress.enter.native="search"></el-input>
            </el-form-item>
            <el-form-item label="人员类型" prop="type">
                <el-select v-model="searchForm.type" placeholder="请选择">
@@ -18,10 +15,13 @@
                    <el-option label="内部员工" value="2"></el-option>
                </el-select>
            </el-form-item>
            <el-form-item label="起始时间" prop="companyId">
            <el-form-item label="起始时间" prop="startTime">
                <el-date-picker
                    v-model="searchForm.companyId"
                    type="daterange"
                    @change="seleTime"
                    v-model="time"
                    type="datetimerange"
                    format="yyyy-MM-dd HH:mm:ss"
                    value-format="yyyy-MM-dd HH:mm:ss"
                    range-separator="至"
                    start-placeholder="开始日期"
                    end-placeholder="结束日期">
@@ -34,8 +34,8 @@
        </el-form>
        <!-- 表格和分页 -->
        <template v-slot:table-wrap>
            <ul class="toolbar" v-permissions="['business:member:create', 'business:member:delete']">
                <li><el-button type="primary" :loading="isWorking.export" v-permissions="['business:member:exportExcel']" @click="exportExcel">导出</el-button></li>
            <ul class="toolbar" v-permissions="['business:retention:exportExcel']">
                <li><el-button type="primary" :loading="isWorking.export" v-permissions="['business:retention:exportExcel']" @click="exportExcel">导出</el-button></li>
            </ul>
            <el-table
                v-loading="isWorking.search"
@@ -44,7 +44,7 @@
                @selection-change="handleSelectionChange"
            >
                <el-table-column type="selection" width="55"></el-table-column>
                <el-table-column prop="companyId" label="公司/组织" min-width="100px"></el-table-column>
                <el-table-column prop="companyName" label="公司/组织" min-width="100px"></el-table-column>
                <el-table-column prop="type" label="人员类型" min-width="100px">
                    <template slot-scope="{row}">
                        <span v-if="row.type === 0">劳务访客</span>
@@ -54,10 +54,14 @@
                </el-table-column>
                <el-table-column prop="name" label="姓名" min-width="100px"></el-table-column>
                <el-table-column prop="phone" label="手机号" min-width="100px"></el-table-column>
                <el-table-column prop="idcardNo" label="身份证号" min-width="100px"></el-table-column>
                <el-table-column prop="eventDate" label="进场门禁" min-width="100px"></el-table-column>
                <el-table-column prop="idcardNo" label="身份证号" min-width="130px"></el-table-column>
                <el-table-column prop="deviceName" label="进场门禁" min-width="100px"></el-table-column>
                <el-table-column prop="eventDate" label="进场时间" min-width="100px"></el-table-column>
                <el-table-column prop="faceImg" label="进场抓拍照片" min-width="100px"></el-table-column>
                <el-table-column label="进场抓拍照片" min-width="100px">
                    <template slot-scope="{row}">
                        <el-image style="width: 80px; height: 80px;" :src="row.faceImg"></el-image>
                    </template>
                </el-table-column>
            </el-table>
            <pagination
                @size-change="handleSizeChange"
@@ -81,11 +85,13 @@
    return {
      // 搜索
      searchForm: {
        companyId: '',
        companyName: '',
        type: '',
        name: '',
        phone: ''
      }
        keyWords: '',
        startTime: '',
        endTime: ''
      },
      time: []
    }
  },
  created () {
@@ -96,6 +102,19 @@
      'field.main': 'id'
    })
    this.search()
  },
  methods: {
    reset () {
      this.$refs.searchForm.resetFields()
      this.searchForm.startTime = ''
      this.searchForm.endTime = ''
      this.time = []
      this.search()
    },
    seleTime (e) {
      this.searchForm.startTime = e[0]
      this.searchForm.endTime = e[1]
    }
  }
}
</script>
admin/src/views/business/visitEvent.vue
@@ -1,52 +1,38 @@
<template>
    <TableLayout :permissions="['business:member:query']">
    <TableLayout :permissions="['business:visitevent:query']">
        <!-- 搜索表单 -->
        <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="100px" inline>
            <el-form-item label="姓名" prop="personName">
                <el-input v-model="searchForm.personName" placeholder="请输入姓名" @keypress.enter.native="search"></el-input>
            </el-form-item>
            <el-form-item label="手机号码" prop="endTime">
                <el-input v-model="searchForm.endTime" placeholder="请输入手机号码" @keypress.enter.native="search"></el-input>
            <el-form-item label="姓名/手机号" prop="keyWords">
                <el-input v-model="searchForm.keyWords" placeholder="请输入姓名/手机号" @keypress.enter.native="search"></el-input>
            </el-form-item>
            <el-form-item label="车牌号" prop="carNo">
                <el-input v-model="searchForm.carNo" placeholder="请输入车牌号" @keypress.enter.native="search"></el-input>
            </el-form-item>
            <el-form-item label="公司名称" prop="endTime">
                <el-input v-model="searchForm.endTime" placeholder="请输入公司名称" @keypress.enter.native="search"></el-input>
            <el-form-item label="公司名称" prop="companyName">
                <el-input v-model="searchForm.companyName" placeholder="请输入公司名称" @keypress.enter.native="search"></el-input>
            </el-form-item>
            <el-form-item label="设备类型" prop="carNo">
                <el-select v-model="searchForm.carNo" placeholder="请选择">
                    <el-option
                        v-for="item in options"
                        :key="item.value"
                        :label="item.label"
                        :value="item.value">
                    </el-option>
                </el-select>
            </el-form-item>
            <el-form-item label="出入类型" prop="carNo">
                <el-select v-model="searchForm.carNo" placeholder="请选择">
                    <el-option
                        v-for="item in options"
                        :key="item.value"
                        :label="item.label"
                        :value="item.value">
                    </el-option>
            <el-form-item label="事件类型" prop="eventType">
                <el-select v-model="searchForm.eventType" placeholder="请选择">
                    <el-option label="访客登记" value="1392513025"></el-option>
                    <el-option label="访客签离" value="1392513026"></el-option>
                </el-select>
            </el-form-item>
            <el-form-item label="起始时间" prop="carNo">
                <el-date-picker
                    v-model="searchForm.carNo"
                    type="daterange"
                    @change="seleTime"
                    v-model="time"
                    type="datetimerange"
                    format="yyyy-MM-dd HH:mm:ss"
                    value-format="yyyy-MM-dd HH:mm:ss"
                    range-separator="至"
                    start-placeholder="开始日期"
                    end-placeholder="结束日期">
                </el-date-picker>
            </el-form-item>
            <el-radio-group v-model="searchForm.eventType" size="small">
                <el-radio-button label="当天"></el-radio-button>
                <el-radio-button label="近7天"></el-radio-button>
                <el-radio-button label="近30天"></el-radio-button>
            <el-radio-group v-model="searchForm.radio" size="small" @input="changeRadio">
                <el-radio-button label="0">当天</el-radio-button>
                <el-radio-button label="1">近7天</el-radio-button>
                <el-radio-button label="2">近30天</el-radio-button>
            </el-radio-group>
            <section>
                <el-button type="primary" @click="search">搜索</el-button>
@@ -55,22 +41,31 @@
        </el-form>
        <!-- 表格和分页 -->
        <template v-slot:table-wrap>
            <ul class="toolbar" v-permissions="['business:visitevent:exportExcel']">
                <li><el-button type="primary" :loading="isWorking.export" v-permissions="['business:visitevent:exportExcel']" @click="exportExcel">导出</el-button></li>
            </ul>
            <el-table
                v-loading="isWorking.search"
                :data="tableData.list"
                stripe
            >
                <el-table-column prop="personName" label="姓名" min-width="100px"></el-table-column>
                <el-table-column prop="endTime" label="手机号码" min-width="100px"></el-table-column>
                <el-table-column prop="personPhone" label="手机号码" min-width="100px"></el-table-column>
                <el-table-column prop="idNo" label="身份证号码" min-width="100px"></el-table-column>
                <el-table-column prop="idNo" label="公司" min-width="100px"></el-table-column>
                <el-table-column prop="personCompanyName" label="公司" min-width="100px"></el-table-column>
                <el-table-column prop="carNo" label="车牌号" min-width="100px"></el-table-column>
                <el-table-column prop="carNo" label="设备类型" min-width="100px"></el-table-column>
                <el-table-column prop="carNo" label="设备名称" min-width="100px"></el-table-column>
                <el-table-column prop="carNo" label="出入类型" min-width="100px"></el-table-column>
                <el-table-column prop="captureUrl" label="抓拍图uri" min-width="100px"></el-table-column>
                <el-table-column prop="happenTime" label="抓拍照片" min-width="100px"></el-table-column>
                <el-table-column prop="captureUrl" label="事件时间" min-width="100px"></el-table-column>
                <el-table-column prop="beVisitedPersonName" label="被访人" min-width="100px"></el-table-column>
                <el-table-column prop="eventTypeName" label="事件类型" min-width="100px"></el-table-column>
                <el-table-column label="抓拍图uri" min-width="100px">
                    <template slot-scope="{row}">
                        <el-image
                            style="width: 80px; height: 80px"
                            :src="row.captureUrl"
                            :preview-src-list="[row.captureUrl]">
                        </el-image>
                    </template>
                </el-table-column>
                <el-table-column prop="happenTime" label="事件时间" min-width="100px"></el-table-column>
            </el-table>
            <pagination
                @size-change="handleSizeChange"
@@ -86,6 +81,7 @@
import BaseTable from '@/components/base/BaseTable'
import TableLayout from '@/layouts/TableLayout'
import Pagination from '@/components/common/Pagination'
import { timeForMat } from '@/utils/util'
export default {
  name: 'VisitEvent',
  extends: BaseTable,
@@ -95,10 +91,15 @@
      // 搜索
      searchForm: {
        personName: '',
        carNo: '',
        keyWords: '',
        startTime: '',
        endTime: '',
        carNo: ''
        eventType: '',
        companyName: '',
        radio: null
      },
      options: []
      time: []
    }
  },
  created () {
@@ -109,6 +110,38 @@
      'field.main': 'id'
    })
    this.search()
  },
  methods: {
    seleTime (e) {
      this.searchForm.startTime = e[0]
      this.searchForm.endTime = e[1]
      this.searchForm.radio = null
      this.search()
    },
    changeRadio (e) {
      if (e === '0') {
        this.searchForm.startTime = timeForMat(1)[0]
        this.searchForm.endTime = timeForMat(1)[1]
        this.time = timeForMat(1)
      } else if (e === '1') {
        this.searchForm.startTime = timeForMat(7)[0]
        this.searchForm.endTime = timeForMat(7)[1]
        this.time = timeForMat(7)
      } else if (e === '2') {
        this.searchForm.startTime = timeForMat(30)[0]
        this.searchForm.endTime = timeForMat(30)[1]
        this.time = timeForMat(30)
      }
      this.search()
    },
    reset () {
      this.$refs.searchForm.resetFields()
      this.searchForm.startTime = ''
      this.searchForm.endTime = ''
      this.time = []
      this.searchForm.radio = null
      this.search()
    }
  }
}
</script>