Merge remote-tracking branch 'origin/master'
| | |
| | | |
| | | param.setCompanyId(ContextUtil.getCompanyId()); |
| | | queryWrapper.eq("company_id", param.getCompanyId()); |
| | | |
| | | //库区 |
| | | if (StringUtils.isNotBlank(param.getDeptId())) { |
| | | queryWrapper.eq("dept_id", param.getDeptId()); |
| | | } |
| | | //仓库 |
| | | if (StringUtils.isNotBlank(param.getDepotId())) { |
| | | queryWrapper.eq("depot_id", param.getDepotId()); |
| | | } |
| | | queryWrapper.orderByDesc("create_time"); |
| | | |
| | | return queryWrapper; |
| | |
| | | import com.fzzy.igds.domain.EventInfo; |
| | | import com.fzzy.sys.manager.security.eventInfo.EventInfoManager; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.apache.shiro.authz.annotation.RequiresPermissions; |
| | | import org.springframework.stereotype.Controller; |
| | | import org.springframework.ui.Model; |
| | | import org.springframework.web.bind.annotation.GetMapping; |
| | |
| | | @Resource |
| | | private EventInfoManager eventInfoManager; |
| | | |
| | | @RequiresPermissions("web:security:eventInfo:view") |
| | | @GetMapping |
| | | public String getEventInfo( |
| | | Model model) { |
| | |
| | | * @param param |
| | | * @return |
| | | */ |
| | | @RequiresPermissions("web:security:eventInfo:list") |
| | | @RequestMapping("/pageData") |
| | | @ResponseBody |
| | | public PageResponse<Page<EventInfo>> pageData(@RequestBody IgdsBaseParam param) { |
| | |
| | | import com.fzzy.igds.domain.SnapRecord; |
| | | import com.fzzy.sys.manager.security.snap.SnapRecordManager; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.apache.shiro.authz.annotation.RequiresPermissions; |
| | | import org.springframework.stereotype.Controller; |
| | | import org.springframework.ui.Model; |
| | | import org.springframework.web.bind.annotation.GetMapping; |
| | |
| | | @Resource |
| | | private SnapRecordManager snapRecordManager; |
| | | |
| | | @RequiresPermissions("web:security:snap:snapRecord:view") |
| | | @GetMapping |
| | | public String getSnapRecord( |
| | | Model model) { |
| | |
| | | * @param param |
| | | * @return |
| | | */ |
| | | @RequiresPermissions("web:security:snap:snapRecord:list") |
| | | @RequestMapping("/pageData") |
| | | @ResponseBody |
| | | public PageResponse<Page<SnapRecord>> pageData(@RequestBody IgdsBaseParam param) { |
| | |
| | | display: grid; |
| | | grid-template-columns: repeat(auto-fill, minmax(350px, 1fr)); |
| | | gap: 20px; |
| | | margin-bottom: 15px; |
| | | margin-bottom: 5px; |
| | | } |
| | | |
| | | .gallery-item { |
| | |
| | | |
| | | .gallery-img { |
| | | width: 100%; |
| | | height: 195px; |
| | | height: 240px; |
| | | object-fit: cover; |
| | | cursor: pointer; |
| | | transition: all 0.3s ease; |
| | |
| | | .gallery-tags { |
| | | display: flex; |
| | | flex-wrap: wrap; |
| | | /*gap: 8px;*/ |
| | | margin-left: auto; |
| | | gap: 3px; |
| | | /*margin: 12px 0;*/ |
| | | } |
| | | |
| | |
| | | /* 分页样式 */ |
| | | .pagination-container { |
| | | display: flex; |
| | | justify-content: center; |
| | | justify-content: flex-end; |
| | | width: 100%; |
| | | /*margin-top: 40px;*/ |
| | | } |
| | | |
| | |
| | | count: typeof totalItems !== 'undefined' ? totalItems : 0, |
| | | limit: typeof pageSize !== 'undefined' ? pageSize : 6, |
| | | curr: typeof currentPage !== 'undefined' ? currentPage : 1, |
| | | layout: ['count', 'prev', 'page', 'next', 'refresh', 'skip'], |
| | | layout: ['prev', 'page', 'next', 'refresh', 'skip'], |
| | | jump: function (obj, first) { |
| | | if (!first) { |
| | | searchRecord(obj.curr, obj.limit) |
| | |
| | | count: totalCount, |
| | | limit: pageSize, |
| | | curr: currentPage, |
| | | layout: ['count', 'prev', 'page', 'next', 'refresh', 'skip'], |
| | | layout: ['prev', 'page', 'next', 'refresh', 'skip'], |
| | | jump: function (obj, first) { |
| | | if (!first) { |
| | | searchRecord(obj.curr, obj.limit) |
| | |
| | | <div class="gallery-info"> |
| | | <div class="gallery-header"> |
| | | <h3 class="gallery-title">${record.name || record.id}</h3> |
| | | <div class="gallery-tags"> |
| | | <span class="tag-person"> |
| | | <i class="layui-icon layui-icon-note"></i> |
| | | <span>汽车</span> |
| | | </span> |
| | | <span class="tag-person"> |
| | | <i class="layui-icon layui-icon-note"></i> |
| | | <span>卡车</span> |
| | | </span> |
| | | <span class="tag-person"> |
| | | <i class="layui-icon layui-icon-note"></i> |
| | | <span>翻斗车</span> |
| | | </span> |
| | | </div> |
| | | </div> |
| | | <div class="gallery-meta"> |
| | | <div class="meta-item"> |
| | | <div style="display: flex; align-items: center; gap: 15px;width: 100%"> |
| | | <div class="meta-item" style="width: 50%"> |
| | | <i class="layui-icon layui-icon-video"></i> |
| | | <span>${record.serId || ''}</span> |
| | | </div> |
| | | <div class="meta-item" style="width: 50%"> |
| | | <i class="layui-icon layui-icon-date"></i> |
| | | <span>${formatDate(record.time)}</span> |
| | | </div> |
| | | </div> |
| | | <div class="meta-item" > |
| | | <i class="layui-icon layui-icon-home"></i> |
| | | <span>${record.deptId || ''}</span> |
| | | </div> |
| | | <div class="meta-item"> |
| | | <i class="layui-icon layui-icon-video"></i> |
| | | <span>${record.serId || ''}</span> |
| | | </div> |
| | | <div class="meta-item"> |
| | | <i class="layui-icon layui-icon-date"></i> |
| | | <span>${formatDate(record.time)}</span> |
| | | </div> |
| | | </div> |
| | | <div class="gallery-tags"> |
| | | <span class="tag-person"> |
| | | <i class="layui-icon layui-icon-face-smile"></i> |
| | | <span>${record.level || '未知'}</span> |
| | | </span> |
| | | |
| | | </div> |
| | | </div> |
| | | </div> |
| | |
| | | |
| | | .gallery-img { |
| | | width: 100%; |
| | | height: 195px; |
| | | height: 240px; |
| | | object-fit: cover; |
| | | cursor: pointer; |
| | | transition: all 0.3s ease; |
| | |
| | | .gallery-tags { |
| | | display: flex; |
| | | flex-wrap: wrap; |
| | | /*gap: 8px;*/ |
| | | margin-left: auto; |
| | | gap: 3px; |
| | | /*margin: 12px 0;*/ |
| | | } |
| | | |
| | |
| | | /* 分页样式 */ |
| | | .pagination-container { |
| | | display: flex; |
| | | justify-content: center; |
| | | justify-content: flex-end; |
| | | width: 100%; |
| | | /*margin-top: 40px;*/ |
| | | } |
| | | |
| | |
| | | count: typeof totalItems !== 'undefined' ? totalItems : 0, |
| | | limit: typeof pageSize !== 'undefined' ? pageSize : 6, |
| | | curr: typeof currentPage !== 'undefined' ? currentPage : 1, |
| | | layout: ['count', 'prev', 'page', 'next', 'refresh', 'skip'], |
| | | layout: [ 'prev', 'page', 'next', 'refresh', 'skip'], |
| | | jump: function (obj, first) { |
| | | if (!first) { |
| | | searchRecord(obj.curr, obj.limit) |
| | |
| | | count: totalCount, |
| | | limit: pageSize, |
| | | curr: currentPage, |
| | | layout: ['count', 'prev', 'page', 'next', 'refresh', 'skip'], |
| | | layout: ['prev', 'page', 'next', 'refresh', 'skip'], |
| | | jump: function (obj, first) { |
| | | if (!first) { |
| | | searchRecord(obj.curr, obj.limit) |
| | |
| | | class="gallery-img" onclick="showSnapRecordPreview(this.getAttribute('data-url'))"> |
| | | <div class="gallery-info"> |
| | | <div class="gallery-header"> |
| | | <h3 class="gallery-title">${record.id}</h3> |
| | | <!-- <h3 class="gallery-title">${record.id}</h3>--> |
| | | <div class="gallery-tags"> |
| | | <span class="tag-person"> |
| | | <i class="layui-icon layui-icon-note"></i> |
| | | <span>汽车</span> |
| | | </span> |
| | | <span class="tag-person"> |
| | | <i class="layui-icon layui-icon-note"></i> |
| | | <span>卡车</span> |
| | | </span> |
| | | <span class="tag-person"> |
| | | <i class="layui-icon layui-icon-note"></i> |
| | | <span>翻斗车</span> |
| | | </span> |
| | | </div> |
| | | </div> |
| | | <div class="gallery-meta"> |
| | | <div style="display: flex; align-items: center; gap: 15px;width: 100%"> |
| | | <div class="meta-item" style="width: 50%"> |
| | | <i class="layui-icon layui-icon-video"></i> |
| | | <span>${record.cameraId || ''}</span> |
| | | </div> |
| | | <div class="meta-item" style="width: 50%"> |
| | | <i class="layui-icon layui-icon-date"></i> |
| | | <span>${formatDate(record.snapTime)}</span> |
| | | </div> |
| | | </div> |
| | | <div class="meta-item"> |
| | | <i class="layui-icon layui-icon-home"></i> |
| | | <span>${record.deptId || ''}</span> |
| | | </div> |
| | | <div class="meta-item"> |
| | | <i class="layui-icon layui-icon-video"></i> |
| | | <span>${record.cameraId || ''}</span> |
| | | </div> |
| | | <div class="meta-item"> |
| | | <i class="layui-icon layui-icon-date"></i> |
| | | <span>${formatDate(record.snapTime)}</span> |
| | | </div> |
| | | </div> |
| | | <div class="gallery-tags"> |
| | | <span class="tag-person"> |
| | | <i class="layui-icon layui-icon-face-smile"></i> |
| | | <span>测试标签</span> |
| | | </span> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | `; |
| | |
| | | <!DOCTYPE html> |
| | | <html lang="zh" xmlns:th="http://www.thymeleaf.org" xmlns:shiro="http://www.pollix.at/thymeleaf/shiro"> |
| | | <html lang="zh" xmlns:th="http://www.thymeleaf.org"> |
| | | <head> |
| | | <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> |
| | | <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1"> |
| | | <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> |
| | | <meta name="renderer" content="webkit"> |
| | | <th:block th:include="include :: header('AI事件管理')" /> |
| | | <th:block th:include="include :: header('AI事件管理')"/> |
| | | <link rel="stylesheet" type="text/css" th:href="@{/ajax/libs/layui-ruoyi/css/layui.css}"/> |
| | | <link rel="stylesheet" th:href="@{/security/eventInfo/eventInfo-style.css}"> |
| | | </head> |
| | | <body class="gray-bg"> |
| | | <div class="container-div"> |
| | | <div class="row"> |
| | | <div class="col-sm-12 search-collapse"> |
| | | <div class="col-sm-12 search-collapse" |
| | | style="display: flex; justify-content: space-between; align-items: center;"> |
| | | <form id="eventInfo-form"> |
| | | <div class="select-list"> |
| | | <ul> |
| | |
| | | 所属库区:<input type="text" name="deptId"/> |
| | | </li> |
| | | <li> |
| | | <a class="btn btn-primary btn-rounded btn-sm" onclick="searchRecord()"><i class="fa fa-search"></i> 搜索</a> |
| | | <a class="btn btn-warning btn-rounded btn-sm" onclick="$.form.reset()"><i class="fa fa-refresh"></i> 重置</a> |
| | | 所属仓库:<input type="text" name="depotId"/> |
| | | </li> |
| | | <li> |
| | | <a class="btn btn-primary btn-rounded btn-sm" onclick="searchRecord()"><i |
| | | class="fa fa-search"></i> 搜索</a> |
| | | <a class="btn btn-warning btn-rounded btn-sm" onclick="$.form.reset()"><i |
| | | class="fa fa-refresh"></i> 重置</a> |
| | | </li> |
| | | </ul> |
| | | </div> |
| | | </form> |
| | | <div class="btn-group-sm" role="group"> |
| | | <a class="btn btn-success"> |
| | | <i class="fa fa-plus"></i> 事件配置 |
| | | </a> |
| | | </div> |
| | | </div> |
| | | |
| | | <div class="col-sm-12 " style="padding-top: 10px;"> |
| | |
| | | <div class="gallery-info"> |
| | | <div class="gallery-header"> |
| | | <h3 class="gallery-title" th:text="${eventInfo.name}"></h3> |
| | | <div class="gallery-tags"> |
| | | <span class="tag-person"> |
| | | <i class="layui-icon layui-icon-note"></i> |
| | | <span>汽车</span> |
| | | </span> |
| | | <span class="tag-person"> |
| | | <i class="layui-icon layui-icon-note"></i> |
| | | <span>卡车</span> |
| | | </span> |
| | | <span class="tag-person"> |
| | | <i class="layui-icon layui-icon-note"></i> |
| | | <span>翻斗车</span> |
| | | </span> |
| | | </div> |
| | | </div> |
| | | |
| | | <div class="gallery-meta"> |
| | | <div style="display: flex; align-items: center; gap: 15px;width: 100%"> |
| | | <div class="meta-item" style="width: 50%"> |
| | | <i class="layui-icon layui-icon-video"></i> |
| | | <span th:text="${eventInfo.serId}"></span> |
| | | </div> |
| | | <div class="meta-item" style="width: 50%"> |
| | | <i class="layui-icon layui-icon-date"></i> |
| | | <span th:text="${#dates.format(eventInfo.time, 'yyyy-MM-dd HH:mm:ss')}"></span> |
| | | </div> |
| | | </div> |
| | | <div class="meta-item"> |
| | | <i class="layui-icon layui-icon-home"></i> |
| | | <span th:text="${eventInfo.deptId}"></span> |
| | | </div> |
| | | <div class="meta-item"> |
| | | <i class="layui-icon layui-icon-video"></i> |
| | | <span th:text="${eventInfo.serId}"></span> |
| | | </div> |
| | | <div class="meta-item"> |
| | | <i class="layui-icon layui-icon-date"></i> |
| | | <span th:text="${#dates.format(eventInfo.time, 'yyyy-MM-dd HH:mm:ss')}"></span> |
| | | </div> |
| | | </div> |
| | | |
| | | <!-- 标签列表 --> |
| | | <div class="gallery-tags"> |
| | | <span class="tag-person"> |
| | | <i class="layui-icon layui-icon-face-smile"></i> |
| | | <span th:text="${eventInfo.level}"></span> |
| | | </span> |
| | | </div> |
| | | |
| | | </div> |
| | | </div> |
| | | </div> |
| | |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <th:block th:include="include :: footer" /> |
| | | <th:block th:include="include :: footer"/> |
| | | <script th:src="@{/ajax/libs/layui-ruoyi/layui.js}"></script> |
| | | <script th:src="@{/security/eventInfo/eventInfo.js}"></script> |
| | | <script th:inline="javascript"> |
| | |
| | | <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1"> |
| | | <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> |
| | | <meta name="renderer" content="webkit"> |
| | | <th:block th:include="include :: header('智能抓拍')" /> |
| | | <th:block th:include="include :: header('智能抓拍')"/> |
| | | <link rel="stylesheet" type="text/css" th:href="@{/ajax/libs/layui-ruoyi/css/layui.css}"/> |
| | | <link rel="stylesheet" th:href="@{/security/snap/snapRecord-style.css}"> |
| | | </head> |
| | | <body class="gray-bg"> |
| | | <div class="container-div"> |
| | | <div class="row"> |
| | | <div class="col-sm-12 search-collapse"> |
| | | <div class="col-sm-12 search-collapse" |
| | | style="display: flex; justify-content: space-between; align-items: center;"> |
| | | <form id="snapRecord-form"> |
| | | <div class="select-list"> |
| | | <ul> |
| | | <li> |
| | | 所属仓库:<input type="text" name="deptId"/> |
| | | 所属库区:<input type="text" name="deptId"/> |
| | | </li> |
| | | <li> |
| | | <a class="btn btn-primary btn-rounded btn-sm" onclick="searchRecord()"><i class="fa fa-search"></i> 搜索</a> |
| | | <a class="btn btn-warning btn-rounded btn-sm" onclick="$.form.reset()"><i class="fa fa-refresh"></i> 重置</a> |
| | | <a class="btn btn-primary btn-rounded btn-sm" onclick="searchRecord()"><i |
| | | class="fa fa-search"></i> 搜索</a> |
| | | <a class="btn btn-warning btn-rounded btn-sm" onclick="$.form.reset()"><i |
| | | class="fa fa-refresh"></i> 重置</a> |
| | | </li> |
| | | </ul> |
| | | </div> |
| | | </form> |
| | | </div> |
| | | <div class="col-sm-12 " style="padding-top: 5px"> |
| | | <div class="btn-group-sm" role="group" > |
| | | <a class="btn btn-success" onclick="openConf()" shiro:hasPermission="system:user:add"> |
| | | <div class="btn-group-sm" role="group"> |
| | | <a class="btn btn-success" onclick="openConf()" shiro:hasPermission="web:security:snap:snapRecord:view"> |
| | | <i class="fa fa-plus"></i> 抓拍配置 |
| | | </a> |
| | | </div> |
| | |
| | | class="gallery-img" onclick="showSnapRecordPreview(this.getAttribute('data-url'))"> |
| | | <div class="gallery-info"> |
| | | <div class="gallery-header"> |
| | | <h3 class="gallery-title" th:text="${snapRecord.id}"></h3> |
| | | <!-- <h3 class="gallery-title" th:text="${snapRecord.id}"></h3>--> |
| | | <!-- 标签列表 --> |
| | | <div class="gallery-tags"> |
| | | <span class="tag-person"> |
| | | <i class="layui-icon layui-icon-note"></i> |
| | | <span>汽车</span> |
| | | </span> |
| | | <span class="tag-person"> |
| | | <i class="layui-icon layui-icon-note"></i> |
| | | <span>卡车</span> |
| | | </span> |
| | | <span class="tag-person"> |
| | | <i class="layui-icon layui-icon-note"></i> |
| | | <span>翻斗车</span> |
| | | </span> |
| | | </div> |
| | | </div> |
| | | |
| | | <div class="gallery-meta"> |
| | | <div style="display: flex; align-items: center; gap: 15px;width: 100%"> |
| | | <div class="meta-item" style="width: 50%"> |
| | | <i class="layui-icon layui-icon-video"></i> |
| | | <span th:text="${snapRecord.cameraId}"></span> |
| | | </div> |
| | | <div class="meta-item" style="width: 50%"> |
| | | <i class="layui-icon layui-icon-date"></i> |
| | | <span th:text="${#dates.format(snapRecord.snapTime, 'yyyy-MM-dd HH:mm:ss')}"></span> |
| | | </div> |
| | | </div> |
| | | <div class="meta-item"> |
| | | <i class="layui-icon layui-icon-home"></i> |
| | | <span th:text="${snapRecord.deptId}"></span> |
| | | </div> |
| | | <div class="meta-item"> |
| | | <i class="layui-icon layui-icon-video"></i> |
| | | <span th:text="${snapRecord.cameraId}"></span> |
| | | </div> |
| | | <div class="meta-item"> |
| | | <i class="layui-icon layui-icon-date"></i> |
| | | <span th:text="${#dates.format(snapRecord.snapTime, 'yyyy-MM-dd HH:mm:ss')}"></span> |
| | | </div> |
| | | </div> |
| | | |
| | | <!-- 标签列表 --> |
| | | <div class="gallery-tags"> |
| | | <span class="tag-person"> |
| | | <i class="layui-icon layui-icon-face-smile"></i> |
| | | <span>测试标签</span> |
| | | </span> |
| | | </div> |
| | | |
| | | </div> |
| | | </div> |
| | | </div> |
| | |
| | | <div class="pagination-container" th:if="${not #lists.isEmpty(snapRecordList)}"> |
| | | <div id="pagination"></div> |
| | | </div> |
| | | |
| | | </div> |
| | | </div> |
| | | <!-- 图片预览层 --> |
| | |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <th:block th:include="include :: footer" /> |
| | | <th:block th:include="include :: footer"/> |
| | | <script th:src="@{/ajax/libs/layui-ruoyi/layui.js}"></script> |
| | | <script th:src="@{/security/snap/snapRecord.js}"></script> |
| | | <script th:inline="javascript"> |