230 Commits 0ef80dba26 ... 7a90e5d7ad

Autor SHA1 Mensagem Data
  xiayu3 7a90e5d7ad Merge branch 'dev-security' of http://10.1.235.20:3000/asiainfo/ebc into dev-security 4 anos atrás
  xiayu3 fddda04ed2 [FE]新增用户管理弹出框&更改视频监控组件样式 4 anos atrás
  xiayu3 264c3ba3d5 Merge branch 'dev-security' of http://10.1.235.20:3000/asiainfo/ebc into dev-security 4 anos atrás
  xiayu3 5cb880c67a [FE]更改视频监控组件以及用户管理界面新增用户弹出框 4 anos atrás
  liuwenxun 9886a6c12e [FE]整合人脸审核页面到用户管理 4 anos atrás
  liuwenxun 6b710a982f Merge remote-tracking branch 'origin/dev-security' into dev-security 4 anos atrás
  liuwenxun b9c49e6225 [FE]统计AI报警未处理的数据 4 anos atrás
  liuwenxun b700661ec4 [FE]AI报警表格调整 4 anos atrás
  liuwenxun c70214f3d4 [FE]AI报警徽标调整 4 anos atrás
  liuwenxun f85324acbe Merge remote-tracking branch 'origin/dev-security' into dev-security 4 anos atrás
  liuwenxun 6571f93fd9 [FE]AI报警处理,AI报警角标,进出记录查询修改 4 anos atrás
  liuwenxun 8f4b50aca9 [FE]处理AL报警详情无法点开的问题 4 anos atrás
  liuwenxun 5b51d9d4bd [FE]处理videoInfo为空时,详情页面无法点击的问题 4 anos atrás
  xiayu3 b53ad37d3c [FE]:修改目录 4 anos atrás
  xiayu3 cb769b3992 Merge branch 'dev-security' of http://10.1.235.20:3000/asiainfo/ebc into dev-security 4 anos atrás
  xiayu3 2233772536 [FE]:修改视频监控样式 4 anos atrás
  xiayu3 3cbe6f2c39 Merge branch 'master' of http://10.1.235.20:3000/asiainfo/ebc 4 anos atrás
  xiayu3 67f5214a9a Merge branch 'dev-security' 4 anos atrás
  wangchao 12572cf5a1 考勤详情显示格式修改bug 4 anos atrás
  chenxr3 d78b7bdffa 删除debugger 4 anos atrás
  konghl 9f50c9fa97 修改问题 4 anos atrás
  wangdong6 0c298d1922 修改AI识别处理服务 4 anos atrás
  konghl 475afbbf9c 修改问题 4 anos atrás
  konghl e31740f33e 新增报警详情的接口 4 anos atrás
  wangdong6 e477401879 Merge remote-tracking branch 'origin/master' 4 anos atrás
  wangdong6 dc68bfa2ea 修改AI识别处理服务 4 anos atrás
  wangdong6 29063f2405 增加场景设备分页查询服务 4 anos atrás
  wangchao 6a9e5a5391 修改进出记录bug 4 anos atrás
  konghl b853fa9490 修改考勤类型必填的问题 4 anos atrás
  konghl 902b99be6a 修改问题 4 anos atrás
  konghl eed12970cd 新增AI报警kafka消费 4 anos atrás
  wangdong6 83a580112c 修改AI处理结果 4 anos atrás
  wangdong6 296d4992b4 Merge remote-tracking branch 'origin/master' 4 anos atrás
  wangdong6 526e01161f 增加考勤打卡服务 4 anos atrás
  wangdong6 2274a0b5a3 Merge remote-tracking branch 'origin/master' 4 anos atrás
  wangdong6 366cc07942 修改AI识别功能 4 anos atrás
  wangdong6 f437841399 修改AI识别功能 4 anos atrás
  wangchao 1a8e2463b5 Merge remote-tracking branch 'origin/master' 4 anos atrás
  wangchao 6fb2eb5da1 AI报警接口增加处理人返回值与报警类型name返回值 4 anos atrás
  wangchao 173425e9aa Merge remote-tracking branch 'origin/master' 4 anos atrás
  wangchao cc86f342c0 进出记录返回参数查询修改 4 anos atrás
  wangchao 392d7269c4 进出记录、详情 查询修改 4 anos atrás
  wangchao 9720d09362 Merge remote-tracking branch 'origin/master' 4 anos atrás
  wangchao 19896d67fd 进出记录、详情 查询 4 anos atrás
  wangchao 3c8ced1379 进出记录、详情 查询 4 anos atrás
  konghl 0f7ad3266b 新增批量获取文件的路径 4 anos atrás
  wangchao b57d80b691 Merge remote-tracking branch 'origin/master' 4 anos atrás
  wangchao 83af37e1b4 考勤管理 4 anos atrás
  wangchao c1a17c529b Merge remote-tracking branch 'origin/master' 4 anos atrás
  wangchao 9025dc6284 修改日报bug 4 anos atrás
  wangchao 0bf75d3a8d Merge remote-tracking branch 'origin/master' 4 anos atrás
  wangchao cf7b6cdfa4 AI接口提交 4 anos atrás
  wangchao cf93c13cfe Merge remote-tracking branch 'origin/master' 4 anos atrás
  wangchao c539efc81a 导出excel 4 anos atrás
  chenxr3 c5de3eedce 月考勤数据查询接口修改bug 4 anos atrás
  konghl d1691caa94 工单申请修改用户和部门 4 anos atrás
  wangchao 1690e0e21b 修改考勤查询日报bug 4 anos atrás
  wangdong6 0584159bd1 Merge remote-tracking branch 'origin/master' 4 anos atrás
  wangdong6 f02a5c9889 修改考勤规则查询接口 4 anos atrás
  wangdong6 013e377cef 修改考勤规则查询接口 4 anos atrás
  konghl 2ac7393605 重构人员轨迹查询 4 anos atrás
  konghl 190e8a2ec0 新增工单申请及审批接口 4 anos atrás
  wangdong6 a0a75ce1c6 修改考勤规则保存接口 4 anos atrás
  wangchao 208cc9c6ed Merge remote-tracking branch 'origin/master' 4 anos atrás
  wangchao eb0f593fc9 查询报表修改参数 4 anos atrás
  wangchao 78caba4d27 考勤详情修改 4 anos atrás
  wangchao 69f40fa73d Merge remote-tracking branch 'origin/master' 4 anos atrás
  wangchao 6ff5fe626a 考勤报告接收前台参数方式修改 4 anos atrás
  wangdong6 5151d2fea9 Merge remote-tracking branch 'origin/master' 4 anos atrás
  wangdong6 9a5dcf3200 封装考勤规则管理接口 4 anos atrás
  zhaolx5 84e32ed3ca 解决打包失败的问题 4 anos atrás
  zhaolx5 ac019a0444 Merge remote-tracking branch 'origin/master' 4 anos atrás
  zhaolx5 d80c144412 变更ipu-cache的版本号 4 anos atrás
  konghl 5c299da82a 问题修改 4 anos atrás
  chenxr3 c65072f9be 定位提交 4 anos atrás
  konghl 9d8fd7b88a 增加设备和围栏的判断字段 4 anos atrás
  wangchao 9773787bd2 Merge remote-tracking branch 'origin/master' 4 anos atrás
  wangchao 0c3414ba5f 配置文件增加注释 4 anos atrás
  wangchao 62a630e635 Merge remote-tracking branch 'origin/master' 4 anos atrás
  wangchao 59071e3124 增加空格 4 anos atrás
  konghl 4b9cfc964f 新增mock工程 4 anos atrás
  konghl 8ff2333bdb 修改配置文件,用于上传服务器 4 anos atrás
  konghl 35e8568374 修改项目名称,用于上传服务器 4 anos atrás
  konghl 296cdba193 重构后台系统,仅用于上传服务器 4 anos atrás
  konghl 0122efbabc 重构后台系统,仅用于上传服务器 4 anos atrás
  konghl 9a39799cc0 部署服务器,修改配置文件 4 anos atrás
  konghl ddf35fd300 暂时不启用非实体对象的判断 4 anos atrás
  chenxr3 7939fc8ace 首页修改提交 4 anos atrás
  konghl db678770b9 Merge branch 'master' of http://10.1.235.20:3000/asiainfo/ebc.git 4 anos atrás
  konghl bebb2b89fe 人员定位问题修改 4 anos atrás
  konghl 04ada0e6f8 实时救援问题修改 4 anos atrás
  wangkang3 33bb67ddb7 提交 4 anos atrás
  chenxr3 b15b5e27ad 首页修改提交 4 anos atrás
  konghl 8b281e8053 修改pom,排除登录验证 4 anos atrás
  konghl cb0c0e8182 Merge branch 'master' of http://10.1.235.20:3000/asiainfo/ebc.git 4 anos atrás
  konghl 53804e97f6 修改镜屏推送信息 4 anos atrás
  konghl 6809ddead2 重构实时报警和历史报警 4 anos atrás
  konghl 2363abc631 修改镜屏topic 4 anos atrás
  konghl 6c328c4398 轨迹查询重构 4 anos atrás
  konghl b0ee3a41b4 历史轨迹回放重构,增加定时任务判断设备离线 4 anos atrás
  chenxr3 622b446cee 首页修改提交 4 anos atrás
  chenxr3 4756df9027 修改提交 4 anos atrás
  konghl 67e75e92ff 删除枚举等,重构人员定位 4 anos atrás
  chenxr3 563af28335 修改提交 4 anos atrás
  konghl 08a6631852 修改设备类型 4 anos atrás
  konghl c183618ccb Merge branch 'master' of http://10.1.235.20:3000/asiainfo/ebc.git 4 anos atrás
  konghl 2387b3f8e5 修改设备 4 anos atrás
  konghl 7712978aac 修改地图标记类型和设备类型 4 anos atrás
  konghl 97a96a8da4 中台服务的版本从2.1升级为2.1.5 4 anos atrás
  chenxr3 626a7699ce 修改提交 4 anos atrás
  konghl cbbdfa675d 修改北向接口缓存方式 4 anos atrás
  konghl 387e92633d Merge branch 'master' of http://10.1.235.20:3000/asiainfo/ebc into master 4 anos atrás
  konghl 9ec6ffcd72 统一设备管理返回格式 4 anos atrás
  konghl 46d45bf56c Merge branch 'master' of http://10.1.235.20:3000/asiainfo/ebc into master 4 anos atrás
  konghl b61fa21c4f 修改kafka配置文件 4 anos atrás
  konghl 24f03b82fc 统一设备管理的返回格式 4 anos atrás
  konghl 8c1bd0a40d Merge branch 'master' of http://10.1.235.20:3000/asiainfo/ebc.git 4 anos atrás
  konghl d6c9ee7ac9 统一用户管理返回值 4 anos atrás
  konghl 2667543ebe 修改人员信息返回值 4 anos atrás
  konghl 33f605d78d Merge branch 'master' of http://10.1.235.20:3000/asiainfo/ebc into master 4 anos atrás
  konghl 8c6e6b34db 统一地图标记和终端管理的返回格式 4 anos atrás
  konghl 6f5679bb9b 修改pom 4 anos atrás
  konghl f8ec732c5e 配置kafka 4 anos atrás
  wangchao 91cb23750d Merge remote-tracking branch 'origin/master' 4 anos atrás
  wangchao 7a19aa2489 加入uspa拦截器token验证 4 anos atrás
  wangchao 605bfe142d Merge remote-tracking branch 'origin/master' 4 anos atrás
  wangchao 0307a3595b 用户管理删除和新增 4 anos atrás
  wangchao 42c9ce12f2 Merge remote-tracking branch 'origin/master' 4 anos atrás
  wangchao 2f12fb16fb 终端绑定 4 anos atrás
  wangchao a4780fea36 后台项目初始化 4 anos atrás
  wangchao 1d225203e0 Merge remote-tracking branch 'origin/master' 4 anos atrás
  wangchao 7b5bd7fc8f 解绑查询关联关系 4 anos atrás
  wangchao 5b7ada9d09 Merge remote-tracking branch 'origin/master' 4 anos atrás
  wangchao 3abd9ac159 测试 4 anos atrás
  wangchao 5c2edbe8f2 Merge remote-tracking branch 'origin/master' 4 anos atrás
  wangchao 701921f2c7 设备管理分页查询的修改 4 anos atrás
  wangchao d1e6198a6c 设备管理报错修改 4 anos atrás
  wangchao cd2a9a0807 Merge remote-tracking branch 'origin/master' 4 anos atrás
  wangchao 42136256e1 设备管理模块后台修改 4 anos atrás
  konghl e5ac90e3cc 修改git忽略文件配置 4 anos atrás
  konghl 173629f8c7 修改用户管理 4 anos atrás
  konghl 8b50ef3257 Merge branch 'master' of http://10.1.235.20:3000/asiainfo/ebc.git 4 anos atrás
  konghl 15425d68aa 用户管理功能修改 4 anos atrás
  wangchao f4c0dc51b9 后台项目安防一体化系统初始化 4 anos atrás
  konghl e9eb1c63df 修改工程,无错误 4 anos atrás
  zhaolx5 12e2261ca9 初始化工程 4 anos atrás
  wangchao 21a1d106ba Merge remote-tracking branch 'origin/master' 4 anos atrás
  wangchao d53bf64414 修改项目结构 4 anos atrás
  wangchao 10d36573b9 修改项目结构 4 anos atrás
  wangkang3 657320fadd 提交 4 anos atrás
  wangchao 993f22008d Merge remote-tracking branch 'origin/master' 4 anos atrás
  wangchao 1e6aae2459 修改设备添加数据库时间 4 anos atrás
  konghl aa3a0f690d 实际报警初始化查询 4 anos atrás
  konghl 3640ccd134 拆分properties配置文件 4 anos atrás
  konghl 9afed3d1cd 修改镜屏名称、新增查询历史报警救援等 4 anos atrás
  konghl 52a85f945f 修改日期工具类 4 anos atrás
  wanyao ee205bc24c 回退 4 anos atrás
  wanyao 16d1d23fee 主机启动慢的原因测试1 4 anos atrás
  wangkang3 d34871ad0c Merge branch 'master' of http://10.1.235.20:3000/asiainfo/ebc 4 anos atrás
  wangkang3 57e2b527f0 修改镜屏uuid 4 anos atrás
  wangkang3 a4f2b748b2 提交 4 anos atrás
  wangkang3 07f3e9bb23 修改提交 4 anos atrás
  konghl 499e7a7d94 合并海图参数 4 anos atrás
  konghl fe61027787 Merge branch 'master' of http://10.1.235.20:3000/asiainfo/ebc.git 4 anos atrás
  konghl 70691e3608 增加海图配置参数、重构数据推送、新增轨迹回放接口 4 anos atrás
  konghl 510c6be0e7 修改人员定位功能数据订阅的解析 4 anos atrás
  chenxr3 186e9e66f4 轨迹分析页面 4 anos atrás
  wangchao 71ba3d6e50 Merge remote-tracking branch 'origin/master' 4 anos atrás
  wangchao eb6f6af53e 修改时间工具类与轨迹分析 4 anos atrás
  wangchao dc4c59924a Merge remote-tracking branch 'origin/master' 4 anos atrás
  wangchao 1c6dc5d9cd 轨迹分析信息查询 4 anos atrás
  chenxr3 69f534d648 地图标记绘制多边形颜色优化 4 anos atrás
  konghl ea8cc62767 修改配置文件 4 anos atrás
  wangchao ffb3b16b49 Merge remote-tracking branch 'origin/master' 4 anos atrás
  wangchao 4f36bbe4f2 考勤方法的修改 4 anos atrás
  wangchao 4ea204d4e4 考勤查询功能详情信息 4 anos atrás
  wangchao 76ba12e88b Merge remote-tracking branch 'origin/master' 4 anos atrás
  wangchao 8088a9af4d 考勤查询功能 4 anos atrás
  konghl 0824340e9c 修改人员定位功能 4 anos atrás
  wangchao ceb2e684c3 测试批量插入 4 anos atrás
  wangchao a19b9e2346 合并代码 4 anos atrás
  wangchao d0cdba1219 Merge remote-tracking branch 'origin/master' 4 anos atrás
  wangchao 14d32a62c0 删除终端时删除终端绑定关系 4 anos atrás
  wangchao 1d834a772a 删除终端时删除终端绑定关系 4 anos atrás
  chenxr3 8e19767361 设备类型标识格式更改 4 anos atrás
  konghl b8a06cf6e6 添加人员的枚举值 4 anos atrás
  konghl ec04cf2f49 删除.project文件 4 anos atrás
  konghl 2e3c3b67ca 修改枚举位置 4 anos atrás
  konghl 004b6f9498 新增定位推送,修改枚举类的位置 4 anos atrás
  wangkang3 76ef98bf1e 代码提交 4 anos atrás
  wangchao 63feb0d24b 终端管理页面加ui替换 4 anos atrás
  wangchao e0572c53e1 关联终端,解绑终端修改,考勤管理架子编写 4 anos atrás
  wangchao 9ff2237cbf 关联终端,解绑终端修改 4 anos atrás
  wangchao 7acc72f757 关联终端,解绑终端修改 4 anos atrás
  wangchao 332e05b5f4 关联终端,解绑终端修改 4 anos atrás
  wangchao b7fe4ca37c 后台daoimpl的修改 4 anos atrás
  konghl a3c4950238 修改字段 4 anos atrás
  konghl 48cb0bbdfa 增加返回参数 4 anos atrás
  konghl 429b4dbfa9 修改北向接口 4 anos atrás
  konghl 2e0b6dcd44 增加业务常量 4 anos atrás
  konghl 12d7573f2e 新增功能:地图标记增删改查 4 anos atrás
  wangkang3 8f7b30e3be 地图标记模块接口接入 4 anos atrás
  chenxr3 1013865ef3 设备管理页面 4 anos atrás
  wangchao 97dca84162 修改设备验证 4 anos atrás
  wangchao 0c9930d3e3 Merge branch 'master' of http://10.1.235.20:3000/asiainfo/ebc 4 anos atrás
  wangchao 8bd1ff2323 终端关联,终端解绑等接口 4 anos atrás
  wangchao d01adabd91 Merge branch 'master' of http://10.1.235.20:3000/asiainfo/ebc 4 anos atrás
  wangchao d40c613702 修改gis接口等 4 anos atrás
  wangchao 35550a3e47 Merge branch 'master' of http://10.1.235.20:3000/asiainfo/ebc 4 anos atrás
  wangchao bd86ba7a47 设备增删改查以及关联与解绑终端 4 anos atrás
  wangchao a8c7c1cf4d 项目配置修改以及剔除uspa 4 anos atrás
  wangchao c251472c3d gis获取token接口 4 anos atrás
  wangchao fba9354c6a Merge branch 'master' of http://10.1.235.20:3000/asiainfo/ebc 4 anos atrás
  wangchao 5ff38a7f9b 解决跨域问题 4 anos atrás
  wangchao 74f666ab34 添加注释,增加轨迹文件等 4 anos atrás
  wangchao 5f13388aac 修改地图管理文件 4 anos atrás
  wangchao 41aea6126c Merge branch 'master' of http://10.1.235.20:3000/asiainfo/ebc 4 anos atrás
  wangchao 24f1743496 按评审要求修改文件 4 anos atrás
  wangchao 666c0f81c2 Merge branch 'master' of http://10.1.235.20:3000/asiainfo/ebc 4 anos atrás
  wangchao 779c6e3826 修改日志文件 4 anos atrás
  wangchao 0e5599165c 修改日志文件 4 anos atrás
  wangchao c217a49b3a 更新项目 4 anos atrás
  wangchao 408a2042a9 后台项目初始化 4 anos atrás
  wangkang3 7bbf8eb6a8 页面初始化提交 4 anos atrás
  liuchang 000ebd90c9 更新文件 4 anos atrás
  liuchang 46a262ab4b 删除 4 anos atrás
  liuchang d1d76df146 更新提交 4 anos atrás
  wanyao 1d2d95bc39 删除 4 anos atrás
  wanyao f74da4a0dd 删除 4 anos atrás
  wanyao b667fddfbc 初始化 4 anos atrás

+ 8 - 1
security-protection-platform/src/api/usermana/index.js

@ -50,7 +50,14 @@ const api = {
50 50
      return $default.delete(`/sp/employeeManagement/deleteEmployee?employeeId=${data.employeeId}`).catch((err) => { return err })
51 51
    }
52 52
  },
53
53
  // 新增用户
54
  creteEmployee(params) {
55
    return $default.post('/sp/employeeManagement/createEmployee', params)
56
  },
57
  // 获取职务列表
58
  getJobPositionList() {
59
    return $default.post('/sp/employeeManagement/queryJobPositionList')
60
  },
54 61
  // 获取单个用户信息
55 62
  getOneEmployee (params) {
56 63
    return $default.get('/sp/employeeManagement/queryOneEmployee', params)

+ 223 - 40
security-protection-platform/src/modules/usermana/components/modal/addUser.vue

@ -1,9 +1,9 @@
1 1
<template>
2
  <t-modal :visibled.sync="visibled" :mask-closable="false">
2
  <t-modal :visibled.sync="isVisibled" :mask-closable="false">
3 3
    <template slot="header">
4 4
      <div class="device-modal-title">{{ isEdit?'用户编辑':'新增用户' }}</div>
5 5
    </template>
6
    <t-form :model="addUserModal" :rules="addUserModalRules" label-position="right">
6
    <t-form ref="addUserModal" :model="addUserModal" :rules="addUserModalRules" label-position="right">
7 7
      <t-form-item label="姓名:" prop="name">
8 8
        <t-input v-model="addUserModal.name" placeholder="请输入姓名"></t-input>
9 9
      </t-form-item>
@ -16,11 +16,11 @@
16 16
        </t-select>
17 17
      </t-form-item>
18 18
      <t-form-item v-if="addUserModal.apartments!==''" label="部门:" prop="organizeCode">
19
        <t-select-tree v-model="addUserModal.organizeCode" :node-data="departmentTypesList" width="200px" node-key="id"></t-select-tree>
19
        <t-select-tree v-model="addUserModal.organizeCode" :node-data="departmentTypesList" node-key="id"></t-select-tree>
20 20
      </t-form-item>
21 21
      <t-form-item label="职务:" prop="mainJobPosition">
22 22
        <t-select v-model="addUserModal.mainJobPosition" placeholder="请选择职务" clearable>
23
          <t-option v-for="(item,index) in dataList" :value="item.value" :key="index">{{ item.name }}</t-option>
23
          <t-option v-for="(item,index) in jobPoisitonList" :value="item.code" :key="index">{{ item.value }}</t-option>
24 24
        </t-select>
25 25
      </t-form-item>
26 26
      <t-form-item label="年龄:" prop="birthday">
@ -30,18 +30,37 @@
30 30
        <t-input v-model="addUserModal.mainWirelessCall" placeholder="请输入11位手机号"></t-input>
31 31
      </t-form-item>
32 32
      <t-form-item label="人脸图片:" prop="facePicture">
33
        <t-input v-model="addUserModal.facePicture" placeholder="请输入手机号"></t-input>
33
        <t-upload
34
          ref="uploader"
35
          :show-uploaded="true"
36
          :allowed-ext="['jpg','jpeg','png']"
37
          :max-size="2048"
38
          :before-upload="$_onUploadBeforeUpload"
39
          :data="{picture:'11d'}"
40
          multiple
41
          style="width:120px;height:160px;background-color:#FFFFFF;"
42
          type="drag"
43
          action="http://10.19.90.34:8018/sp/employeeManagement/uploadEmployeePicture"
44
          class="demo-upload-list"
45
        >
46
          <div class="picture-upload">
47
            <t-icon class="upload-icon" icon="plus-outline"></t-icon>
48
            <span style="color:rgba(0, 0, 0, 0.45)">上传照片</span>
49
          </div>
50
        </t-upload>
51
        <span style="color:rgba(0, 0, 0, 0.45);font-size:12px">照片格式:jpg、png或bmp文件,且不超过2M</span>
34 52
      </t-form-item>
35 53
    </t-form>
36 54
    <template slot="footer">
37 55
      <t-button @click="resetModalData">取消</t-button>
38 56
      <t-button v-if="isEdit" :loading="loadingSubmit" color="primary" @click="submitModalData">修改</t-button>
39
      <t-button v-else :loading="loadingSubmit" color="primary" @click="submitModalData">提交</t-button>
57
      <t-button v-else color="primary" @click="submitModalData">提交</t-button>
40 58
    </template>
41 59
  </t-modal>
42 60
</template>
43 61
44 62
<script>
63
import sysapi from '@/api/usermana'
45 64
export default {
46 65
  props: {
47 66
    visible: {
@ -52,31 +71,27 @@ export default {
52 71
    companyList: {
53 72
      type: Array,
54 73
      default: () => []
55
    },
56
    // 公司对应部门列表
57
    departmentTypesList: {
58
      type: Array,
59
      default: () => []
60 74
    }
61 75
  },
62 76
  data() {
77
    // 手机号验证
78
    // const VALIDATEPASSCHECK = (rule, value, callback) => {
79
    //   if (value === '') {
80
    //     callback(new Error('请输入11位手机号'))
81
    //   } else if (value.length > 0 & value.length !== 11) {
82
    //     callback(new Error('手机号格式不正确'))
83
    //   } else {
84
    //     callback()
85
    //   }
86
    // }
63 87
    return {
64 88
      // 是否为编辑状态
65 89
      isEdit: false,
66
      dataList: [
67
        {
68
          name: '数据一',
69
          value: 1
70
        },
71
        {
72
          name: '数据二',
73
          value: 2
74
        },
75
        {
76
          name: '数据三',
77
          value: 3
78
        }
79
      ],
90
      // 部门列表
91
      departmentTypesList: [],
92
      // 职务列表
93
      uploadList: [],
94
      jobPoisitonList: [],
80 95
      // 新增用户表单
81 96
      addUserModal: {
82 97
        name: '',
@ -86,7 +101,7 @@ export default {
86 101
        mainJobPosition: '',
87 102
        birthday: '',
88 103
        mainWirelessCall: '',
89
        facePicture: ''
104
        facePicture: '123'
90 105
      },
91 106
      // 新增用户表单规则
92 107
      addUserModalRules: {
@ -96,7 +111,7 @@ export default {
96 111
        code: [
97 112
          { required: true, message: '员工编号不能为空', trigger: 'blur' }
98 113
        ],
99
        field4: [
114
        apartments: [
100 115
          { required: true, message: '公司不能为空' }
101 116
        ],
102 117
        organizeCode: [
@ -109,7 +124,7 @@ export default {
109 124
          { required: true, message: '年龄不能为空', trigger: 'blur' }
110 125
        ],
111 126
        mainWirelessCall: [
112
          { required: true, message: '手机不能为空', trigger: 'blur' }
127
          { required: true, message: '请输入11位手机号', trigger: 'blur' }
113 128
        ],
114 129
        facePicture: [
115 130
          { required: true, message: '图片不能为空', trigger: 'blur' }
@ -118,33 +133,201 @@ export default {
118 133
    }
119 134
  },
120 135
  computed: {
121
    // 显示/隐藏对话框
122
    visibled: {
123
      set(val) {
124
        this.$emit('visibled', val)
136
    isVisibled: {
137
      set (val) {
138
        this.$emit('update:visible', val)
125 139
      },
126
      get() {
140
      get () {
141
        this.getJobPositionList()
127 142
        return this.visible
128 143
      }
129 144
    }
130 145
  },
146
  watch: {
147
    'addUserModal.apartments' (val) {
148
      // 重置部门回显
149
      this.addUserModal.organizeCode = ''
150
      // 查询部门列表
151
      this.queryCycleChildOrg(val)
152
    }
153
  },
154
  mounted() {
155
    this.getJobPositionList()
156
  },
131 157
  methods: {
132 158
    // 确认新增用户
133 159
    submitModalData() {
134
      this.visible = false
135
      console.log(this.visibled)
136
      console.log(this.visible);
160
      this.$refs['addUserModal'].validate((valid) => {
161
        if (valid) {
162
          this.isVisibled = false
163
          let obj = {
164
            name: this.addUserModal.name, // 员工姓名
165
            code: this.addUserModal.code, // 员工编号
166
            organizeCode: this.addUserModal.organizeCode, // 部门CODE
167
            mainWirelessCall: this.addUserModal.mainWirelessCall, // 手机号码
168
            mainJobPosition: this.addUserModal.mainJobPosition, // 职务
169
            field1: this.addUserModal.facePicture, // 照片标识
170
            field4: this.addUserModal.apartments, // 公司ID
171
            birthday: Math.round(new Date() / 1000) // 生日(时间戳)
172
          }
173
          sysapi.creteEmployee({params: obj}).then(res => {
174
            console.log(res)
175
            if (res.data.success === true) {
176
              this.$Message.success('新增成功')
177
            } else {
178
              console.log(res.data.fail.message)
179
              this.$Message.success(res.data.fail.message)
180
            }
181
          })
182
        }
183
      })
137 184
    },
138 185
    // 重置表单数据
139 186
    resetModalData () {
140
      // this.$refs['activityForm'].resetFields()
187
      this.$refs['addUserModal'].resetFields()
141 188
      this.imgUrl = ''
142
      this.visibled = false
189
      this.isVisibled = false
190
    },
191
    // 查询职务列表
192
    async getJobPositionList() {
193
      const res = await sysapi.getJobPositionList()
194
      if (res.status === 200) {
195
        this.jobPoisitonList = res.data.data
196
      } else {
197
        this.$Message.danger('职务类型列表数据获取失败!')
198
      }
199
    },
200
    // 查询部门列表
201
    async queryCycleChildOrg (id) {
202
      const res = await sysapi.queryCycleChildOrg(id)
203
      if (res.status === 200) {
204
        const data = []
205
        // 递归 实现tree组件所需部门数据结构
206
        this.nextDepartment(res.data, data)
207
        // 深拷贝data
208
        const data1 = JSON.parse(JSON.stringify(data))
209
        // 用部门id映射关系代替code与parentCode父子映射关系
210
        data.forEach(item => {
211
          // 删除pid为"-1"的的pid属性,否则tree渲染的时候没有根节点渲染不出来
212
          if (item.pid === '-1') {
213
            delete item.pid
214
          }
215
          item.id = item.orgId
216
          data1.some((item1) => {
217
            if (item.pid === item1.id) {
218
              item.pid = item1.orgId
219
            } else {
220
              return false
221
            }
222
          })
223
        })
224
        // eslint-disable-next-line no-return-assign
225
        this.departmentTypesList = data.filter(item => item.data = item.id)
226
      } else {
227
        this.$Message.danger('部门类型列表数据获取失败!')
228
      }
229
    },
230
    startPickerDateChange() {
231
    },
232
    // 如果部门还有下级 递归
233
    nextDepartment (data, arr) {
234
      if (data.length > 0) {
235
        data.forEach(item => {
236
          arr.push({
237
            orgId: item.id + '',
238
            id: item.code,
239
            label: item.name,
240
            pid: item.parentCode
241
          })
242
          this.nextDepartment(item.departments, arr)
243
        })
244
      }
245
    },
246
    $_onDeleteIconClick (file) {
247
      this.$refs.uploader.removeFile(file)
248
    },
249
    $_onUploadRemoveFlie (file, fileList) {
250
      this.uploadList = fileList
251
    },
252
    $_onUploadPreviewFlie (file) {
253
      console.log(file)
254
    },
255
    $_onUploadProgress (e, file) {
256
      console.log(e)
257
      console.log(file)
258
    },
259
    $_onUploadSuccess (res, file) {
260
      this.imgUrl = res.data.data.toolPictureUrl
261
      this.addDeviceModalForm.pictureUrl = res.data.data.pictureUrl
262
      // 因为演示用的上传服务器返回数据格式的原因,这里模拟添加 url
263
      console.log(file)
264
      this.uploadList.push(file)
265
    },
266
    $_onUploadRemoveFile () { },
267
    $_onUploadExceededSize () { },
268
    $_onUploadError (errMsg, response, file) {
269
      console.log(file)
270
      console.log(errMsg.message)
271
      this.$Notice.warning({
272
        title: `文件${file.name}上传失败`,
273
        desc:
274
          '原因:' + errMsg
275
      })
276
    },
277
    $_onUploadFileExtError (file, files) {
278
      this.$Notice.warning({
279
        title: '文件格式不正确',
280
        desc:
281
          '文件 ' + file.name + ' 格式不正确,请上传 jpg 或 png 格式的图片。'
282
      })
283
      console.log(files)
284
    },
285
    $_onUploadFileExceededSize (file) {
286
      this.$Notice.warning({
287
        title: '超出文件大小限制',
288
        desc: '文件 ' + file.name + ' 太大,不能超过 2M。'
289
      })
290
    },
291
    $_onUploadFormatError () { },
292
    $_onUploadBeforeUpload () {
293
      const check = this.uploadList.length < 5
294
      if (!check) {
295
        this.$Notice.warning({
296
          title: '最多只能上传 5 张图片。'
297
        })
298
      }
299
      return check
143 300
    }
144 301
  }
145 302
}
146 303
</script>
147 304
148
<style>
149
305
<style lang="scss" scoped>
306
.demo-upload-list{
307
  .upload--drag{
308
  background-color:#FFFFFF
309
}
310
}
311
.picture-upload{
312
  display:flex;
313
  flex-direction:column;
314
  width:100%;
315
  height: 100%;
316
  justify-content: center;
317
  .upload-icon{
318
    align-items:center;
319
    justify-content:center;
320
    color:white;
321
    display: flex;
322
  }
323
  .aidicon.aidicon-plus-outline:before{
324
    width: 32px;
325
    height: 32px;
326
    display: flex;
327
    justify-content: center;
328
    align-items: center;
329
    background-color: #D0D0D0;
330
    border-radius:45px;
331
  }
332
}
150 333
</style>

+ 1 - 2
security-protection-platform/src/modules/usermana/index.vue

@ -64,7 +64,7 @@
64 64
        </t-pager>
65 65
      </div>
66 66
    </t-card>
67
    <add-user-modal :department-types-list="departmentTypesList" :company-list="companyTypesList" :visible.sync="addDeviceModal"></add-user-modal>
67
    <add-user-modal :company-list="companyTypesList" :visible.sync="addDeviceModal"></add-user-modal>
68 68
    <auditModal :auditshow.sync="auditshow" :auditid="auditid" :company-name="companyName" @refeshUserList="getUserList"></auditModal>
69 69
  </div>
70 70
</template>
@ -306,7 +306,6 @@ export default {
306 306
    // 显示新增设备对话框
307 307
    showAddDeviceModal () {
308 308
      this.addDeviceModal = true
309
      console.log(this.addDeviceModal)
310 309
    },
311 310
    async editDeviceData (id) {
312 311
      const res = await sysapi.getDeviceInfo(id)

+ 134 - 76
security-protection-platform/src/modules/videoSurveillance/index.vue

@ -13,13 +13,15 @@
13 13
    </div>
14 14
    <div class="page-bottom">
15 15
      <div v-for="(item,index) in videoList" :key="index" :value="item.resourceToolId" style="width:400px;margin:24px 0px 0 24px;">
16
        <videoPlayer
17
          ref="videoPlayer"
18
          :options="videoOptions"
19
          :playsinline="true"
16
        <video-player
17
          :ref="'video'+index"
18
          :options="videoOptions[index]"
19
          :playsinline="false"
20
          :events="events"
20 21
          class="vjs-custom-skin videoPlayer"
21
        />
22
        <!-- <rtmp-video :list="getVideoPlayList(item)" @goDistinguishRecord="goDistinguishRecord(item.resourceToolId)" @videoReplay="handleReview"></rtmp-video> -->
22
          @dblclick="handlefullscreenchange"
23
        ></video-player>
24
      <!-- <rtmp-video :list="getVideoPlayList(item)" @goDistinguishRecord="goDistinguishRecord(item.resourceToolId)" @videoReplay="handleReview"></rtmp-video> -->
23 25
      </div>
24 26
    </div>
25 27
    <t-pager :page-size="videoPageSize" :current="videoCurrent" :total="videoTotal" :sizer-range="[ 5, 10, 20, 30 ]" class="pager" show-elevator @on-change="onChangeGate"></t-pager>
@ -30,18 +32,15 @@
30 32
import sysapi from '@/api/videoSurveillance'
31 33
import RtmpVideo from './components/rtmpVideoPlay'
32 34
import ReplayDialog from './components/ReplayDialog'
33
import VideoPlayer from '@/components/VideoPlayer'
34 35
import formatDateTime from '@/utils/formatDateTime.js'
35 36
import videojs from 'video.js'
36 37
window.videojs = videojs
37 38
38
require('videojs-flash')
39
require('videojs-playlist')
40 39
require('video.js/dist/lang/zh-CN.js')
41 40
require('video.js/dist/video-js.min.css')
42 41
43 42
export default {
44
  components: { ReplayDialog, VideoPlayer, RtmpVideo },
43
  components: { ReplayDialog, RtmpVideo },
45 44
  filters: {
46 45
    handleText (value) {
47 46
      if (!value) return ''
@ -53,36 +52,8 @@ export default {
53 52
  },
54 53
  data () {
55 54
    return {
56
      videoOptions: {
57
        autoplay: true, // 如果true,浏览器准备好时开始回放。
58
        muted: true, // 默认情况下将会消除任何音频。
59
        loop: false, // 导致视频一结束就重新开始。
60
        preload: 'auto', // 建议浏览器在<video>加载元素后是否应该开始下载视频数据。auto浏览器选择最佳行为,立即开始加载视频(如果浏览器支持)
61
        language: 'zh-CN',
62
        aspectRatio: '13:10', // 将播放器置于流畅模式,并在计算播放器的动态大小时使用该值。值应该代表一个比例 - 用冒号分隔的两个数字(例如"16:9"或"4:3")
63
        // fluid: true, // 当true时,Video.js player将拥有流体大小。换句话说,它将按比例缩放以适应其容器。
64
        // 是否流体自适应容器宽高
65
        fluid: true,
66
        // // 设置视频播放器的显示宽度(以像素为单位)
67
        // width: '100px',
68
        // // 设置视频播放器的显示高度(以像素为单位)
69
        // height: '300px',
70
        sources: [{
71
          withCredentials: false,
72
          type: 'application/x-mpegURL', // 这里的种类支持很多种:基本视频格式、直播、流媒体等,具体可以参看git网址项目
73
          src: 'http://10.19.90.34:1080/live/1.m3u8' // url地址
74
        }],
75
        flash: { hls: { withCredentials: false } },
76
        html5: { hls: { withCredentials: false } },
77
        notSupportedMessage: '此视频暂无法播放,请稍后再试', // 允许覆盖Video.js无法播放媒体源时显示的默认信息。
78
        controlBar: {
79
          timeDivider: false,
80
          // durationDisplay: true,
81
          remainingTimeDisplay: false,
82
          fullscreenToggle: true, // 全屏按钮,
83
          pictureInPictureToggle: false
84
        }
85
      },
55
      events: ['fullscreenchange'],
56
      videoOptions: [],
86 57
      videoCurrent: 1, // 大门分页数据
87 58
      videoPageSize: 10, // 大门分页数据
88 59
      videoTotal: 0, // 大门分页总数
@ -105,16 +76,61 @@ export default {
105 76
      // endDay: '2020-12-19 20:14:00'
106 77
    }
107 78
  },
79
  computed: {
80
    player() {
81
      return this.$refs.videoPlayer1.player
82
    }
83
  },
108 84
  mounted () {
109 85
    this.getWindFiledList() // 获取风场列表
110 86
  },
111 87
  methods: {
112
    getVideoPlayList (item) {
113
      return [{
114
        fileId: item.videoUrl,
115
        fileType: 'rtmp/flv',
116
        id: item.resourceToolId
117
      }]
88
    // 修改视频组件控制栏的元素以及样式
89
    async createMyButton () {
90
      this.$nextTick(() => {
91
        const bars = document.querySelectorAll('.vjs-control-bar')
92
        let time = document.getElementsByClassName('vjs-current-time vjs-time-control vjs-control')
93
        let start = document.getElementsByClassName('vjs-play-control vjs-control vjs-button')
94
        let volume = document.getElementsByClassName('vjs-volume-panel vjs-control vjs-volume-panel-horizontal')
95
        let text = document.getElementsByClassName('vjs-live-control vjs-control')
96
        bars.forEach((item, index) => {
97
          time.forEach(item => {
98
            item.remove()
99
          })
100
          start.forEach(item => {
101
            item.remove()
102
          })
103
          volume.forEach(item => {
104
            item.remove()
105
          })
106
          text.forEach(item => {
107
            item.remove()
108
          })
109
          let txt = document.createElement('span')
110
          txt.innerHTML = '集控室(人脸识别)'
111
          txt.style.marginLeft = '12px'
112
          let btn = document.createElement('button')
113
          btn.style.color = 'white'
114
          btn.style.cursor = 'pointer'
115
          btn.style.marginLeft = 'auto'
116
          btn.className = 'aidicon aidicon-image-outline'
117
          btn.setAttribute('title', '识别记录')
118
          btn.addEventListener('click', () => {
119
            this.goDistinguishRecord()
120
          })
121
          let btn1 = document.createElement('button')
122
          btn1.style.color = 'white'
123
          btn1.style.cursor = 'pointer'
124
          btn1.className = 'aidicon aidicon-piechart-outline'
125
          btn1.setAttribute('title', '视频回放')
126
          btn1.addEventListener('click', () => {
127
            this.handleReview(this.videoList[index].id)
128
          })
129
          item.appendChild(txt)
130
          item.appendChild(btn)
131
          item.appendChild(btn1)
132
        })
133
      })
118 134
    },
119 135
    // 获取场景列表
120 136
    getSceneList () {
@ -170,15 +186,51 @@ export default {
170 186
        console.log(err)
171 187
      })
172 188
    },
189
    handlefullscreenchange(val) {
190
      // 因为我是又封装了一个组件,打印val会有相应所需的属性,全屏状态为:isFullscreen_
191
      val.isFullscreen_ = !val.isFullscreen_
192
      // this.$emit('fullscreenchange', val)
193
    },
173 194
    // 获得风场大门数据
174 195
    getVideoSurveillanceData () {
175 196
      var id = this.tabId
176 197
      this.paramsObj.page = this.videoCurrent
177
      sysapi.getVideoSurveillanceDataForPage({ params: { monitorSceneId: id, pageNumber: this.videoCurrent, pageSize: this.videoPageSize} })
178
      .then(res => {
179
        debugger
180
        this.videoList = res.data.data.data
181
        this.videoTotal = res.data.data.total
198
      sysapi.getVideoSurveillanceData({ params: { monitorSceneId: id } }).then(res => {
199
        this.videoList = res.data.data
200
        for (let i in res.data.data) {
201
          let obj = {
202
            autoplay: true, // 如果true,浏览器准备好时开始回放。
203
            muted: true, // 默认情况下将会消除任何音频。
204
            loop: false, // 导致视频一结束就重新开始。
205
            preload: 'auto', // 建议浏览器在<video>加载元素后是否应该开始下载视频数据。auto浏览器选择最佳行为,立即开始加载视频(如果浏览器支持)
206
            language: 'zh-CN',
207
            aspectRatio: '13:10', // 将播放器置于流畅模式,并在计算播放器的动态大小时使用该值。值应该代表一个比例 - 用冒号分隔的两个数字(例如"16:9"或"4:3")
208
            // fluid: true, // 当true时,Video.js player将拥有流体大小。换句话说,它将按比例缩放以适应其容器。
209
            // 是否流体自适应容器宽高
210
            fluid: true,
211
            // // 设置视频播放器的显示宽度(以像素为单位)
212
            // width: '100px',
213
            // // 设置视频播放器的显示高度(以像素为单位)
214
            // height: '300px',
215
            sources: [{
216
              withCredentials: false,
217
              type: 'application/x-mpegURL', // 这里的种类支持很多种:基本视频格式、直播、流媒体等,具体可以参看git网址项目
218
              src: res.data.data[i].videoUrl // url地址
219
            }],
220
            flash: { hls: { withCredentials: false } },
221
            html5: { hls: { withCredentials: false } },
222
            notSupportedMessage: '此视频暂无法播放,请稍后再试', // 允许覆盖Video.js无法播放媒体源时显示的默认信息。
223
            controlBar: {
224
              timeDivider: false,
225
              durationDisplay: false,
226
              remainingTimeDisplay: false,
227
              fullscreenToggle: true, // 全屏按钮,
228
              pictureInPictureToggle: false
229
            }
230
          }
231
          this.videoOptions.push(obj)
232
        }
233
        this.createMyButton()
182 234
      })
183 235
    },
184 236
    // 进入识别记录界面
@ -247,37 +299,43 @@ export default {
247 299
      }
248 300
    }
249 301
  }
250
  .pager {
302
.pager {
251 303
    margin-right: auto;
252 304
    margin: 21px 0px 24px 0;
253 305
    float: right;
254 306
  }
255
  .btn-primary,
256
  .radio-group-button .form-radio:checked,
257
  .radio-group-button .form-radio[checked] {
258
    color: #0089d4;
259
    background-color: #fff;
260
    border: 1px solid #0089d4;
261
  }
262
  .btn-secondary,
263
  .radio-group-button .form-radio,
264
  .checkbox-group--button .form-checkbox .form-checkbox__inner,
265
  .btn-dashed-secondary,
266
  .btn-outline-secondary {
267
    background: none;
268
  }
269
  .video-js .vjs-control:focus, .video-js .vjs-control:focus:before, .video-js .vjs-control:hover:before{
270
    color:#0089d4;
271
    text-shadow: none;
272
  }
273
  .vjs-control-bar{
274
    justify-content: flex-end;
275
  }
276
  .video-js .vjs-control{
307
.vjs-custom-skin > .video-js .vjs-control-bar .vjs-fullscreen-control{
308
  height:38px !important;
309
}
310
.video-js .vjs-control{
277 311
    cursor: pointer;
312
    width: 28px;
313
    margin-right:12px;
278 314
  }
279
.video-js .vjs-fullscreen-control{
280
  order:2;
315
.vjs-control-bar{
316
    display: flex;
317
    justify-content: center;
318
    align-items: center;
319
}
320
.video-js button{
321
  font-size:16px;
322
}
323
.aidicon-image-outline:hover{
324
  color: #0089d4 !important;
325
}
326
.aidicon-piechart-outline:hover{
327
  color: #0089d4 !important;
328
}
329
.vjs-icon-placeholder:hover{
330
  color: #0089d4 !important;
331
}.vjs-icon-placeholder{
332
  font-size: 13px;
333
  display: flex;
334
  justify-content: center;
335
  align-items: center;
336
}
337
.vjs-tech {
338
  pointer-events: none;
281 339
}
282 340
}
283 341
</style>