删除无用的
parent
6fbad28ca4
commit
4052497f21
|
@ -1,63 +0,0 @@
|
|||
<#assign base=request.contextPath />
|
||||
<#import "../common/defaultLayout.ftl" as defaultLayout>
|
||||
<@defaultLayout.layout>
|
||||
<script type="text/javascript">
|
||||
var base = '${base}';
|
||||
</script>
|
||||
<div class="admin-content">
|
||||
<div class="admin-content-body">
|
||||
<div class="am-cf am-padding">
|
||||
<div class="am-fl am-cf"><strong class="am-text-primary am-text-lg">告警内容</strong> /
|
||||
<small>编辑</small>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<form method="post" class="am-form" id="tmpForm"
|
||||
action="${base}/alarmContent/save">
|
||||
<input name="id" id="packageSalaryId" type="hidden" value="${alarmContent.id!}"/>
|
||||
<div class="am-tabs am-margin" data-am-tabs>
|
||||
<ul class="am-tabs-nav am-nav am-nav-tabs">
|
||||
<li class="am-active"><a href="#tab1">编辑</a></li>
|
||||
</ul>
|
||||
<div class="am-tabs-bd">
|
||||
<div class="am-tab-panel am-fade am-in am-active" id="tab1">
|
||||
<div class="am-g am-form-group am-margin-top" style="display: flex;">
|
||||
<div class="am-u-sm-4 am-u-md-2 am-text-right">
|
||||
告警内容
|
||||
</div>
|
||||
<div class="am-u-sm-6 am-u-md-6">
|
||||
<input class="js-ajax-validate" name="name" value="${alarmContent.name!}"
|
||||
type="text"
|
||||
maxlength="255" placeholder="请输入告警内容"
|
||||
/>
|
||||
</div>
|
||||
<div></div>
|
||||
</div>
|
||||
<div class="am-g am-form-group am-margin-top" style="display: flex;">
|
||||
<div class="am-u-sm-4 am-u-md-2 am-text-right">
|
||||
告警说明
|
||||
</div>
|
||||
<div class="am-u-sm-6 am-u-md-6">
|
||||
<input class="js-ajax-validate" name="description" value="${alarmContent.description!}"
|
||||
type="text"
|
||||
maxlength="255" placeholder="请输入告警说明"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!--选项卡(tabs)end-->
|
||||
<div class="am-margin">
|
||||
<button type="submit" id="submitBtn" class="am-btn am-btn-primary am-btn-xs">提交保存</button>
|
||||
<button type="button" class="am-btn am-btn-warning am-btn-xs"
|
||||
onclick="javascript:history.go(-1);">返回上一级
|
||||
</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</@defaultLayout.layout>
|
|
@ -1,90 +0,0 @@
|
|||
<#assign base=request.contextPath />
|
||||
<#import "../common/defaultLayout.ftl" as defaultLayout>
|
||||
<@defaultLayout.layout>
|
||||
<div class="admin-content">
|
||||
<div class="am-cf am-padding" style="padding:1rem 1.6rem 1.6rem 1rem;margin:0px;">
|
||||
<!-- padding:1px 2px 3px 4px;上、右、下,和左 -->
|
||||
<div class="am-fl am-cf"><strong class="am-text-primary am-text-lg">后台配置</strong> /
|
||||
<small>告警内容</small>
|
||||
</div>
|
||||
</div>
|
||||
<div class="am-g">
|
||||
<div class="am-u-sm-12">
|
||||
<div class="am-scrollable-horizontal">
|
||||
<table class="am-table am-table-striped am-table-hover table-main">
|
||||
<thead>
|
||||
<tr class="am-text-nowrap">
|
||||
<th class="table-title">告警内容</th>
|
||||
<th class="table-title">告警说明</th>
|
||||
<th class="table-title">操作</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<#if (pager.list)?exists && (pager.list?size>0)>
|
||||
<#list pager.list as list>
|
||||
<tr>
|
||||
<td>${list.name!}</td>
|
||||
<td>${list.description!}</td>
|
||||
<td>
|
||||
<div id="edit-div" class="am-btn-toolbar switch-button">
|
||||
<div class="am-btn-group am-btn-group-xs">
|
||||
<button type="button"
|
||||
class="am-btn am-btn-default am-btn-xs am-text-secondary"
|
||||
onclick="location.href='${base}/alarmContent/edit?id=${list.id?c}'">
|
||||
<span class="am-icon-pencil-square-o"></span>编辑
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</#list>
|
||||
|
||||
</#if>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<div class="am-cf">
|
||||
<!-- 分页 -->
|
||||
<#if (pager.list)?exists && (pager.list?size>0) >
|
||||
<div class="am-fr">
|
||||
<#include "../common/order_list_pager.ftl">
|
||||
</div>
|
||||
<#else>
|
||||
<div class="am-kai" align="center">
|
||||
<h3>没有找到任何记录!</h3>
|
||||
</div>
|
||||
</#if>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</@defaultLayout.layout>
|
||||
|
||||
<script type="text/javascript">
|
||||
var keywordsObj = {};
|
||||
var sub_function = function (type) {
|
||||
$("#pageNumber").val(1);
|
||||
initSearch();
|
||||
$("#listForm").submit();
|
||||
};
|
||||
|
||||
var initSearch = function(){};
|
||||
</script>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
@ -1,486 +0,0 @@
|
|||
<#assign base=request.contextPath />
|
||||
<#import "../common/defaultLayout.ftl" as defaultLayout>
|
||||
<@defaultLayout.layout>
|
||||
<#--<link rel="stylesheet" href="../assets/css/amazeui.switch.css"/>-->
|
||||
<div class="admin-content">
|
||||
<div class="am-cf am-padding" style="padding:1rem 1.6rem 1.6rem 1rem;margin:0px;">
|
||||
<!-- padding:1px 2px 3px 4px;上、右、下,和左 -->
|
||||
<div class="am-fl am-cf"><strong class="am-text-primary am-text-lg">统计报表</strong> /
|
||||
<small>工地告警明细</small>
|
||||
</div>
|
||||
</div>
|
||||
<div class="am-g">
|
||||
<div class="am-u-sm-12">
|
||||
<form class="am-form" id="listForm" action="${base}/alarm/detail/list" method="POST">
|
||||
<input type="hidden" id="keywords" name="keywords" value='${keywords!""}'/>
|
||||
<input type="hidden" id="detailId" name="detailId" value='${detailId!"0"}'/>
|
||||
<table class="am-table am-table-bordered am-table-radius table-main" style="padding:0;">
|
||||
<tbody>
|
||||
<tr>
|
||||
<th class="am-text-middle">工地名称</th>
|
||||
<td>
|
||||
<div class="am-u-sm-10">
|
||||
<input type="text" id="constructionSiteName" class="am-form-field am-input-sm"
|
||||
value="${constructionSiteName!}"/>
|
||||
</div>
|
||||
</td>
|
||||
<th class="am-text-middle">上报人员</th>
|
||||
<td>
|
||||
<div class="am-u-sm-10">
|
||||
<input type="text" id="reportPerson" class="am-form-field am-input-sm"
|
||||
value="${reportPerson!}"/>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class="am-text-middle">告警来源</th>
|
||||
<td>
|
||||
<div class="am-u-sm-10">
|
||||
<select data-am-selected="{btnWidth: '40%', btnSize: 'sm'" id="alarmSource">
|
||||
<option value="-1">全部</option>
|
||||
<option value="1" <#if alarmSource! =="1">selected</#if> >自动告警</option>
|
||||
<option value="2" <#if alarmSource! =="2">selected</#if> >网格员上报</option>
|
||||
<option value="3" <#if alarmSource! =="3">selected</#if> >管理员推送</option>
|
||||
</select>
|
||||
</div>
|
||||
</td>
|
||||
<th class="am-text-middle">工单状态</th>
|
||||
<td>
|
||||
<div class="am-u-sm-10">
|
||||
<select data-am-selected="{btnWidth: '40%', btnSize: 'sm'" id="workOrderStatus">
|
||||
<option value="-1">全部</option>
|
||||
<option value="0" <#if workOrderStatus! =="0">selected</#if> >未推送</option>
|
||||
<option value="5" <#if workOrderStatus! =="5">selected</#if> >已推送</option>
|
||||
<option value="10" <#if workOrderStatus! =="10">selected</#if> >已接收</option>
|
||||
<option value="15" <#if workOrderStatus! =="15">selected</#if> >已反馈</option>
|
||||
<option value="20" <#if workOrderStatus! =="20">selected</#if> >已验收</option>
|
||||
<option value="25" <#if workOrderStatus! =="25">selected</#if> >已忽略</option>
|
||||
</select>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class="am-text-middle">告警类型</th>
|
||||
<td>
|
||||
<div class="am-u-sm-10">
|
||||
<select id="alarmTypeId" name="alarmTypeId"
|
||||
data-am-selected="{btnSize: 'sm',maxHeight: 200,searchBox: 1}">
|
||||
<option value="-1">全部</option>
|
||||
<#list alarmTypes as a>
|
||||
<option value="${a.id}" <#if a.id?string == alarmTypeId! >
|
||||
selected </#if>>${a.name}</option>
|
||||
</#list>
|
||||
</select>
|
||||
</div>
|
||||
</td>
|
||||
<th class="am-text-middle">创建时间</th>
|
||||
<td>
|
||||
<div class="am-u-sm-10">
|
||||
<div class="am-form am-form-inline">
|
||||
<div class="am-form-group am-form-icon">
|
||||
<i class="am-icon-calendar"></i>
|
||||
<input type="text" class="am-form-field am-input-sm" id="startTime"
|
||||
value="${startTime!}" placeholder="开始日期" data-am-datepicker>
|
||||
</div>
|
||||
<div class="am-form-group">至</div>
|
||||
<div class="am-form-group am-form-icon">
|
||||
<i class="am-icon-calendar"></i>
|
||||
<input type="text" class="am-form-field am-input-sm" id="endTime"
|
||||
value="${endTime!}"
|
||||
placeholder="结束日期" data-am-datepicker>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class="am-text-middle">所属区域</th>
|
||||
<td>
|
||||
<div class="am-u-sm-10">
|
||||
<select id="regionId" name="regionId"
|
||||
data-am-selected="{btnSize: 'sm',maxHeight: 200,searchBox: 1}">
|
||||
<option value="-1">全部</option>
|
||||
<#if regionList?exists>
|
||||
<#list regionList as node>
|
||||
<option value="${node.id!}" <#if regionId! == "${node.id}" >
|
||||
selected </#if>>${node.name}</option>
|
||||
</#list>
|
||||
</#if>
|
||||
|
||||
</select>
|
||||
</div>
|
||||
</td>
|
||||
<th class="am-text-middle">告警地点</th>
|
||||
<td>
|
||||
<div class="am-u-sm-10">
|
||||
<input type="text" id="alarmLocation" class="am-form-field am-input-sm"
|
||||
value="${alarmLocation!}"/>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="4">
|
||||
<div align='right'>
|
||||
<button type="button" class="am-btn am-btn-default am-btn-sm am-text-secondary"
|
||||
id="submit-btn" onclick="sub_function('query')">搜索
|
||||
</button>
|
||||
<@shiro.hasPermission name="ALARMDETAILEXPORT">
|
||||
<button type="button" class="am-btn am-btn-default am-btn-sm am-text-secondary"
|
||||
id="submit-btn-export" onclick="sub_function('export')">导出
|
||||
</button>
|
||||
</@shiro.hasPermission>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</form>
|
||||
</div>
|
||||
<div class="am-btn-toolbar" style="padding-left:.5rem;">
|
||||
<div class="am-btn-group am-btn-group-xs">
|
||||
<@shiro.hasPermission name="ALARMDETAILDELETE">
|
||||
<button type="button" id="deleteButton" disabled="disabled" class="am-btn am-btn-default"
|
||||
onclick="deleteAll('${base}/alarm/detail/delete')"><span
|
||||
class="am-icon-trash-o"></span> 删除
|
||||
</button>
|
||||
</@shiro.hasPermission>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="am-g">
|
||||
<div class="am-u-sm-12">
|
||||
<div class="am-scrollable-horizontal">
|
||||
<table class="am-table am-table-striped am-table-hover table-main">
|
||||
<thead>
|
||||
<tr class="am-text-nowrap">
|
||||
<th class="table-check"><input type="checkbox" id="allCheck"></th>
|
||||
<th class="table-id">工单编号</th>
|
||||
<th class="table-title">工地名称</th>
|
||||
<th class="table-title">所属区域</th>
|
||||
<th class="table-title">告警地点</th>
|
||||
<th class="table-title">关联摄像头</th>
|
||||
<th class="table-title">告警类型</th>
|
||||
<th class="table-title">告警来源</th>
|
||||
<th class="table-title">上报人员</th>
|
||||
<th class="table-title">创建时间</th>
|
||||
<th class="table-title">工单状态</th>
|
||||
<th class="table-set">操作</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<#if (pager.list)?exists>
|
||||
<#list pager.list as list>
|
||||
<tr>
|
||||
<td><input type="checkbox" name="ids" value="${list.id}"/></td>
|
||||
<td>${list.workOrderNumber!}</td>
|
||||
<td>${list.constructionSiteName!}</td>
|
||||
<td>${list.regionName!}</td>
|
||||
<td>${list.alarmLocation!}</td>
|
||||
<td>
|
||||
<#if list.cameraId??>
|
||||
<a href="${base}/alarm/detail/previewCamera?id=${list.id?c}">${list.cameraId!}</a>
|
||||
</#if>
|
||||
</td>
|
||||
<td>${list.alarmTypeName!}</td>
|
||||
<td>
|
||||
<#if (list.alarmSource) =1>
|
||||
自动告警
|
||||
<#elseif (list.alarmSource) =2>
|
||||
网格员上报
|
||||
<#elseif (list.alarmSource) =3>
|
||||
管理员后台推送
|
||||
</#if>
|
||||
</td>
|
||||
<td>${list.reportPerson!}</td>
|
||||
<td><#if list.createdTime??>${list.createdTime?datetime}</#if></td>
|
||||
<td>
|
||||
<#if (list.workOrderStatus) =0>
|
||||
未推送
|
||||
<#elseif (list.workOrderStatus) =5>
|
||||
已推送
|
||||
<#elseif (list.workOrderStatus) =10>
|
||||
已接收
|
||||
<#elseif (list.workOrderStatus) =15>
|
||||
已反馈
|
||||
<#elseif (list.workOrderStatus) =20>
|
||||
已验收
|
||||
<#elseif (list.workOrderStatus) =25>
|
||||
已忽略
|
||||
<#else >
|
||||
其他
|
||||
</#if>
|
||||
</td>
|
||||
<td>
|
||||
<div class="am-btn-toolbar">
|
||||
<div class="am-btn-group am-btn-group-xs">
|
||||
<@shiro.hasPermission name="ALARMDETAILDETAIL">
|
||||
<button type="button"
|
||||
class="am-btn am-btn-default am-btn-xs am-text-secondary"
|
||||
onclick="location.href='${base}/alarm_detail_node/detail?id=${list.id?c}'"><span
|
||||
class="am-icon-pencil-square-o"></span>查看详情
|
||||
</button>
|
||||
</@shiro.hasPermission>
|
||||
<@shiro.hasPermission name="ALARMDETAILIGNORE">
|
||||
<#if (list.workOrderStatus) =0>
|
||||
<button class="am-btn am-btn-default am-btn-xs am-text-secondary"
|
||||
onclick="ignore(${list.id})">忽略
|
||||
</button>
|
||||
</#if>
|
||||
<#if (list.workOrderStatus) =25>
|
||||
<button class="am-btn am-btn-default am-btn-xs am-text-secondary"
|
||||
onclick="cancelIgnore(${list.id})">取消忽略
|
||||
</button>
|
||||
</#if>
|
||||
</@shiro.hasPermission>
|
||||
<@shiro.hasPermission name="ALARMDETAILPUSH">
|
||||
<#if (list.workOrderStatus) =0>
|
||||
<button class="am-btn am-btn-default am-btn-xs am-text-secondary"
|
||||
onclick="location.href='${base}/alarm/detail/push?detailId=${list.id?c}'">
|
||||
推送
|
||||
</button>
|
||||
</#if>
|
||||
</@shiro.hasPermission>
|
||||
<@shiro.hasPermission name="ALARMDETAILCHECK">
|
||||
<#if (list.workOrderStatus) =15>
|
||||
<button class="am-btn am-btn-default am-btn-xs am-text-secondary"
|
||||
onclick="check(${list.id})">确认验收
|
||||
</button>
|
||||
</#if>
|
||||
</@shiro.hasPermission>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</#list>
|
||||
</#if>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<div class="am-cf">
|
||||
<!-- 分页 -->
|
||||
<#if (pager.list)?exists && (pager.list?size>0) >
|
||||
<div class="am-fr">
|
||||
<#include "../common/order_list_pager.ftl">
|
||||
</div>
|
||||
<#else>
|
||||
<div class="am-kai" align="center">
|
||||
<h3>没有找到任何记录!</h3>
|
||||
</div>
|
||||
</#if>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</@defaultLayout.layout>
|
||||
|
||||
<#--<script src="${base}/assets/js/amazeui.switch.js"></script>-->
|
||||
<script type="text/javascript">
|
||||
|
||||
var sub_function = function (type) {
|
||||
$("#pageNumber").val(1);
|
||||
initSearch();
|
||||
if (type == 'export') {
|
||||
$("#listForm").attr("action", "${base}/alarm/detail/export");
|
||||
} else {
|
||||
$("#listForm").attr("action", "${base}/alarm/detail/list");
|
||||
var index = layer.load(1, {
|
||||
shade: [0.1, '#fff'] //0.1透明度的白色背景
|
||||
});
|
||||
}
|
||||
$("#listForm").submit();
|
||||
};
|
||||
|
||||
function initSearch() {
|
||||
var keywordsObj = {};
|
||||
if ($("#constructionSiteName").val())
|
||||
keywordsObj.constructionSiteName = $("#constructionSiteName").val();
|
||||
if ($("#reportPerson").val())
|
||||
keywordsObj.reportPerson = $("#reportPerson").val();
|
||||
if ($("#alarmSource").val())
|
||||
keywordsObj.alarmSource = $("#alarmSource").val();
|
||||
if ($("#workOrderStatus").val())
|
||||
keywordsObj.workOrderStatus = $("#workOrderStatus").val();
|
||||
if ($("#alarmTypeId").val())
|
||||
keywordsObj.alarmTypeId = $("#alarmTypeId").val();
|
||||
if ($("#regionId").val())
|
||||
keywordsObj.regionId = $("#regionId").val();
|
||||
if ($("#alarmLocation").val())
|
||||
keywordsObj.alarmLocation = $("#alarmLocation").val();
|
||||
if ($("#startTime").val())
|
||||
keywordsObj.startTime = $("#startTime").val();
|
||||
if ($("#endTime").val())
|
||||
keywordsObj.endTime = $("#endTime").val();
|
||||
var keywords = "";
|
||||
if (!$.isEmptyObject(keywordsObj)) {
|
||||
keywords = JSON.stringify(keywordsObj);
|
||||
}
|
||||
console.log("keywords = " + keywords);
|
||||
$("#keywords").val(keywords);
|
||||
}
|
||||
|
||||
$(function () {
|
||||
$("body").on('click', '.list-item', function () {
|
||||
$(".list-item").removeClass("tr-selected");
|
||||
$(this).addClass('tr-selected');
|
||||
});
|
||||
$("#allCheck").click(function () {
|
||||
$('input[name="ids"]').prop("checked", this.checked);
|
||||
$("#deleteButton").prop("disabled", $("input[name='ids']:checked").length == 0 ? true : false);
|
||||
});
|
||||
var $citySubBox = $("input[name='ids']");
|
||||
$citySubBox.click(function () {
|
||||
$("#allCheckCity").prop("checked", $citySubBox.length == $("input[name='ids']:checked").length ? true : false);
|
||||
$("#deleteButton").prop("disabled", $("input[name='ids']:checked").length == 0 ? true : false);
|
||||
});
|
||||
|
||||
var keywordsObj = {};
|
||||
$("#submit-btn").on("click", function () {
|
||||
$("#pageNumber").val(1);
|
||||
if ($("#constructionSiteName").val())
|
||||
keywordsObj.constructionSiteName = $("#constructionSiteName").val();
|
||||
if ($("#reportPerson").val())
|
||||
keywordsObj.reportPerson = $("#reportPerson").val();
|
||||
if ($("#alarmSource").val())
|
||||
keywordsObj.alarmSource = $("#alarmSource").val();
|
||||
if ($("#workOrderStatus").val())
|
||||
keywordsObj.workOrderStatus = $("#workOrderStatus").val();
|
||||
if ($("#alarmTypeId").val())
|
||||
keywordsObj.alarmTypeId = $("#alarmTypeId").val();
|
||||
if ($("#regionId").val())
|
||||
keywordsObj.regionId = $("#regionId").val();
|
||||
if ($("#alarmLocation").val())
|
||||
keywordsObj.alarmLocation = $("#alarmLocation").val();
|
||||
if ($("#startTime").val())
|
||||
keywordsObj.startTime = $("#startTime").val();
|
||||
if ($("#endTime").val())
|
||||
keywordsObj.endTime = $("#endTime").val();
|
||||
var startTime = $("#startTime").val();
|
||||
var endTime = $("#endTime").val();
|
||||
if (startTime > endTime) {
|
||||
window.confirm('开始日期应早于结束日期');
|
||||
}
|
||||
var keywords = "";
|
||||
if (!$.isEmptyObject(keywordsObj)) {
|
||||
keywords = JSON.stringify(keywordsObj);
|
||||
}
|
||||
console.log("keywords = " + keywords);
|
||||
$("#keywords").val(keywords);
|
||||
$("#listForm").submit();
|
||||
});
|
||||
});
|
||||
|
||||
// 删除
|
||||
var deleteAll = function (url) {
|
||||
var $deleteButton = $("#deleteButton");// 删除按钮
|
||||
var ids = "";
|
||||
$("input[name='ids']:checked").each(function () {
|
||||
ids += $(this).val() + "#%#";
|
||||
});
|
||||
var params = {ids: ids};
|
||||
if (window.confirm('确定要删除吗?')) {
|
||||
$.ajax({
|
||||
url: url,
|
||||
data: params,
|
||||
dataType: "json",
|
||||
async: false,
|
||||
beforeSend: function (data) {
|
||||
$deleteButton.prop("disabled", true)
|
||||
},
|
||||
success: function (data) {
|
||||
$deleteButton.prop("disabled", false)
|
||||
if (data.status == 0) {
|
||||
alert("删除成功");
|
||||
window.location.href = window.location.href;
|
||||
} else if (data.status == 1) {
|
||||
alert("删除失败");
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
//确认验收
|
||||
var check = function (detailId) {
|
||||
console.info("============" + detailId);
|
||||
if (window.confirm('您正在确认验收该工单,操作不可更改,请确认是否验收?')) {
|
||||
$.ajax({
|
||||
url: "${base}/alarm/detail/check?detailId=" + detailId,
|
||||
type: "get",
|
||||
dataType: "json",
|
||||
async: false,
|
||||
success: function (data) {
|
||||
alert(data.msg);
|
||||
window.location.href = window.location.href;
|
||||
}
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
//推送
|
||||
var push = function (detailId) {
|
||||
console.info("============" + detailId);
|
||||
if (window.confirm('您正在确认推送该工单,操作不可更改,请确认是否推送?')) {
|
||||
$.ajax({
|
||||
url: "${base}/alarm/detail/push?detailId=" + detailId,
|
||||
type: "get",
|
||||
dataType: "json",
|
||||
async: false,
|
||||
success: function (data) {
|
||||
alert(data.msg);
|
||||
window.location.href = window.location.href;
|
||||
}
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
//忽略
|
||||
var ignore = function (detailId) {
|
||||
console.info("============" + detailId);
|
||||
if (window.confirm('您正在忽略该工单,忽略后该告警类型今日不可再推送,操作不可更改,请确认是否忽略?')) {
|
||||
$.ajax({
|
||||
url: "${base}/alarm/detail/ignore?detailId=" + detailId,
|
||||
type: "get",
|
||||
dataType: "json",
|
||||
async: false,
|
||||
success: function (data) {
|
||||
alert(data.msg);
|
||||
window.location.href = window.location.href;
|
||||
}
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
//取消忽略
|
||||
var cancelIgnore = function (detailId) {
|
||||
console.info("============" + detailId);
|
||||
if (window.confirm('您正在取消忽略该工单,操作不可更改,请确认是否取消忽略?')) {
|
||||
$.ajax({
|
||||
url: "${base}/alarm/detail/cancel/ignore?detailId=" + detailId,
|
||||
type: "get",
|
||||
dataType: "json",
|
||||
async: false,
|
||||
success: function (data) {
|
||||
alert(data.msg);
|
||||
window.location.href = window.location.href;
|
||||
}
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
</script>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
@ -1,55 +0,0 @@
|
|||
<#assign base=request.contextPath />
|
||||
<#import "../common/defaultLayout.ftl" as defaultLayout>
|
||||
<@defaultLayout.layout>
|
||||
<link rel="stylesheet" type="text/css" href="${base}/common/css/time-axis.css">
|
||||
<div class="admin-content">
|
||||
<div class="am-cf am-padding" style="padding:1rem 1.6rem 1.6rem 1rem;margin:0px;">
|
||||
<!-- padding:1px 2px 3px 4px;上、右、下,和左 -->
|
||||
<div class="am-fl am-cf"><strong class="am-text-primary am-text-lg">工地管理</strong> /
|
||||
<small>告警详情</small>
|
||||
</div>
|
||||
</div>
|
||||
<div class="main">
|
||||
<ul class="time-axis">
|
||||
<#if detailNodes?exists >
|
||||
<#list detailNodes as node>
|
||||
<li class="time-axis-item">
|
||||
<div class="time-axis-date" style="margin-left: -96px"> ${node.createTimeString} <span></span></div>
|
||||
<div class="time-axis-title"> ${node.content} </div>
|
||||
<#if node.images?exists >
|
||||
<#list node.images as image>
|
||||
<p class="time-axis-achievement"> <img src="${image}" height="500" width="600"> </p>
|
||||
</#list>
|
||||
</#if>
|
||||
</li>
|
||||
</#list>
|
||||
</#if>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="am-margin">
|
||||
<button type="button" class="am-btn am-btn-warning am-btn-xs" onclick="javascript:history.go(-1);">
|
||||
返回上一级
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</@defaultLayout.layout>
|
||||
|
||||
<script type="text/javascript" src="${base}/assets/js/jquery-3.4.1.min.js"></script>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
@ -1,337 +0,0 @@
|
|||
<#assign base=request.contextPath />
|
||||
<#import "../common/defaultLayout.ftl" as defaultLayout>
|
||||
<@defaultLayout.layout>
|
||||
<link rel="stylesheet" href="${base}/assets/css/amazeui.switch.css"/>
|
||||
<link rel="stylesheet" href="https://g.alicdn.com/de/prismplayer/2.8.2/skins/default/aliplayer-min.css" />
|
||||
<script charset="utf-8" type="text/javascript" src="https://g.alicdn.com/de/prismplayer/2.8.2/aliplayer-min.js"></script>
|
||||
<style>
|
||||
.am-modal-bd:after {
|
||||
content: '';
|
||||
display: block;
|
||||
clear: both;
|
||||
}
|
||||
</style>
|
||||
<div class="admin-content">
|
||||
<div class="am-cf am-padding" style="padding:1rem 1.6rem 1.6rem 1rem;margin:0px;">
|
||||
<!-- padding:1px 2px 3px 4px;上、右、下,和左 -->
|
||||
<div class="am-fl am-cf"><strong class="am-text-primary am-text-lg">智慧工地</strong> / <small>摄像头预览</small>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div class="am-g">
|
||||
<div class="am-u-sm-12">
|
||||
<form class="am-form" id="listForm" action="" method="POST">
|
||||
<input type="hidden" id="constructionSiteId" value="${alarmDetail.constructionSiteId!}"/>
|
||||
<table class="am-table am-table-bordered am-table-radius table-main" style="padding:0;">
|
||||
<tbody>
|
||||
<tr>
|
||||
<#--<th class="am-text-middle">报警类型</th>
|
||||
<#--
|
||||
<div class="am-u-sm-10">
|
||||
<select id="type" name="type" data-am-selected="{btnSize: 'sm',maxHeight: 200,searchBox: 1}">
|
||||
<option value="-1" selected>未选择</option>
|
||||
<option value="1">喷淋告警:未喷淋工况</option>
|
||||
<option value="2">出入口告警:未密闭运输</option>
|
||||
<option value="3">出入口告警:车辆未冲洗</option>
|
||||
<option value="4">施工道路告警:道路积尘</option>
|
||||
<option value="5">裸土告警:未裸土覆盖</option>
|
||||
<option value="6">湿法作业告警:未湿法作业</option>
|
||||
<option value="7">移动机械告警:识别到扬尘</option>
|
||||
</select>
|
||||
</div>
|
||||
</td>-->
|
||||
<th class="am-text-middle">拉流范围</th>
|
||||
<td>
|
||||
<div class="am-u-sm-10">
|
||||
<select id="local" name="local" data-am-selected="{btnSize: 'sm',maxHeight: 200,searchBox: 1}">
|
||||
<option value="1" selected>外网拉流</option>
|
||||
<option value="0">局域网拉流</option>
|
||||
</select>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="am-g">
|
||||
<div class="am-u-sm-12">
|
||||
<div class="am-scrollable-horizontal switch-button">
|
||||
<#if camera??>
|
||||
${camera.cameraId!}-${camera.name!}
|
||||
<div id="div_${camera.cameraId!}" style="max-width: 1000px;height: 25px;overflow:hidden"></div>
|
||||
<div id="video_${camera.cameraId}">
|
||||
<#--播放器-->
|
||||
<div class="prism-player" id="J_prismPlayer_${camera.cameraId}"></div>
|
||||
</div>
|
||||
<div style="height: 35px;overflow-y: hidden">
|
||||
<button type="button" class="am-btn am-btn-default am-btn-sm am-text-secondary cameraRtmp" cameraId="${camera.cameraId!}">获取rtmp码流</button>
|
||||
<button type="button" class="am-btn am-btn-default am-btn-sm am-text-secondary cameraM3u8" cameraId="${camera.cameraId!}">获取m3u8码流</button>
|
||||
|
||||
<#--
|
||||
<button type="button" class="am-btn am-btn-default am-btn-sm am-text-secondary alarmStart" cameraId="${camera.cameraId!}" channelName="${camera.name}">开始报警</button>
|
||||
<button type="button" class="am-btn am-btn-default am-btn-sm am-text-secondary alarmShot" cameraId="${camera.cameraId!}" channelName="${camera.name}">画框报警</button>
|
||||
<button type="button" class="am-btn am-btn-default am-btn-sm am-text-secondary alarmEnd" cameraId="${camera.cameraId!}">取消报警</button>-->
|
||||
|
||||
</div>
|
||||
<br/>
|
||||
<#else>
|
||||
告警工地未配置摄像头,无法查看
|
||||
</#if>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<#-- <div class="am-modal am-modal-prompt" tabindex="-1" id="my-prompt">
|
||||
<div class="am-modal-dialog">
|
||||
<div class="am-modal-hd">请选择报警类型</div>
|
||||
<div class="am-modal-bd">
|
||||
<div>
|
||||
<select id="type" name="type" class="am-modal-prompt-input" data-am-selected="{btnSize: 'sm',maxHeight: 200,searchBox: 1}">
|
||||
<option value="1">喷淋告警:未喷淋工况</option>
|
||||
<option value="2">出入口告警:未密闭运输</option>
|
||||
<option value="3">出入口告警:车辆未冲洗</option>
|
||||
<option value="4">施工道路告警:道路积尘</option>
|
||||
<option value="5" selected>裸土告警:未裸土覆盖</option>
|
||||
<option value="6">湿法作业告警:未湿法作业</option>
|
||||
<option value="7">移动机械告警:识别到扬尘</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="am-modal-footer">
|
||||
<span class="am-modal-btn" data-am-modal-cancel>取消</span>
|
||||
<span class="am-modal-btn" data-am-modal-confirm>确定</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>-->
|
||||
|
||||
<#--<div class="prism-player center-block" id="J_prismPlayer"></div>-->
|
||||
|
||||
|
||||
<footer class="admin-content-footer">
|
||||
<hr>
|
||||
</footer>
|
||||
</div>
|
||||
</@defaultLayout.layout>
|
||||
<script src="${base}/assets/js/amazeui.switch.js"></script>
|
||||
<script src="${base}/assets/js/cutshot.js"></script>
|
||||
<script type="text/javascript">
|
||||
|
||||
//保存摄像头和player、video的映射关系,方便通过摄像头拿到player
|
||||
MAP_CAMERA_PLAYER = {};
|
||||
MAP_CAMERA_VIDEO = {};
|
||||
//显示宽高
|
||||
PLAYER_WIDTH=720;
|
||||
PLAYER_HEIGHT=405;
|
||||
|
||||
$(function () {
|
||||
|
||||
//获取rtmp流
|
||||
$(".cameraRtmp").on("click", function () {
|
||||
var cameraId = $(this).attr("cameraId");
|
||||
var local = $("#local").val();
|
||||
cameraUri(cameraId, '${base}/camera/rtmpStream', true, local);
|
||||
});
|
||||
//获取m3u8流
|
||||
$(".cameraM3u8").on("click", function () {
|
||||
var cameraId = $(this).attr("cameraId");
|
||||
var local = $("#local").val();
|
||||
cameraUri(cameraId, '${base}/camera/m3u8Stream', false, local);
|
||||
});
|
||||
|
||||
//自动触发点击事件
|
||||
$('.cameraM3u8').trigger("click");
|
||||
|
||||
/*//开始报警
|
||||
$(".alarmStart").on("click", function () {
|
||||
var cameraId = $(this).attr("cameraId");
|
||||
var channelName = $(this).attr("channelName");
|
||||
var type= $("#type").val();
|
||||
alarmStart(cameraId, channelName, type);
|
||||
});
|
||||
//开始截图报警
|
||||
$(".alarmShot").on("click", function () {
|
||||
var cameraId = $(this).attr("cameraId");
|
||||
var channelName = $(this).attr("channelName");
|
||||
var type= $("#type").val();
|
||||
alarmShot(cameraId, channelName, type);
|
||||
});
|
||||
//结束报警
|
||||
$(".alarmEnd").on("click", function () {
|
||||
var cameraId = $(this).attr("cameraId");
|
||||
alarmEnd(cameraId);
|
||||
|
||||
var cutshot = MAP_CAMERA_VIDEO[cameraId];
|
||||
if(cutshot){
|
||||
cutshot.clearShot();
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
|
||||
function alarmStart(cameraId, channelName, type) {
|
||||
var player = MAP_CAMERA_PLAYER[cameraId];
|
||||
if(undefined == player){
|
||||
parent.layer.msg('请先打开摄像头,否则因为截图无法报警');
|
||||
return;
|
||||
}
|
||||
|
||||
var base64 = draw(player.tag, PLAYER_WIDTH,PLAYER_HEIGHT);
|
||||
|
||||
saveImgAndAlarm(cameraId, channelName, type, base64, "");
|
||||
}
|
||||
|
||||
function alarmShot(cameraId, channelName, type) {
|
||||
var player = MAP_CAMERA_PLAYER[cameraId];
|
||||
if(undefined == player){
|
||||
parent.layer.msg('请先打开摄像头,否则因为截图无法报警');
|
||||
return;
|
||||
}
|
||||
|
||||
var resultImage = MAP_CAMERA_VIDEO[cameraId].getResultImage(player.tag);
|
||||
var base64 = resultImage.base64;
|
||||
var dots = JSON.stringify(resultImage.dots);
|
||||
|
||||
//console.log(base64);
|
||||
//console.log(dots);
|
||||
|
||||
saveImgAndAlarm(cameraId, channelName, type, base64, dots);
|
||||
}
|
||||
|
||||
|
||||
function saveImgAndAlarm(cameraId, channelName, type, base64, dots) {
|
||||
$.ajax({
|
||||
url: "${base}/api/v2/image/b64ToImg",
|
||||
data: {base64: base64},
|
||||
type: "post",
|
||||
dataType: "json",
|
||||
async: false,
|
||||
success: function (data) {
|
||||
//parent.layer.msg(data.msg);
|
||||
$.ajax({
|
||||
url: "${base}/api/v2/cameraAlarm/alarmBegin",
|
||||
data: {cameraId: cameraId, type:type, imageUrl:data.data, channelName:channelName, dots:dots},
|
||||
type: "post",
|
||||
dataType: "json",
|
||||
async: false,
|
||||
success: function (data) {
|
||||
parent.layer.msg(data.msg);
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function alarmEnd(cameraId) {
|
||||
$.ajax({
|
||||
url: "${base}/api/v2/cameraAlarm/alarmEnd",
|
||||
data: {cameraId: cameraId},
|
||||
type: "post",
|
||||
dataType: "json",
|
||||
async: false,
|
||||
success: function (data) {
|
||||
parent.layer.msg(data.msg);
|
||||
}
|
||||
});
|
||||
}
|
||||
*/
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
function cameraUri(cameraId, uri, flash, local) {
|
||||
$.ajax({
|
||||
url: uri,
|
||||
data: {
|
||||
constructionSiteId:$("#constructionSiteId").val(),
|
||||
cameraId:cameraId,
|
||||
local:local
|
||||
},
|
||||
dataType: "json",
|
||||
async: false,
|
||||
success: function (data) {
|
||||
console.log(data);
|
||||
var divId = "div_" + cameraId;
|
||||
$("#"+divId).text(data.data);
|
||||
|
||||
|
||||
createAliplayer(cameraId, data.data, flash);
|
||||
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function createAliplayer(cameraId, uri,flash) {
|
||||
var $myvideo = $("#video_"+cameraId);
|
||||
$myvideo.css('width',PLAYER_WIDTH+'px');
|
||||
$myvideo.css('height',PLAYER_HEIGHT+'px');
|
||||
|
||||
const cutshot = new Cutshot({
|
||||
el: '#video_'+cameraId,
|
||||
color: '#ff0000'
|
||||
}).init();
|
||||
|
||||
var player = new Aliplayer({
|
||||
id: 'J_prismPlayer_' + cameraId,
|
||||
width: PLAYER_WIDTH + 'px',
|
||||
height: PLAYER_HEIGHT + 'px',
|
||||
autoplay: true,
|
||||
rePlay: false,
|
||||
isLive: true,
|
||||
useH5Prism: !flash,
|
||||
useFlashPrism: flash,
|
||||
stashInitialSizeForFlv: 30,
|
||||
trackLog: false,
|
||||
extraInfo: {
|
||||
crossOrigin: 'anonymous',
|
||||
liveRetry:1
|
||||
},
|
||||
source : uri
|
||||
},function(player){
|
||||
console.log('播放器创建好了', player);
|
||||
/*aliplayer会将全局name设置为""导致找不到iframe*/
|
||||
window.name = "mainFrame";
|
||||
});
|
||||
|
||||
//保存映射关系
|
||||
MAP_CAMERA_PLAYER[cameraId] = player;
|
||||
MAP_CAMERA_VIDEO[cameraId] = cutshot;
|
||||
}
|
||||
|
||||
|
||||
function draw(video, width, height) {
|
||||
var canvas = document.createElement("canvas");
|
||||
canvas.width = width;
|
||||
canvas.height = height;
|
||||
var context = canvas.getContext('2d');
|
||||
context.drawImage(video, 0, 0, width, height);
|
||||
var dataUrl = canvas.toDataURL("image/png");
|
||||
//console.log(dataUrl);
|
||||
return dataUrl;
|
||||
}
|
||||
|
||||
})
|
||||
</script>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
@ -1,65 +0,0 @@
|
|||
<#assign base=request.contextPath />
|
||||
<#import "../common/defaultLayout.ftl" as defaultLayout>
|
||||
<@defaultLayout.layout>
|
||||
<script type="text/javascript">
|
||||
var base = '${base}';
|
||||
</script>
|
||||
<div class="admin-content">
|
||||
<div class="admin-content-body">
|
||||
<div class="am-cf am-padding">
|
||||
<div class="am-fl am-cf"><strong class="am-text-primary am-text-lg">工地告警明细</strong>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<form method="post" class="am-form" id="tmpForm"
|
||||
action="${base}/alarm/detail/push/save">
|
||||
<input name="alarmDetailId" id="alarmDetailId" type="hidden" value="${alarmDetailId!}"/>
|
||||
<div class="am-tabs am-margin" data-am-tabs>
|
||||
<ul class="am-tabs-nav am-nav am-nav-tabs">
|
||||
<li class="am-active"><a href="#tab1">推送</a></li>
|
||||
</ul>
|
||||
<div class="am-tabs-bd">
|
||||
<div class="am-tab-panel am-fade am-in am-active" id="tab1">
|
||||
|
||||
<div class="am-g am-form-group am-margin-top" style="display: flex;">
|
||||
<div class="am-u-sm-4 am-u-md-2 am-text-right">
|
||||
<span style="color: red;">*</span>风险等级
|
||||
</div>
|
||||
<div class="am-u-sm-6 am-u-md-6">
|
||||
<select id="pushConfigId" name="pushConfigId"
|
||||
data-am-selected="{btnSize: 'sm',maxHeight: 200,searchBox: 1}">
|
||||
<option value="-1">请选择</option>
|
||||
<#if pushConfigs?exists>
|
||||
<#list pushConfigs as node>
|
||||
<option value="${node.id!}">${node.riskGrade}</option>
|
||||
</#list>
|
||||
</#if>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!--选项卡(tabs)end-->
|
||||
<div class="am-margin">
|
||||
<button type="submit" id="submitBtn" class="am-btn am-btn-primary am-btn-xs"
|
||||
onclick="submit_function()">提交保存
|
||||
</button>
|
||||
<button type="button" class="am-btn am-btn-warning am-btn-xs"
|
||||
onclick="javascript:history.go(-1);">返回上一级
|
||||
</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</@defaultLayout.layout>
|
||||
|
||||
|
||||
<script type="text/javascript">
|
||||
var submit_function = function () {
|
||||
$("#tmpForm").submit();
|
||||
document.getElementById("submitBtn").disabled=true;
|
||||
}
|
||||
</script>
|
|
@ -1,229 +0,0 @@
|
|||
<#assign base=request.contextPath />
|
||||
<#import "../common/defaultLayout.ftl" as defaultLayout>
|
||||
<@defaultLayout.layout>
|
||||
<div class="admin-content">
|
||||
<div class="am-cf am-padding" style="padding:1rem 1.6rem 1.6rem 1rem;margin:0px;">
|
||||
<!-- padding:1px 2px 3px 4px;上、右、下,和左 -->
|
||||
<div class="am-fl am-cf"><strong class="am-text-primary am-text-lg">统计报表</strong> /
|
||||
<small>工地告警统计报表</small>
|
||||
</div>
|
||||
</div>
|
||||
<div class="am-g">
|
||||
<div class="am-u-sm-12">
|
||||
<form class="am-form" id="listForm" action="${base}/alarm/detail/report" method="POST">
|
||||
<input type="hidden" id="keywords" name="keywords" value='${keywords!""}'/>
|
||||
<table class="am-table am-table-bordered am-table-radius table-main" style="padding:0;">
|
||||
<tbody>
|
||||
<tr>
|
||||
<th class="am-text-middle">工地名称</th>
|
||||
<td>
|
||||
<div class="am-u-sm-10">
|
||||
<input type="text" id="constructionSiteName" class="am-form-field am-input-sm"
|
||||
value="${constructionSiteName!}"/>
|
||||
</div>
|
||||
</td>
|
||||
<th class="am-text-middle">告警时间</th>
|
||||
<td>
|
||||
<div class="am-u-sm-10">
|
||||
<div class="am-form am-form-inline">
|
||||
<div class="am-form-group am-form-icon">
|
||||
<i class="am-icon-calendar"></i>
|
||||
<input type="text" class="am-form-field am-input-sm" id="startTime"
|
||||
value="${startTime!}" placeholder="开始日期" data-am-datepicker>
|
||||
</div>
|
||||
<div class="am-form-group">至</div>
|
||||
<div class="am-form-group am-form-icon">
|
||||
<i class="am-icon-calendar"></i>
|
||||
<input type="text" class="am-form-field am-input-sm" id="endTime"
|
||||
value="${endTime!}"
|
||||
placeholder="结束日期" data-am-datepicker>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="4">
|
||||
<div align='left'>
|
||||
<button type="button" class="am-btn am-btn-default am-btn-sm am-text-secondary"
|
||||
id="submit-btn" onclick="sub_function('year')">本年
|
||||
</button>
|
||||
<button type="button" class="am-btn am-btn-default am-btn-sm am-text-secondary"
|
||||
id="submit-btn-export" onclick="sub_function('month')">本月
|
||||
</button>
|
||||
<button type="button" class="am-btn am-btn-default am-btn-sm am-text-secondary"
|
||||
id="submit-btn" onclick="sub_function('week')">本周
|
||||
</button>
|
||||
<button type="button" class="am-btn am-btn-default am-btn-sm am-text-secondary"
|
||||
id="submit-btn-export" onclick="sub_function('day')">本日
|
||||
</button>
|
||||
</div>
|
||||
</td>
|
||||
<td colspan="4">
|
||||
<div align='right'>
|
||||
<button type="button" class="am-btn am-btn-default am-btn-sm am-text-secondary"
|
||||
id="submit-btn" onclick="sub_function('query')">搜索
|
||||
</button>
|
||||
<@shiro.hasPermission name="ALARMDETAILEXPORTREP">
|
||||
<button type="button" class="am-btn am-btn-default am-btn-sm am-text-secondary"
|
||||
id="submit-btn-export" onclick="sub_function('export')">导出
|
||||
</button>
|
||||
</@shiro.hasPermission>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
<div class="am-g">
|
||||
<div class="am-u-sm-12">
|
||||
<div class="am-scrollable-horizontal">
|
||||
<table class="am-table am-table-striped am-table-hover table-main">
|
||||
<thead>
|
||||
<tr class="am-text-nowrap">
|
||||
<#if (reportTable.thead)?exists>
|
||||
<#list reportTable.thead as head>
|
||||
<th class="table-title">${head}</th>
|
||||
</#list>
|
||||
</#if>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<#if (reportTable.tbody)?exists>
|
||||
<#list reportTable.tbody as body>
|
||||
<tr>
|
||||
<td>${body.constructionSiteName!}</td>
|
||||
<#list body.alarmCount as count>
|
||||
<td>${count!}</td>
|
||||
</#list>
|
||||
<td>${body.allCount!}</td>
|
||||
</tr>
|
||||
</#list>
|
||||
</#if>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<#--<div class="am-cf">
|
||||
<!-- 分页 –>
|
||||
<#if (pager.list)?exists>
|
||||
<div class="am-fr">
|
||||
<#include "../common/common_pager.ftl">
|
||||
</div>
|
||||
<#else>
|
||||
<div class="am-kai">
|
||||
<h3>没有找到任何记录!</h3>
|
||||
</div>
|
||||
</#if>
|
||||
</div>-->
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</@defaultLayout.layout>
|
||||
|
||||
<script type="text/javascript">
|
||||
|
||||
/*$(document).ready(function () {
|
||||
var time = new Date();
|
||||
var day = ("0" + time.getDate()).slice(-2);
|
||||
var month = ("0" + (time.getMonth() + 1)).slice(-2);
|
||||
var today = time.getFullYear() + "-" + (month) + "-" + (day);
|
||||
$('#endTime').val(today);
|
||||
})*/
|
||||
|
||||
var sub_function = function (type) {
|
||||
$("#pageNumber").val(1);
|
||||
initSearch();
|
||||
if (type == 'export') {
|
||||
$("#listForm").attr("action", "${base}/alarm/detail/export/report");
|
||||
}
|
||||
if (type == 'query') {
|
||||
$("#listForm").attr("action", "${base}/alarm/detail/report");
|
||||
}
|
||||
if (type == 'year') {
|
||||
$("#listForm").attr("action", "${base}/alarm/detail/count/report?type=year");
|
||||
}
|
||||
if (type == 'month') {
|
||||
$("#listForm").attr("action", "${base}/alarm/detail/count/report?type=month");
|
||||
}
|
||||
if (type == 'week') {
|
||||
$("#listForm").attr("action", "${base}/alarm/detail/count/report?type=week");
|
||||
}
|
||||
if (type == 'day') {
|
||||
$("#listForm").attr("action", "${base}/alarm/detail/count/report?type=day");
|
||||
}
|
||||
$("#listForm").submit();
|
||||
};
|
||||
|
||||
function initSearch() {
|
||||
var keywordsObj = {};
|
||||
if ($("#constructionSiteName").val())
|
||||
keywordsObj.constructionSiteName = $("#constructionSiteName").val();
|
||||
if ($("#startTime").val())
|
||||
keywordsObj.startTime = $("#startTime").val();
|
||||
if ($("#endTime").val())
|
||||
keywordsObj.endTime = $("#endTime").val();
|
||||
var startTime = $("#startTime").val();
|
||||
var endTime = $("#endTime").val();
|
||||
if (startTime > endTime) {
|
||||
window.confirm('开始日期应早于结束日期');
|
||||
}
|
||||
var keywords = "";
|
||||
if (!$.isEmptyObject(keywordsObj)) {
|
||||
keywords = JSON.stringify(keywordsObj);
|
||||
}
|
||||
console.log("keywords = " + keywords);
|
||||
$("#keywords").val(keywords);
|
||||
}
|
||||
|
||||
$(function () {
|
||||
$("body").on('click', '.list-item', function () {
|
||||
$(".list-item").removeClass("tr-selected");
|
||||
$(this).addClass('tr-selected');
|
||||
});
|
||||
$("#allCheck").click(function () {
|
||||
$('input[name="ids"]').prop("checked", this.checked);
|
||||
$("#deleteButton").prop("disabled", $("input[name='ids']:checked").length == 0 ? true : false);
|
||||
});
|
||||
var $citySubBox = $("input[name='ids']");
|
||||
$citySubBox.click(function () {
|
||||
$("#allCheckCity").prop("checked", $citySubBox.length == $("input[name='ids']:checked").length ? true : false);
|
||||
$("#deleteButton").prop("disabled", $("input[name='ids']:checked").length == 0 ? true : false);
|
||||
});
|
||||
|
||||
var keywordsObj = {};
|
||||
$("#submit-btn").on("click", function () {
|
||||
$("#pageNumber").val(1);
|
||||
if ($("#constructionSiteName").val())
|
||||
keywordsObj.constructionSiteName = $("#constructionSiteName").val();
|
||||
if ($("#startTime").val())
|
||||
keywordsObj.startTime = $("#startTime").val();
|
||||
if ($("#endTime").val())
|
||||
keywordsObj.endTime = $("#endTime").val();
|
||||
var keywords = "";
|
||||
if (!$.isEmptyObject(keywordsObj)) {
|
||||
keywords = JSON.stringify(keywordsObj);
|
||||
}
|
||||
console.log("keywords = " + keywords);
|
||||
$("#keywords").val(keywords);
|
||||
$("#listForm").submit();
|
||||
});
|
||||
});
|
||||
</script>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
@ -1,225 +0,0 @@
|
|||
<#assign base=request.contextPath />
|
||||
<#import "../common/defaultLayout.ftl" as defaultLayout>
|
||||
<script src="https://cdn.staticfile.org/echarts/4.3.0/echarts.min.js"></script>
|
||||
<@defaultLayout.layout>
|
||||
<link rel="stylesheet" href="${base}/assets/css/amazeui.min.css"/>
|
||||
<link rel="stylesheet" href="${base}/assets/css/amazeui.switch.css"/>
|
||||
<div class="admin-content">
|
||||
<div class="am-cf am-padding" style="padding:1rem 1.6rem 1.6rem 1rem;margin:0px;">
|
||||
<!-- padding:1px 2px 3px 4px;上、右、下,和左 -->
|
||||
<div class="am-fl am-cf"><strong class="am-text-primary am-text-lg">统计报表</strong> /
|
||||
<small>告警统计趋势分析</small>
|
||||
</div>
|
||||
</div>
|
||||
<div class="am-g">
|
||||
<div class="am-u-sm-12">
|
||||
<form class="am-form" id="listForm" action="${base}/statistics/alarmDetailData" method="POST">
|
||||
<input type="hidden" id="keywords" name="keywords" value='${keywords!""}'/>
|
||||
<table class="am-table am-table-bordered am-table-radius table-main" style="padding:0;">
|
||||
<tbody>
|
||||
<tr>
|
||||
<th class="am-text-middle">工地名称</th>
|
||||
<td>
|
||||
<div class="am-u-sm-10">
|
||||
<select data-am-selected name="constructionSiteId" id="constructionSiteId"/>
|
||||
<#list constructionSiteList as constructionSiteNode >
|
||||
<option value="${constructionSiteNode.id}"
|
||||
<#if constructionSiteId! == constructionSiteNode.id?string>selected </#if>>
|
||||
${constructionSiteNode.projectName}</option>
|
||||
</#list>
|
||||
</select>
|
||||
</div>
|
||||
</td>
|
||||
<th class="am-text-middle">告警时间</th>
|
||||
<td>
|
||||
<div class="am-u-sm-10">
|
||||
<div class="am-form am-form-inline">
|
||||
<div class="am-form-group am-form-icon">
|
||||
<i class="am-icon-calendar"></i>
|
||||
<input type="text" class="am-form-field am-input-sm" id="startTime"
|
||||
value="${startTime!}" placeholder="开始日期" data-am-datepicker readonly>
|
||||
</div>
|
||||
<div class="am-form-group">至</div>
|
||||
<div class="am-form-group am-form-icon">
|
||||
<i class="am-icon-calendar"></i>
|
||||
<input type="text" class="am-form-field am-input-sm" id="endTime"
|
||||
value="${endTime!}"
|
||||
placeholder="结束日期" data-am-datepicker readonly>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td colspan="6">
|
||||
<div align='left'>
|
||||
<@shiro.hasPermission name="STATISTICSQUERY">
|
||||
<button type="button" class="am-btn am-btn-default am-btn-sm am-text-secondary"
|
||||
id="submit-btn" onclick="sub_function('day')">本日
|
||||
</button>
|
||||
<button type="button" class="am-btn am-btn-default am-btn-sm am-text-secondary"
|
||||
id="submit-btn" onclick="sub_function('week')">本周
|
||||
</button>
|
||||
<button type="button" class="am-btn am-btn-default am-btn-sm am-text-secondary"
|
||||
id="submit-btn" onclick="sub_function('month')">本月
|
||||
</button>
|
||||
<button type="button" class="am-btn am-btn-default am-btn-sm am-text-secondary"
|
||||
id="submit-btn" onclick="sub_function('season')">本季
|
||||
</button>
|
||||
<button type="button" class="am-btn am-btn-default am-btn-sm am-text-secondary"
|
||||
id="submit-btn" onclick="sub_function('halfYear')">半年
|
||||
</button>
|
||||
<button type="button" class="am-btn am-btn-default am-btn-sm am-text-secondary"
|
||||
id="submit-btn" onclick="sub_function('year')">本年
|
||||
</button>
|
||||
</@shiro.hasPermission>
|
||||
</div>
|
||||
</td>
|
||||
<td colspan="6">
|
||||
<div align='right'>
|
||||
<button type="button" class="am-btn am-btn-default am-btn-sm am-text-secondary"
|
||||
id="submit-btn" onclick="sub_function('query')">搜索
|
||||
</button>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</form>
|
||||
</div>
|
||||
<div class="am-u-sm-12 am-u-md-12" style="padding:0 1.6rem 1.6rem 1rem;margin:0;">
|
||||
<div class="am-btn-toolbar" style="padding-left:.5rem;">
|
||||
<div class="am-btn-group am-btn-group-xs">
|
||||
<div class="am-btn-group am-btn-group-xs am-form-file">
|
||||
<div id="main" style="width:800px; height: 400px;margin:20px auto"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</@defaultLayout.layout>
|
||||
|
||||
<script src="${base}/assets/js/amazeui.switch.js"></script>
|
||||
<script type=“text/javascript” src="${base}/assets/js/echarts.min.js"></script>
|
||||
|
||||
<script type="text/javascript">
|
||||
var chartDom = document.getElementById('main');
|
||||
var myChart = echarts.init(chartDom);
|
||||
var option;
|
||||
|
||||
var sub_function = function (type) {
|
||||
option.series.length = 0;
|
||||
option.xAxis.data.length = 0;
|
||||
if (type == 'query') {
|
||||
loadDate(option, 'query');
|
||||
} else if (type == 'day') {
|
||||
loadDate(option, 'day');
|
||||
} else if (type == 'week') {
|
||||
loadDate(option, 'week');
|
||||
} else if (type == 'month') {
|
||||
loadDate(option, 'month');
|
||||
} else if (type == 'season') {
|
||||
loadDate(option, 'season');
|
||||
} else if (type == 'halfYear') {
|
||||
loadDate(option, 'halfYear');
|
||||
} else if (type == 'year') {
|
||||
loadDate(option, 'year');
|
||||
}
|
||||
};
|
||||
|
||||
option = {
|
||||
/*title: {
|
||||
text: '告警统计折线图'
|
||||
},*/
|
||||
tooltip: {
|
||||
trigger: 'axis'
|
||||
},
|
||||
legend: {
|
||||
data: []
|
||||
},
|
||||
grid: {
|
||||
left: '3%',
|
||||
right: '4%',
|
||||
bottom: '3%',
|
||||
containLabel: true
|
||||
},
|
||||
toolbox: {
|
||||
feature: {
|
||||
saveAsImage: {}
|
||||
}
|
||||
},
|
||||
xAxis: {
|
||||
type: 'category',
|
||||
boundaryGap: false,
|
||||
data: []
|
||||
},
|
||||
yAxis: {
|
||||
type: 'value'
|
||||
},
|
||||
series: []
|
||||
};
|
||||
|
||||
myChart.setOption(option);
|
||||
|
||||
window.onload = function () {
|
||||
loadDate(option, "default");
|
||||
}
|
||||
|
||||
function loadDate(option, type) {
|
||||
var startTime = $("#startTime").val();
|
||||
var endTime = $("#endTime").val();
|
||||
var new_date = new Date(endTime);
|
||||
var old_date = new Date(startTime);
|
||||
|
||||
var difftime = (new_date - old_date) / 1000; //计算时间差,并把毫秒转换成秒
|
||||
|
||||
var days = parseInt(difftime / 86400); // 天 24*60*60*1000
|
||||
|
||||
if (startTime > endTime) {
|
||||
window.confirm('开始日期应早于结束日期');
|
||||
return;
|
||||
}
|
||||
if (days > 7) {
|
||||
window.confirm('请输入开始和结束相差七天的日期');
|
||||
return;
|
||||
}
|
||||
var constructionSiteId = $("#constructionSiteId").val();
|
||||
var params = {
|
||||
startDate: startTime, endDate: endTime, constructionSiteId: constructionSiteId, type: type
|
||||
};
|
||||
$.ajax({
|
||||
url: "${base}/statistics/alarmDetailData",
|
||||
dataType: "json",
|
||||
type: "post",
|
||||
data: params,
|
||||
async: false,
|
||||
success: function (data) {
|
||||
var dates = data.dateStr;
|
||||
$.each(dates, function (index, value) {
|
||||
option.xAxis.data.push(value);
|
||||
});
|
||||
|
||||
var series = data.seriesData;
|
||||
$.each(series, function (index, value) {
|
||||
option.series.push(value);
|
||||
console.info(index + " option.series==================" + option.series[index].data)
|
||||
});
|
||||
|
||||
var titles = data.titles;
|
||||
$.each(titles, function (index, value) {
|
||||
option.legend.data.push(value);
|
||||
});
|
||||
|
||||
myChart.setOption(option);
|
||||
|
||||
},
|
||||
error: function (msg) { // 若Ajax处理失败后回调函数,msg是返回的错误信息
|
||||
console.log(msg);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
</script>
|
|
@ -1,115 +0,0 @@
|
|||
<#assign base=request.contextPath />
|
||||
<#import "../common/defaultLayout.ftl" as defaultLayout>
|
||||
<@defaultLayout.layout>
|
||||
<link rel="stylesheet" href="../assets/css/amazeui.switch.css"/>
|
||||
<div class="admin-content">
|
||||
<div class="am-cf am-padding" style="padding:1rem 1.6rem 1.6rem 1rem;margin:0px;">
|
||||
<!-- padding:1px 2px 3px 4px;上、右、下,和左 -->
|
||||
<div class="am-fl am-cf"><strong class="am-text-primary am-text-lg">工地管理</strong> /
|
||||
<small>重点关注类型</small>
|
||||
</div>
|
||||
</div>
|
||||
<div class="am-g">
|
||||
<div class="am-btn-toolbar" style="padding-left:.5rem;">
|
||||
<div class="am-btn-group am-btn-group-xs">
|
||||
<@shiro.hasPermission name="ALARMTYPE_DELETE">
|
||||
<button type="button" id="deleteButton" disabled="disabled" class="am-btn am-btn-default"
|
||||
onclick="deleteAll('${base}/alarmType/delete')"><span
|
||||
class="am-icon-trash-o"></span> 删除
|
||||
</button>
|
||||
</@shiro.hasPermission>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="am-g">
|
||||
<div class="am-u-sm-12">
|
||||
<div class="am-scrollable-horizontal">
|
||||
<table class="am-table am-table-striped am-table-hover table-main">
|
||||
<thead>
|
||||
<tr class="am-text-nowrap">
|
||||
<th class="table-check"><input type="checkbox" id="allCheck"></th>
|
||||
<th class="table-title">类型名称</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<#if (pager.list)?exists && (pager.list?size>0)>
|
||||
<#list pager.list as list>
|
||||
<tr>
|
||||
<td><input type="checkbox" name="ids" value="${list.id}"/></td>
|
||||
<td>${list.name!}</td>
|
||||
</tr>
|
||||
</#list>
|
||||
</#if>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</@defaultLayout.layout>
|
||||
<script type="text/javascript">
|
||||
|
||||
$(function () {
|
||||
$("body").on('click', '.list-item', function () {
|
||||
$(".list-item").removeClass("tr-selected");
|
||||
$(this).addClass('tr-selected');
|
||||
});
|
||||
$("#allCheck").click(function () {
|
||||
$('input[name="ids"]').prop("checked", this.checked);
|
||||
$("#deleteButton").prop("disabled", $("input[name='ids']:checked").length == 0 ? true : false);
|
||||
});
|
||||
var $citySubBox = $("input[name='ids']");
|
||||
$citySubBox.click(function () {
|
||||
$("#allCheckCity").prop("checked", $citySubBox.length == $("input[name='ids']:checked").length ? true : false);
|
||||
$("#deleteButton").prop("disabled", $("input[name='ids']:checked").length == 0 ? true : false);
|
||||
});
|
||||
});
|
||||
|
||||
// 删除
|
||||
var deleteAll = function (url) {
|
||||
var $deleteButton = $("#deleteButton");// 删除按钮
|
||||
var ids = "";
|
||||
$("input[name='ids']:checked").each(function () {
|
||||
ids += $(this).val() + "#%#";
|
||||
});
|
||||
var params = {ids: ids};
|
||||
if (window.confirm('确定要删除吗?')) {
|
||||
$.ajax({
|
||||
url: url,
|
||||
data: params,
|
||||
dataType: "json",
|
||||
async: false,
|
||||
beforeSend: function (data) {
|
||||
$deleteButton.prop("disabled", true)
|
||||
},
|
||||
success: function (data) {
|
||||
$deleteButton.prop("disabled", false)
|
||||
if (data.status == 0) {
|
||||
alert("删除成功");
|
||||
window.location.href = window.location.href;
|
||||
} else if (data.status == 1) {
|
||||
alert("删除失败");
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
</script>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
@ -1,130 +0,0 @@
|
|||
<#assign base=request.contextPath />
|
||||
<#import "../common/defaultLayout.ftl" as defaultLayout>
|
||||
<@defaultLayout.layout>
|
||||
<link rel="stylesheet" href="../assets/css/amazeui.switch.css"/>
|
||||
<script type="text/javascript">
|
||||
var base = '${base}';
|
||||
</script>
|
||||
<div class="admin-content">
|
||||
<div class="admin-content-body">
|
||||
<div class="am-cf am-padding">
|
||||
<div class="am-fl am-cf"><strong class="am-text-primary am-text-lg">工地管理</strong> /
|
||||
<small>告警类型</small>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<form method="post" class="am-form" id="tmpForm"
|
||||
action="${base}/alarmType/save">
|
||||
<input name="alarmTypeId" id="alarmTypeId" type="hidden" value="${alarmTypeId!}"/>
|
||||
<div class="am-tabs am-margin" data-am-tabs>
|
||||
<ul class="am-tabs-nav am-nav am-nav-tabs">
|
||||
<li class="am-active"><a href="#tab1">新增/编辑</a></li>
|
||||
</ul>
|
||||
<div class="am-tabs-bd">
|
||||
<div class="am-tab-panel am-fade am-in am-active" id="tab1">
|
||||
<div class="am-g am-form-group am-margin-top" style="display: flex;">
|
||||
<div class="am-u-sm-4 am-u-md-2 am-text-right">
|
||||
<span style="color: red;">*</span>告警类型</div>
|
||||
<div class="am-u-sm-6 am-u-md-6">
|
||||
<input class="js-ajax-validate" name="name" data-validation-message="请输入告警类型名称(20字符以内)"
|
||||
minlength="1" maxlength="20"
|
||||
value="${alarmType.name!}" type="text" required/>
|
||||
</div>
|
||||
<div class="am-u-sm-2 am-u-md-4 input-msg"></div>
|
||||
</div>
|
||||
<div class="am-g am-form-group am-margin-top" style="display: flex;">
|
||||
<div class="am-u-sm-4 am-u-md-2 am-text-right">
|
||||
<span style="color: red;">*</span>类型标识</div>
|
||||
<div class="am-u-sm-6 am-u-md-6">
|
||||
<input class="js-ajax-validate" name="type" data-validation-message="请输入类型标识(10字符以内)"
|
||||
minlength="1" maxlength="10"
|
||||
value="${alarmType.type!}"
|
||||
type="text" required/>
|
||||
</div>
|
||||
<div class="am-u-sm-2 am-u-md-4 input-msg"></div>
|
||||
</div>
|
||||
<div class="am-g am-form-group am-margin-top" style="display: flex;">
|
||||
<div class="am-u-sm-4 am-u-md-2 am-text-right">ICON</div>
|
||||
<div class="am-u-sm-6 am-u-md-6">
|
||||
<input class="js-ajax-validate" name="icon" data-validation-message="请输入类型ICON(20字符以内)"
|
||||
minlength="1" maxlength="20"
|
||||
value="${alarmType.icon!}"
|
||||
type="text"/>
|
||||
</div>
|
||||
<div class="am-u-sm-2 am-u-md-4 input-msg"></div>
|
||||
</div>
|
||||
<div class="am-g am-form-group am-margin-top" style="display: flex;">
|
||||
<div class="am-u-sm-4 am-u-md-2 am-text-right">图标名称</div>
|
||||
<div class="am-u-sm-6 am-u-md-6">
|
||||
<input class="js-ajax-validate" name="iconName" data-validation-message="请输入类型图标名称(20字符以内)"
|
||||
minlength="1" maxlength="20"
|
||||
value="${alarmType.iconName!}"
|
||||
type="text"/>
|
||||
</div>
|
||||
<div class="am-u-sm-2 am-u-md-4 input-msg"></div>
|
||||
</div>
|
||||
<div class="am-g am-form-group am-margin-top" style="display: flex;">
|
||||
<div class="am-u-sm-4 am-u-md-2 am-text-right">弹窗类型</div>
|
||||
<div class="am-u-sm-6 am-u-md-6">
|
||||
<input class="js-ajax-validate" name="dialogType" data-validation-message="请输入弹窗类型(20字符以内)"
|
||||
minlength="1" maxlength="20"
|
||||
value="${alarmType.dialogType!}"
|
||||
type="text"/>
|
||||
</div>
|
||||
<div class="am-u-sm-2 am-u-md-4 input-msg"></div>
|
||||
</div>
|
||||
|
||||
<div class="am-g am-form-group am-margin-top">
|
||||
<div class="am-u-sm-4 am-u-md-2 am-text-right">启用/禁用</div>
|
||||
|
||||
<div class="am-u-sm-12 am-u-md-4 switch-button" style="height: 25px;">
|
||||
<input id="switch" name="switch" type="checkbox" data-size='xs'
|
||||
data-am-switch data-off-text="禁用" data-on-text="启用"
|
||||
<#if alarmType.isEnable==1 >checked</#if>
|
||||
/>
|
||||
<input type="hidden" class="am-input-sm" name="isEnable" id="isEnable"
|
||||
value="${alarmType.isEnable!1}"/>
|
||||
</div>
|
||||
|
||||
<div class="am-hide-sm-only am-u-md-1" style="color: red;"></div>
|
||||
<div class="am-u-sm-2 am-u-md-5 input-msg"></div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!--选项卡(tabs)end-->
|
||||
<div class="am-margin">
|
||||
<button type="submit" id="submitBtn" class="am-btn am-btn-primary am-btn-xs">提交保存</button>
|
||||
<button type="button" class="am-btn am-btn-warning am-btn-xs"
|
||||
onclick="javascript:history.go(-1);">返回上一级
|
||||
</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</@defaultLayout.layout>
|
||||
<script src="${base}/common/jQuery-File-Upload/js/vendor/jquery.ui.widget.js"></script>
|
||||
<script type="text/javascript" src="${base}/common/jQuery-File-Upload/js/jquery.iframe-transport.js"></script>
|
||||
<script type="text/javascript" src="${base}/common/jQuery-File-Upload/js/jquery.fileupload.js"></script>
|
||||
<script src="${base}/common/jQuery-File-Upload/js/jquery.fileupload-process.js"></script>
|
||||
<script src="${base}/common/jQuery-File-Upload/js/jquery.fileupload-validate.js"></script>
|
||||
<script src="../assets/js/amazeui.switch.js"></script>
|
||||
|
||||
<script>
|
||||
var $mycheckbox = $('.switch-button');
|
||||
$mycheckbox.each(function () {
|
||||
$("#switch").on({
|
||||
'switchChange.bootstrapSwitch': function (event, state) {
|
||||
if (state.toString() == "true") {
|
||||
$("#isEnable").val("1");
|
||||
} else {
|
||||
$("#isEnable").val("0");
|
||||
}
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
</script>
|
|
@ -1,277 +0,0 @@
|
|||
<#assign base=request.contextPath />
|
||||
<#import "../common/defaultLayout.ftl" as defaultLayout>
|
||||
<@defaultLayout.layout>
|
||||
<link rel="stylesheet" href="../assets/css/amazeui.switch.css"/>
|
||||
<div class="admin-content">
|
||||
<div class="am-cf am-padding" style="padding:1rem 1.6rem 1.6rem 1rem;margin:0px;">
|
||||
<!-- padding:1px 2px 3px 4px;上、右、下,和左 -->
|
||||
<div class="am-fl am-cf"><strong class="am-text-primary am-text-lg">工地管理</strong> /
|
||||
<small>告警类型</small>
|
||||
</div>
|
||||
</div>
|
||||
<div class="am-g">
|
||||
<div class="am-u-sm-12">
|
||||
<form class="am-form" id="listForm" action="${base}/alarmType/list" method="POST">
|
||||
<input type="hidden" id="keywords" name="keywords" value='${keywords!""}'/>
|
||||
<table class="am-table am-table-bordered am-table-radius table-main" style="padding:0;">
|
||||
<tbody>
|
||||
<tr>
|
||||
<th class="am-text-middle">类型名称</th>
|
||||
<td>
|
||||
<div class="am-u-sm-10">
|
||||
<input type="text" id="name" class="am-form-field am-input-sm"
|
||||
value="${name!}"/>
|
||||
</div>
|
||||
</td>
|
||||
<th class="am-text-middle">启用状态</th>
|
||||
<td>
|
||||
<div class="am-u-sm-10">
|
||||
<select data-am-selected="{btnWidth: '40%', btnSize: 'sm'" id="isEnable">
|
||||
<option value="-1">全部</option>
|
||||
<option value="1" <#if isEnable! == "1">selected</#if> >启用</option>
|
||||
<option value="0" <#if isEnable! == "0">selected</#if> >禁用</option>
|
||||
</select>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="4">
|
||||
<div align='right'>
|
||||
<button type="button" class="am-btn am-btn-default am-btn-sm am-text-secondary"
|
||||
id="submit-btn" onclick="sub_function('query')">搜索
|
||||
</button>
|
||||
<@shiro.hasPermission name="ALARMTYPE_EXPORT">
|
||||
<button type="button" class="am-btn am-btn-default am-btn-sm am-text-secondary"
|
||||
id="submit-btn-export" onclick="sub_function('export')">导出
|
||||
</button>
|
||||
</@shiro.hasPermission>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</form>
|
||||
</div>
|
||||
<div class="am-btn-toolbar" style="padding-left:.5rem;">
|
||||
<div class="am-btn-group am-btn-group-xs">
|
||||
<@shiro.hasPermission name="ALARMTYPE_ADD">
|
||||
<button type="button" class="am-btn am-btn-default"
|
||||
onclick="location.href='${base}/alarmType/add'">
|
||||
<span class="am-icon-plus"></span> 新增
|
||||
</button>
|
||||
</@shiro.hasPermission>
|
||||
<@shiro.hasPermission name="ALARMTYPE_DELETE">
|
||||
<button type="button" id="deleteButton" disabled="disabled" class="am-btn am-btn-default"
|
||||
onclick="deleteAll('${base}/alarmType/delete')"><span
|
||||
class="am-icon-trash-o"></span> 删除
|
||||
</button>
|
||||
</@shiro.hasPermission>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="am-g">
|
||||
<div class="am-u-sm-12">
|
||||
<div class="am-scrollable-horizontal">
|
||||
<table class="am-table am-table-striped am-table-hover table-main">
|
||||
<thead>
|
||||
<tr class="am-text-nowrap">
|
||||
<th class="table-check"><input type="checkbox" id="allCheck"></th>
|
||||
<th class="table-title">类型名称</th>
|
||||
<th class="table-title">类型标识</th>
|
||||
<th class="table-title">ICON</th>
|
||||
<th class="table-title">弹窗类型</th>
|
||||
<th class="table-title">操作</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<#if (pager.list)?exists && (pager.list?size>0)>
|
||||
<#list pager.list as list>
|
||||
<tr>
|
||||
<td><input type="checkbox" name="ids" value="${list.id}"/></td>
|
||||
<td>${list.name!}</td>
|
||||
<td>${list.type!}</td>
|
||||
<td>${list.icon!}</td>
|
||||
<td>${list.dialogType!}</td>
|
||||
<td>
|
||||
<div id="edit-div" class="am-btn-toolbar switch-button">
|
||||
<div class="am-btn-group am-btn-group-xs">
|
||||
<@shiro.hasPermission name="ALARMTYPE_EDIT">
|
||||
<button type="button"
|
||||
class="am-btn am-btn-default am-btn-xs am-text-secondary"
|
||||
onclick="location.href='${base}/alarmType/edit?id=${list.id?c}'">
|
||||
<span class="am-icon-pencil-square-o"></span>编辑
|
||||
</button>
|
||||
</@shiro.hasPermission>
|
||||
<input id="${list.id}" type="checkbox" data-size='xs'
|
||||
data-am-switch data-off-text="已禁用" data-on-text="已启用"
|
||||
<#if list.isEnable==1 >checked</#if>
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</#list>
|
||||
</#if>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<div class="am-cf">
|
||||
<!-- 分页 -->
|
||||
<#if (pager.list)?exists && (pager.list?size>0) >
|
||||
<div class="am-fr">
|
||||
<#include "../common/order_list_pager.ftl">
|
||||
</div>
|
||||
<#else>
|
||||
<div class="am-kai" align="center">
|
||||
<h3>没有找到任何记录!</h3>
|
||||
</div>
|
||||
</#if>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</@defaultLayout.layout>
|
||||
|
||||
<script src="../assets/js/amazeui.switch.js"></script>
|
||||
<script type="text/javascript">
|
||||
|
||||
var sub_function = function (type) {
|
||||
$("#pageNumber").val(1);
|
||||
initSearch();
|
||||
if (type == 'export') {
|
||||
$("#listForm").attr("action", "${base}/alarmType/export");
|
||||
} else {
|
||||
$("#listForm").attr("action", "${base}/alarmType/list");
|
||||
var index = layer.load(1, {
|
||||
shade: [0.1, '#fff'] //0.1透明度的白色背景
|
||||
});
|
||||
}
|
||||
$("#listForm").submit();
|
||||
};
|
||||
|
||||
function initSearch() {
|
||||
var keywordsObj = {};
|
||||
if ($("#name").val())
|
||||
keywordsObj.name = $("#name").val();
|
||||
if ($("#isEnable").val())
|
||||
keywordsObj.isEnable = $("#isEnable").val();
|
||||
var keywords = "";
|
||||
if (!$.isEmptyObject(keywordsObj)) {
|
||||
keywords = JSON.stringify(keywordsObj);
|
||||
}
|
||||
console.log("keywords = " + keywords);
|
||||
$("#keywords").val(keywords);
|
||||
}
|
||||
|
||||
$(function () {
|
||||
//为每个启用或禁用按钮增加事件
|
||||
var $mycheckbox = $('.switch-button').find("input[type='checkbox']");
|
||||
$mycheckbox.each(function () {
|
||||
var myid = $(this).attr("id");
|
||||
var prop = $(this).attr("prop");
|
||||
|
||||
|
||||
$(this).on({
|
||||
'switchChange.bootstrapSwitch': function (event, state) {
|
||||
toggle(myid, state ? 1 : 0);
|
||||
}
|
||||
});
|
||||
|
||||
});
|
||||
});
|
||||
|
||||
//启用或者禁用
|
||||
var toggle = function (id, status) {
|
||||
$.ajax({
|
||||
url: "${base}/alarmType/enableOrDisable",
|
||||
data: {id: id, status: status},
|
||||
type: "post",
|
||||
dataType: "json",
|
||||
async: false,
|
||||
success: function (data) {
|
||||
parent.layer.msg(data.msg);
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
$(function () {
|
||||
$("body").on('click', '.list-item', function () {
|
||||
$(".list-item").removeClass("tr-selected");
|
||||
$(this).addClass('tr-selected');
|
||||
});
|
||||
$("#allCheck").click(function () {
|
||||
$('input[name="ids"]').prop("checked", this.checked);
|
||||
$("#deleteButton").prop("disabled", $("input[name='ids']:checked").length == 0 ? true : false);
|
||||
});
|
||||
var $citySubBox = $("input[name='ids']");
|
||||
$citySubBox.click(function () {
|
||||
$("#allCheckCity").prop("checked", $citySubBox.length == $("input[name='ids']:checked").length ? true : false);
|
||||
$("#deleteButton").prop("disabled", $("input[name='ids']:checked").length == 0 ? true : false);
|
||||
});
|
||||
|
||||
var keywordsObj = {};
|
||||
$("#submit-btn").on("click", function () {
|
||||
$("#pageNumber").val(1);
|
||||
if ($("#name").val())
|
||||
keywordsObj.name = $("#name").val();
|
||||
if ($("#isEnable").val())
|
||||
keywordsObj.isEnable = $("#isEnable").val();
|
||||
var keywords = "";
|
||||
if (!$.isEmptyObject(keywordsObj)) {
|
||||
keywords = JSON.stringify(keywordsObj);
|
||||
}
|
||||
console.log("keywords = " + keywords);
|
||||
$("#keywords").val(keywords);
|
||||
$("#listForm").submit();
|
||||
});
|
||||
});
|
||||
|
||||
// 删除
|
||||
var deleteAll = function (url) {
|
||||
var $deleteButton = $("#deleteButton");// 删除按钮
|
||||
var ids = "";
|
||||
$("input[name='ids']:checked").each(function () {
|
||||
ids += $(this).val() + "#%#";
|
||||
});
|
||||
var params = {ids: ids};
|
||||
if (window.confirm('确定要删除吗?')) {
|
||||
$.ajax({
|
||||
url: url,
|
||||
data: params,
|
||||
dataType: "json",
|
||||
async: false,
|
||||
beforeSend: function (data) {
|
||||
$deleteButton.prop("disabled", true)
|
||||
},
|
||||
success: function (data) {
|
||||
$deleteButton.prop("disabled", false)
|
||||
if (data.status == 0) {
|
||||
alert("删除成功");
|
||||
window.location.href = window.location.href;
|
||||
} else if (data.status == 1) {
|
||||
alert("删除失败");
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
</script>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
@ -1,154 +0,0 @@
|
|||
<#assign base=request.contextPath />
|
||||
<#import "../common/defaultLayout.ftl" as defaultLayout>
|
||||
<@defaultLayout.layout>
|
||||
|
||||
<div class="admin-content">
|
||||
<div class="admin-content-body">
|
||||
<div class="am-cf am-padding">
|
||||
<div class="am-fl am-cf"><strong class="am-text-primary am-text-lg">系统管理</strong> / <small>前端资源管理</small></div>
|
||||
</div>
|
||||
|
||||
<form method="post" class="am-form" id="pmsForm"
|
||||
action="${base}/app/permission/save">
|
||||
<!--选项卡(tabs)begin-->
|
||||
<div class="am-tabs am-margin" data-am-tabs>
|
||||
<ul class="am-tabs-nav am-nav am-nav-tabs">
|
||||
<li class="am-active"><a href="#tab1">资源配置</a></li>
|
||||
</ul>
|
||||
<div class="am-tabs-bd">
|
||||
<div class="am-tab-panel am-fade am-in am-active" id="tab1">
|
||||
<input name="permissionID" id="permissionID" type="hidden"
|
||||
value="${permissionID!}" />
|
||||
<!--验证表单元素(validate) begin-->
|
||||
|
||||
<div class="am-g am-form-group am-margin-top">
|
||||
<div class="am-u-sm-4 am-u-md-2 am-text-right">
|
||||
<span style="color: red;">*</span>名称
|
||||
</div>
|
||||
<div class="am-u-sm-6 am-u-md-6">
|
||||
<input name="name" class="js-ajax-validate"
|
||||
data-validate-async data-validation-message="请输入资源名称(10字符以内)"
|
||||
type="text" id="name" value="${permission.name!}" minlength="1"
|
||||
maxlength="10" placeholder="请输入资源名称(10字符以内)" required />
|
||||
</div>
|
||||
<div class="am-u-sm-2 am-u-md-4 input-msg"></div>
|
||||
</div>
|
||||
|
||||
<div class="am-g am-form-group am-margin-top">
|
||||
<div class="am-u-sm-4 am-u-md-2 am-text-right">
|
||||
图标
|
||||
</div>
|
||||
<div class="am-u-sm-6 am-u-md-6">
|
||||
<input type="text" class="am-input" name="icon" maxlength="50"
|
||||
value="${permission.icon!}" />
|
||||
</div>
|
||||
<div class="am-u-sm-2 am-u-md-4 input-msg"></div>
|
||||
</div>
|
||||
|
||||
<div class="am-g am-form-group am-margin-top">
|
||||
<div class="am-u-sm-4 am-u-md-2 am-text-right"><span style="color: red;">*</span>URL</div>
|
||||
<div class="am-u-sm-6 am-u-md-6">
|
||||
<input type="text" class="am-input" data-validate-async data-validation-message="请输入资源URL地址(50字符以内)"
|
||||
name="url" placeholder="请输入资源URL地址(50字符以内)" maxlength="50"
|
||||
value="${permission.url!}" required />
|
||||
</div>
|
||||
<div class="am-u-sm-2 am-u-md-4 input-msg"></div>
|
||||
</div>
|
||||
|
||||
<div class="am-g am-form-group am-margin-top">
|
||||
<div class="am-u-sm-4 am-u-md-2 am-text-right"><span style="color: red;">*</span>权限编码</div>
|
||||
<div class="am-u-sm-6 am-u-md-6">
|
||||
<input type="text" class="am-input" data-validate-async data-validation-message="请输入权限编码(20字符以内)"
|
||||
name="permission" placeholder="请输入权限编码(20字符以内)" maxlength="20"
|
||||
value="${permission.permission!}" required />
|
||||
</div>
|
||||
<div class="am-u-sm-2 am-u-md-4 input-msg"></div>
|
||||
</div>
|
||||
|
||||
<div class="am-g am-form-group am-margin-top">
|
||||
<div class="am-u-sm-4 am-u-md-2 am-text-right"><span style="color: red;">*</span>父ID</div>
|
||||
<div class="am-u-sm-6 am-u-md-6">
|
||||
<input type="text" class="am-input js-pattern-sort" data-validate-async data-validation-message="请输入该资源的父ID(纯数字)"
|
||||
name="parentId" placeholder="请输入该资源的父ID" maxlength="11" onkeyup="value=value.replace(/[^\d]/g,'') "
|
||||
onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\d]/g,''))"
|
||||
<#if (permissionID == "-1") > value="" <#else> value="${permission.parentId!}" </#if> required />
|
||||
</div>
|
||||
<div class="am-u-sm-2 am-u-md-4 input-msg"></div>
|
||||
</div>
|
||||
|
||||
<div class="am-g am-form-group am-margin-top">
|
||||
<div class="am-u-sm-4 am-u-md-2 am-text-right"><span style="color: red;">*</span>LEVEL</div>
|
||||
<div class="am-u-sm-6 am-u-md-6">
|
||||
<select data-am-selected id="level" name="level">
|
||||
<option value="1" <#if permission.level == 1 > selected </#if> >1</option>
|
||||
<option value="2" <#if permission.level == 2 > selected </#if> >2</option>
|
||||
<option value="3" <#if permission.level == 3 > selected </#if> >3</option>
|
||||
<option value="4" <#if permission.level == 4 > selected </#if> >4</option>
|
||||
<option value="5" <#if permission.level == 5 > selected </#if> >5</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="am-u-sm-2 am-u-md-4 input-msg"></div>
|
||||
</div>
|
||||
|
||||
<div class="am-g am-form-group am-margin-top">
|
||||
<div class="am-u-sm-4 am-u-md-2 am-text-right"><span style="color: red;">*</span>节点类型</div>
|
||||
<div class="am-u-sm-6 am-u-md-6">
|
||||
<select data-am-selected id="type" name="type">
|
||||
<option value="1" <#if permission.type == 1 > selected </#if> >非叶子节点</option>
|
||||
<option value="2" <#if permission.type == 2 > selected </#if> >叶子节点</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="am-u-sm-2 am-u-md-4 input-msg"></div>
|
||||
</div>
|
||||
|
||||
<div class="am-g am-form-group am-margin-top">
|
||||
<div class="am-u-sm-4 am-u-md-2 am-text-right"><span style="color: red;">*</span>排序</div>
|
||||
<div class="am-u-sm-6 am-u-md-6">
|
||||
<input type="text" class="am-input js-pattern-sort" name="sort" data-validation-message="排序不能为空且只能是纯数字" placeholder="请输入纯数字,越小越向前" maxlength="11" required
|
||||
value="${permission.sort!}" />
|
||||
</div>
|
||||
<div class="am-u-sm-2 am-u-md-4 input-msg"></div>
|
||||
</div>
|
||||
|
||||
<div class="am-g am-form-group am-margin-top">
|
||||
<div class="am-u-sm-4 am-u-md-2 am-text-right">备注</div>
|
||||
<div class="am-u-sm-6 am-u-md-6">
|
||||
<input type="text" class="am-input" data-validate-async data-validation-message="请输入备注信息(100字符以内)"
|
||||
name="remark" placeholder="请输入备注信息(100字符以内)" maxlength="100"
|
||||
value="${permission.remark!}" />
|
||||
</div>
|
||||
<div class="am-u-sm-2 am-u-md-4 input-msg"></div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<!--验证表单元素(validate end-->
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!--选项卡(tabs)end-->
|
||||
<div class="am-margin">
|
||||
<button type="submit" class="am-btn am-btn-primary am-btn-xs">提交保存</button>
|
||||
<button type="button" class="am-btn am-btn-warning am-btn-xs"
|
||||
onclick="javascript:history.go(-1);">返回上一级</button>
|
||||
</div>
|
||||
</form>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</@defaultLayout.layout>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
@ -1,236 +0,0 @@
|
|||
<#assign base=request.contextPath />
|
||||
<#import "../common/defaultLayout.ftl" as defaultLayout>
|
||||
<@defaultLayout.layout>
|
||||
<div class="admin-content">
|
||||
<div class="am-cf am-padding" style="padding:1rem 1.6rem 1.6rem 1rem;margin:0px;">
|
||||
<!-- padding:1px 2px 3px 4px;上、右、下,和左 -->
|
||||
<div class="am-fl am-cf"><strong class="am-text-primary am-text-lg">系统管理</strong> /
|
||||
<small>前端资源管理</small>
|
||||
</div>
|
||||
</div>
|
||||
<div class="am-g">
|
||||
<div class="am-u-sm-12">
|
||||
<form class="am-form" id="listForm" action="${base}/app/permission/list" method="POST">
|
||||
<input type="hidden" id="keywords" name="keywords" value='${keywords!""}'/>
|
||||
<table class="am-table am-table-bordered am-table-radius table-main" style="padding:0;">
|
||||
<tbody>
|
||||
<tr>
|
||||
<th class="am-text-middle">资源名称</th>
|
||||
<td>
|
||||
<div class="am-u-sm-10">
|
||||
<input type="text" id="pmsName" class="am-form-field am-input-sm"
|
||||
value="${pmsName!}"/>
|
||||
</div>
|
||||
</td>
|
||||
<th class="am-text-middle">资源编码</th>
|
||||
<td>
|
||||
<div class="am-u-sm-10">
|
||||
<input type="text" id="pmsCode" class="am-form-field am-input-sm"
|
||||
value="${pmsCode!}"/>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<td colspan="4">
|
||||
<div align='right'>
|
||||
<button type="button" class="am-btn am-btn-default am-btn-sm am-text-secondary"
|
||||
id="submit-btn">搜索
|
||||
</button>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</form>
|
||||
</div>
|
||||
<div class="am-u-sm-12 am-u-md-12" style="padding:0 1.6rem 1.6rem 1rem;margin:0;">
|
||||
<div class="am-btn-toolbar" style="padding-left:.5rem;">
|
||||
<div class="am-btn-group am-btn-group-xs">
|
||||
<@shiro.hasPermission name="APPPERMISSION_ADD">
|
||||
<button type="button" class="am-btn am-btn-default"
|
||||
onclick="location.href='${base}/app/permission/add'">
|
||||
<span class="am-icon-plus"></span> 新增
|
||||
</button>
|
||||
</@shiro.hasPermission>
|
||||
<@shiro.hasPermission name="APPPERMISSION_DELETE">
|
||||
<button type="button" id="deleteButton" disabled="disabled" class="am-btn am-btn-default"
|
||||
onclick="deleteAll('${base}/app/permission/delete')"><span
|
||||
class="am-icon-trash-o"></span> 删除
|
||||
</button>
|
||||
</@shiro.hasPermission>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="am-g">
|
||||
<div class="am-u-sm-12">
|
||||
<div class="am-scrollable-horizontal">
|
||||
<table class="am-table am-table-striped am-table-hover table-main">
|
||||
<thead>
|
||||
<tr class="am-text-nowrap">
|
||||
<th class="table-check"><input type="checkbox" id="allCheck"></th>
|
||||
<th class="table-id">主键ID</th>
|
||||
<th class="table-title">资源名称</th>
|
||||
<th class="table-title">是否有效</th>
|
||||
<th class="table-title">URL</th>
|
||||
<th class="table-title">CODE</th>
|
||||
<th class="table-title">父ID</th>
|
||||
<th class="table-title">LEVEL</th>
|
||||
<th class="table-title">节点类型</th>
|
||||
<th class="table-title">排序</th>
|
||||
<th class="table-date">创建时间</th>
|
||||
<th class="table-date">最近更新时间</th>
|
||||
<th class="table-set">操作</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<#if (pager.list)?exists>
|
||||
<#list pager.list as list>
|
||||
<tr>
|
||||
<td><input type="checkbox" name="ids" value="${list.id}"/></td>
|
||||
<td>${list.id!}</td>
|
||||
<td>${list.name!}</td>
|
||||
<td> <#if (list.isDeleted ==0) >
|
||||
有效
|
||||
<#else>
|
||||
无效
|
||||
</#if>
|
||||
</td>
|
||||
<td>${list.url!}</td>
|
||||
<td>${list.permission!}</td>
|
||||
<td>${list.parentId!}</td>
|
||||
<td>${list.level!}</td>
|
||||
<td>
|
||||
<#if (list.type ==1) >
|
||||
非叶子节点
|
||||
<#else>
|
||||
叶子节点
|
||||
</#if>
|
||||
</td>
|
||||
<td>${list.sort!}</td>
|
||||
<td><#if list.createdTime??>${list.createdTime?datetime}</#if></td>
|
||||
<td><#if list.lastUpdatedTime??>${list.lastUpdatedTime?datetime}</#if></td>
|
||||
<td>
|
||||
<div class="am-btn-toolbar">
|
||||
<div class="am-btn-group am-btn-group-xs">
|
||||
<@shiro.hasPermission name="APPPERMISSION_EDIT">
|
||||
<button type="button"
|
||||
class="am-btn am-btn-default am-btn-xs am-text-secondary"
|
||||
onclick="location.href='${base}/app/permission/edit?id=${list.id?c}'"><span
|
||||
class="am-icon-pencil-square-o"></span>编辑
|
||||
</button>
|
||||
</@shiro.hasPermission>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</#list>
|
||||
</#if>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<div class="am-cf">
|
||||
<!-- 分页 -->
|
||||
<#if (pager.list)?exists && (pager.list?size>0) >
|
||||
<div class="am-fr">
|
||||
<#include "../common/common_pager.ftl">
|
||||
</div>
|
||||
<#else>
|
||||
<div class="am-kai" align="center">
|
||||
<h3>没有找到任何记录!</h3>
|
||||
</div>
|
||||
</#if>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</@defaultLayout.layout>
|
||||
|
||||
<script type="text/javascript">
|
||||
|
||||
$(function () {
|
||||
$("body").on('click', '.list-item', function () {
|
||||
$(".list-item").removeClass("tr-selected");
|
||||
$(this).addClass('tr-selected');
|
||||
});
|
||||
$("#allCheck").click(function () {
|
||||
$('input[name="ids"]').prop("checked", this.checked);
|
||||
$("#deleteButton").prop("disabled", $("input[name='ids']:checked").length == 0 ? true : false);
|
||||
});
|
||||
var $citySubBox = $("input[name='ids']");
|
||||
$citySubBox.click(function () {
|
||||
$("#allCheckCity").prop("checked", $citySubBox.length == $("input[name='ids']:checked").length ? true : false);
|
||||
$("#deleteButton").prop("disabled", $("input[name='ids']:checked").length == 0 ? true : false);
|
||||
});
|
||||
|
||||
var keywordsObj = {};
|
||||
$("#submit-btn").on("click", function () {
|
||||
$("#pageNumber").val(1);
|
||||
if ($("#pmsName").val())
|
||||
keywordsObj.pmsName = $("#pmsName").val();
|
||||
if ($("#pmsCode").val()) {
|
||||
keywordsObj.pmsCode = $("#pmsCode").val();
|
||||
}
|
||||
var keywords = "";
|
||||
if (!$.isEmptyObject(keywordsObj)) {
|
||||
keywords = JSON.stringify(keywordsObj);
|
||||
}
|
||||
console.log("keywords = " + keywords);
|
||||
|
||||
$("#keywords").val(keywords);
|
||||
$("#listForm").submit();
|
||||
});
|
||||
|
||||
|
||||
});
|
||||
|
||||
// 删除
|
||||
var deleteAll = function (url) {
|
||||
var $deleteButton = $("#deleteButton");// 删除按钮
|
||||
var ids = "";
|
||||
$("input[name='ids']:checked").each(function () {
|
||||
ids += $(this).val() + "#%#";
|
||||
});
|
||||
var params = {ids: ids};
|
||||
if (window.confirm('确定要删除吗?')) {
|
||||
$.ajax({
|
||||
url: url,
|
||||
data: params,
|
||||
dataType: "json",
|
||||
async: false,
|
||||
beforeSend: function (data) {
|
||||
$deleteButton.prop("disabled", true)
|
||||
},
|
||||
success: function (data) {
|
||||
$deleteButton.prop("disabled", false)
|
||||
if (data.status == 0) {
|
||||
alert("删除成功");
|
||||
window.location.href = window.location.href;
|
||||
} else if (data.status == 1) {
|
||||
alert("删除失败");
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
</script>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
@ -1,455 +0,0 @@
|
|||
<#assign base=request.contextPath />
|
||||
<#import "../common/defaultLayout.ftl" as defaultLayout>
|
||||
<@defaultLayout.layout>
|
||||
|
||||
<div class="admin-content">
|
||||
<div class="admin-content-body">
|
||||
<div class="am-cf am-padding">
|
||||
<div class="am-fl am-cf"><strong class="am-text-primary am-text-lg">系统管理</strong> /
|
||||
<small>前端角色管理</small></div>
|
||||
</div>
|
||||
<form method="post" class="am-form" id="tmpForm" action="${base}/app/role/allocation/save">
|
||||
<!--选项卡(tabs)begin-->
|
||||
<div class="am-tabs am-margin" data-am-tabs>
|
||||
<ul class="am-tabs-nav am-nav am-nav-tabs">
|
||||
<li class="am-active">
|
||||
<a href="#tab1">前端角色权限分配</a>
|
||||
</li>
|
||||
</ul>
|
||||
<div class="am-tabs-bd">
|
||||
<div class="am-tab-panel am-fade am-in am-active" id="tab1">
|
||||
<input name="roleID" id="roleID" type="hidden" value="${roleID!}"/>
|
||||
<!--验证表单元素(validate) begin-->
|
||||
<!--input begin-->
|
||||
<div class="am-g am-form-group am-margin-top">
|
||||
|
||||
<div class="am-u-sm-4 am-u-md-2 am-text-right">角色名称</div>
|
||||
<div class="am-u-sm-8 am-u-md-10">
|
||||
<input class="js-ajax-validate" name="roleName" value="${managerRole.roleName!}"
|
||||
type="text" disabled/>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="am-g am-form-group am-margin-top">
|
||||
<div class="am-u-sm-4 am-u-md-2 am-text-right">管理权限</div>
|
||||
<div class="am-u-sm-8 am-u-md-10">
|
||||
<table class="am-table am-table-striped am-table-hover table-main">
|
||||
<thead>
|
||||
<tr class="am-text-nowrap">
|
||||
<th class="table-check"><input type="checkbox" id="allCheck"></th>
|
||||
<th class="table-title">资源名称</th>
|
||||
<th class="table-title">CODE</th>
|
||||
<th class="table-title">是否已分配</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<#if (allocationPermissions)?exists>
|
||||
<#list allocationPermissions as list>
|
||||
<tr>
|
||||
<td><input type="checkbox" name="ids" value="${list.permissionId}"
|
||||
<#if (list.isAllocation ==0) >checked</#if>/>
|
||||
</td>
|
||||
<td>${list.permissionName!}</td>
|
||||
<td>${list.perminssionCode!}</td>
|
||||
<td>
|
||||
<#if (list.isAllocation ==1) >
|
||||
未分配
|
||||
<#else>
|
||||
已分配
|
||||
</#if>
|
||||
</td>
|
||||
</tr>
|
||||
</#list>
|
||||
</#if>
|
||||
</tbody>
|
||||
</table>
|
||||
<#--<table class="am-table am-table-striped am-table-hover am-table-bordered">
|
||||
<thead>
|
||||
<tr>
|
||||
<th width="30%">导航名称</th>
|
||||
<th>权限分配</th>
|
||||
<th width="10%">全选</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr level="${permnode.level}" class="level-${permnode.level}"
|
||||
<#if permnode.hasLeafNode >
|
||||
type="file"
|
||||
<#else>
|
||||
type="folder"
|
||||
</#if>
|
||||
>
|
||||
<td width="30%" class="role-authority-name">
|
||||
<#if permnode.hasLeafNode >
|
||||
<i class="am-icon-file-text"> </i>
|
||||
<#else>
|
||||
<i class="am-icon-folder-open"> </i>
|
||||
</#if>${permnode.name}
|
||||
</td>
|
||||
<td class="role-authority-checks">
|
||||
</td>
|
||||
<td align="center">
|
||||
<input class="role-authority-checkall" name="checkAll" type="checkbox" value="${permnode.id}" />
|
||||
</td>
|
||||
</tr>
|
||||
<@bpTree nodes= permnode.subNodes/>
|
||||
|
||||
</tbody>
|
||||
</table>-->
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!--选项卡(tabs)end-->
|
||||
<div class="am-margin">
|
||||
<#--<button type="submit" class="am-btn am-btn-primary am-btn-xs">提交保存</button>-->
|
||||
<button type="button" id="deleteButton"
|
||||
class="am-btn am-btn-warning am-btn-xs"
|
||||
onclick="saveAll('${base}/app/role/allocation/save')"><span></span>保存
|
||||
</button>
|
||||
<button type="button" class="am-btn am-btn-warning am-btn-xs" onclick="javascript:history.go(-1);">
|
||||
返回上一级
|
||||
</button>
|
||||
</div>
|
||||
</form>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</@defaultLayout.layout>
|
||||
|
||||
<#--<#macro bpTree nodes>
|
||||
<#list nodes as node>
|
||||
<tr level="${node.level}" class="level-${node.level}"
|
||||
<#if node.hasLeafNode >
|
||||
type="file"
|
||||
<#else>
|
||||
type="folder"
|
||||
</#if>
|
||||
>
|
||||
<td width="30%" class="role-authority-name">
|
||||
<#if node.level==2 >
|
||||
|
||||
<#elseif node.level==3 >
|
||||
|
||||
<#elseif node.level==4 >
|
||||
|
||||
<#else>
|
||||
|
||||
</#if>
|
||||
<#if node.hasLeafNode >
|
||||
<i class="am-icon-file-text"> </i>
|
||||
<#else>
|
||||
<i class="am-icon-folder-open"> </i>
|
||||
</#if>${node.name}
|
||||
</td>
|
||||
<td class="role-authority-checks">
|
||||
<#if node.hasLeafNode >
|
||||
<#list node.subNodes as subNode>
|
||||
|
||||
<input id="rptList_cblActionType_${subNode.id!}" type="checkbox" name="rptList$ctl$cblActionType$${subNode.id!}" value="${subNode.id}" <#if subNode.selected >checked </#if> />${subNode.name}</label>
|
||||
|
||||
</#list>
|
||||
</#if>
|
||||
</td>
|
||||
<td align="center">
|
||||
<input class="role-authority-checkall" name="checkAll" type="checkbox" value="${node.id}" />
|
||||
</td>
|
||||
</tr>
|
||||
<#if (!node.hasLeafNode) && node.subNodes?? && node.subNodes?size gt 0>
|
||||
<@bpTree nodes=node.subNodes />
|
||||
</#if>
|
||||
</#list>
|
||||
</#macro>
|
||||
|
||||
|
||||
|
||||
</style>-->
|
||||
<script src="${base}/assets/js/amazeui.switch.js"></script>
|
||||
<script type="text/javascript">
|
||||
var urlBase = "${base}";
|
||||
var url;
|
||||
|
||||
$(function () {
|
||||
/*表单提交 start*/
|
||||
var keywordsObj = {};
|
||||
$("#submit-btn").on("click", function () {
|
||||
if ($("#name").val())
|
||||
keywordsObj.name = $("#name").val();
|
||||
if ($("#roleId").val())
|
||||
keywordsObj.roleId = parseInt($("#roleId").val());
|
||||
if ($("#phone").val())
|
||||
keywordsObj.phone = $("#phone").val();
|
||||
if ($("#regionId").val())
|
||||
keywordsObj.regionId = parseInt($("#regionId").val());
|
||||
if ($("#company").val())
|
||||
keywordsObj.company = $("#company").val();
|
||||
var keywords = "";
|
||||
if (!$.isEmptyObject(keywordsObj)) {
|
||||
keywords = JSON.stringify(keywordsObj);
|
||||
}
|
||||
console.log("keywords = " + keywords);
|
||||
$("#keywords").val(keywords);
|
||||
$("#listForm").submit();
|
||||
});
|
||||
/*表单提交 end*/
|
||||
|
||||
/*复选框全选效果 start*/
|
||||
$("body").on('click', '.list-item', function () {
|
||||
$(".list-item").removeClass("tr-selected");
|
||||
$(this).addClass('tr-selected');
|
||||
});
|
||||
$("#allCheck").click(function () {
|
||||
$('input[name="ids"]').prop("checked", this.checked);
|
||||
$("#deleteButton").prop("disabled", $("input[name='ids']:checked").length == 0 ? true : false);
|
||||
});
|
||||
var $citySubBox = $("input[name='ids']");
|
||||
$citySubBox.click(function () {
|
||||
$("#allCheckCity").prop("checked", $citySubBox.length == $("input[name='ids']:checked").length ? true : false);
|
||||
$("#deleteButton").prop("disabled", $("input[name='ids']:checked").length == 0 ? true : false);
|
||||
});
|
||||
/*复选框全选效果 end*/
|
||||
|
||||
});
|
||||
|
||||
|
||||
var saveAll = function (url) {
|
||||
var $deleteButton = $("#deleteButton");// 删除按钮
|
||||
var ids = "";
|
||||
$("input[name='ids']:checked").each(function () {
|
||||
ids += $(this).val() + "#%#";
|
||||
});
|
||||
var params = {ids: ids, roleId:${roleID}};
|
||||
$.ajax({
|
||||
url: url,
|
||||
data: params,
|
||||
dataType: "json",
|
||||
async: false,
|
||||
beforeSend: function (data) {
|
||||
$deleteButton.prop("disabled", true)
|
||||
},
|
||||
success: function (data) {
|
||||
$deleteButton.prop("disabled", false)
|
||||
if (data.status == 0) {
|
||||
alert(data.msg);
|
||||
window.location.href = window.location.href;
|
||||
} else if (data.status == 1) {
|
||||
alert(data.msg);
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
</script>
|
||||
<#--<script type="text/javascript" src="${base}/admin/js/role.js"></script>
|
||||
<script type="text/javascript">
|
||||
|
||||
/!*角色名称检验 start*!/
|
||||
var urlBase = "${base}";
|
||||
var url;
|
||||
function checkRoleName(obj){
|
||||
var roleName = obj.val();
|
||||
var roleID = $("#roleID").val();
|
||||
if(roleName.length == 0){
|
||||
showRoleNameAlert($("#roleName").date("data-validation-message"));
|
||||
return;
|
||||
}
|
||||
$.ajax({
|
||||
url : urlBase + "/role/check",
|
||||
type : 'POST',
|
||||
dataType : 'json',
|
||||
data : {
|
||||
role_id : roleID, role_name : roleName
|
||||
},
|
||||
cache : false
|
||||
}).done(function (result) {
|
||||
if (result.status==0) {
|
||||
showRoleNameAlert(result.msg);
|
||||
obj.focus();
|
||||
}else{
|
||||
showRoleNameAlert(result.msg);
|
||||
}
|
||||
|
||||
}).fail(function (){
|
||||
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
function clearValidInfo(){
|
||||
showRoleNameAlert("");
|
||||
}
|
||||
function showRoleNameAlert(message){
|
||||
var $alert = $("#role_name_valid").find('.am-alert');
|
||||
if (!$alert.length) {
|
||||
$alert = $('<div class="am-alert am-alert-danger"></div>').hide()
|
||||
$alert.appendTo($("#role_name_valid"));
|
||||
}
|
||||
if(message.length==0){
|
||||
$alert.hide();
|
||||
}else{
|
||||
$alert.text(message).show();
|
||||
}
|
||||
}
|
||||
/!*角色名称检验 end*!/
|
||||
|
||||
|
||||
/!*复选框 全选:start*!/
|
||||
$(".role-authority-checkall").click(function(){
|
||||
var $parentNode = $(this).parent().parent();
|
||||
var level = Number($parentNode.attr("level"));
|
||||
var $allParentNextNode = $parentNode.nextUntil(".level-"+level);
|
||||
var isChecked = $(this).is(":checked");
|
||||
$allParentNextNode.each(function(){
|
||||
var myLevel = Number($(this).attr("level"));
|
||||
var $checks = $(this).children().find("input[type='checkbox']");
|
||||
if(myLevel > level){
|
||||
return changeCheckedStatus($checks,isChecked);
|
||||
}else{
|
||||
return;
|
||||
}
|
||||
});
|
||||
|
||||
var $checks = $(this).parent().prev().find("input[type='checkbox']");
|
||||
changeCheckedStatus($checks,isChecked);
|
||||
});
|
||||
|
||||
function changeCheckedStatus(checksObj,isChecked){
|
||||
checksObj.each(function(){
|
||||
if(isChecked){
|
||||
$(this).prop("checked",true);
|
||||
}else{
|
||||
$(this).prop("checked",false);
|
||||
}
|
||||
});
|
||||
}
|
||||
/!*复选框 全选:end*!/
|
||||
|
||||
$(function() {
|
||||
/!*表单验证:begin*!/
|
||||
//自定义规则,用法:验证元素上加class="js-pattern-sort"
|
||||
if ($.AMUI && $.AMUI.validator) {
|
||||
$.AMUI.validator.patterns.sort = /^([0-9]+)$/;
|
||||
}
|
||||
$("#tmpForm").validator({
|
||||
// 域通过验证时回调
|
||||
onValid: function(validity) {
|
||||
$(validity.field).closest('.am-form-group').find('.am-alert').hide();
|
||||
},
|
||||
// 域验证通过时添加的操作,通过该接口可定义各种验证提示
|
||||
markValid: function(validity) {
|
||||
// this is Validator instance
|
||||
var $field = $(validity.field);
|
||||
//add by zxl,只对有required属性的字段进行验证
|
||||
if(typeof($field.attr("required"))!="undefined"){
|
||||
var options = this.options;
|
||||
var $parent = $field.closest('.am-form-group');
|
||||
$field.addClass(options.validClass).
|
||||
removeClass(options.inValidClass);
|
||||
|
||||
$parent.addClass('am-form-success').removeClass('am-form-error');
|
||||
|
||||
options.onValid.call(this, validity);
|
||||
}
|
||||
},
|
||||
// 验证出错时的回调, validity 对象包含相关信息,格式通 H5 表单元素的 validity 属性
|
||||
onInValid: function(validity) {
|
||||
var $field = $(validity.field);
|
||||
var $group = $field.closest('.am-form-group');
|
||||
var $alert = $group.find('.am-alert');
|
||||
// 使用自定义的提示信息 或 插件内置的提示信息
|
||||
var msg = $field.data('validationMessage') || this.getValidationMessage(validity);
|
||||
|
||||
if (!$alert.length) {
|
||||
$alert = $("<div class='am-alert am-alert-danger'></div>").hide().
|
||||
appendTo($group.find(".input-msg"));
|
||||
}
|
||||
console.log("onInValid : "+$field.val());
|
||||
$alert.html(msg).show();
|
||||
}
|
||||
});
|
||||
/!*表单验证:end*!/
|
||||
|
||||
/!*树形结构 展开折叠效果:start *!/
|
||||
$(".role-authority-name").click(function(){
|
||||
var $parentNode = $(this).parent();
|
||||
var level = Number($parentNode.attr("level"));
|
||||
var $allParentNextNode = $parentNode.nextUntil(".level-"+level);
|
||||
var $iNode = $parentNode.find("i");
|
||||
var $lastNode = $allParentNextNode.last();
|
||||
$allParentNextNode.each(function(){
|
||||
var myLevel = Number($(this).attr("level"));
|
||||
var $myINode = $(this).find("i");
|
||||
var type = $(this).attr("type");
|
||||
if(myLevel > level){
|
||||
if($iNode.attr("class") == "am-icon-folder-open"){
|
||||
$(this).css("display","none");
|
||||
if(type == "folder"){
|
||||
$myINode.attr("class","am-icon-folder");
|
||||
}
|
||||
}else if($iNode.attr("class") == "am-icon-folder"){
|
||||
if(type == "folder"){
|
||||
$myINode.attr("class","am-icon-folder-open");
|
||||
}
|
||||
$(this).css("display","");
|
||||
}
|
||||
if($(this).is($lastNode)){
|
||||
if($iNode.attr("class") == "am-icon-folder-open"){
|
||||
$iNode.attr("class","am-icon-folder");
|
||||
}else if($iNode.attr("class") == "am-icon-folder"){
|
||||
$iNode.attr("class","am-icon-folder-open");
|
||||
}
|
||||
}
|
||||
}else{
|
||||
if($(this).is($lastNode)){
|
||||
if($iNode.attr("class") == "am-icon-folder-open"){
|
||||
$iNode.attr("class","am-icon-folder");
|
||||
}else if($iNode.attr("class") == "am-icon-folder"){
|
||||
$iNode.attr("class","am-icon-folder-open");
|
||||
}
|
||||
}
|
||||
return;
|
||||
}
|
||||
});
|
||||
});
|
||||
/!*树形结构 展开折叠效果:end *!/
|
||||
|
||||
});
|
||||
|
||||
|
||||
</script>-->
|
||||
<style type="text/css">
|
||||
/*验证:提示信息样式 begin*/
|
||||
.am-alert-danger {
|
||||
background-color: transparent;
|
||||
border-color: transparent;
|
||||
color: red;
|
||||
}
|
||||
|
||||
.am-alert {
|
||||
margin-bottom: 1em;
|
||||
padding: .625em;
|
||||
background: transparent;
|
||||
border: none;
|
||||
border-radius: 0;
|
||||
}
|
||||
|
||||
/*验证:提示信息样式 end*/
|
||||
</style>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
@ -1,79 +0,0 @@
|
|||
<#assign base=request.contextPath />
|
||||
<#import "../common/defaultLayout.ftl" as defaultLayout>
|
||||
<@defaultLayout.layout>
|
||||
<link rel="stylesheet" href="${base}/assets/css/amazeui.switch.css"/>
|
||||
<script type="text/javascript">
|
||||
var base = '${base}';
|
||||
</script>
|
||||
<div class="admin-content">
|
||||
<div class="admin-content-body">
|
||||
<div class="am-cf am-padding">
|
||||
<div class="am-fl am-cf"><strong class="am-text-primary am-text-lg">系统管理</strong> /
|
||||
<small>前端角色管理</small>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<form method="post" class="am-form" id="tmpForm" action="${base}/app/role/save">
|
||||
<input name="roleID" id="roleID" type="hidden" value="${roleID!}"/>
|
||||
<div class="am-tabs am-margin" data-am-tabs>
|
||||
<ul class="am-tabs-nav am-nav am-nav-tabs">
|
||||
<li class="am-active"><a href="#tab1">新增/编辑</a></li>
|
||||
</ul>
|
||||
<div class="am-tabs-bd">
|
||||
<div class="am-tab-panel am-fade am-in am-active" id="tab1">
|
||||
<div class="am-g am-form-group am-margin-top" style="display: flex;">
|
||||
<div class="am-u-sm-4 am-u-md-2 am-text-right">
|
||||
<span style="color: red;">*</span>角色名称</div>
|
||||
<div class="am-u-sm-6 am-u-md-6">
|
||||
<input class="js-ajax-validate" name="roleName" value="${managerRole.roleName!}"
|
||||
type="text" required minlength="1" maxlength="100"
|
||||
placeholder="请输入角色名称(100字符以内)"/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="am-g am-form-group am-margin-top" style="display: flex;">
|
||||
<div class="am-u-sm-4 am-u-md-2 am-text-right"> 启用 / 禁用</div>
|
||||
<div class="am-u-sm-12 am-u-md-4 switch-button" style="height: 25px;">
|
||||
<input id="switch" name="switch" type="checkbox" data-size='xs'
|
||||
data-am-switch data-off-text="禁用" data-on-text="启用"
|
||||
<#if managerRole.isEnable==1 >checked</#if>/>
|
||||
<input type="hidden" class="am-input-sm" name="isEnable" id="isEnable"
|
||||
value="${managerRole.isEnable!1}"/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!--选项卡(tabs)end-->
|
||||
<div class="am-margin">
|
||||
<button type="submit" id="submitBtn" class="am-btn am-btn-primary am-btn-xs">提交保存</button>
|
||||
<button type="button" class="am-btn am-btn-warning am-btn-xs"
|
||||
onclick="javascript:history.go(-1);">返回上一级
|
||||
</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</@defaultLayout.layout>
|
||||
<script src="${base}/common/jQuery-File-Upload/js/vendor/jquery.ui.widget.js"></script>
|
||||
<script type="text/javascript" src="${base}/common/jQuery-File-Upload/js/jquery.iframe-transport.js"></script>
|
||||
<script type="text/javascript" src="${base}/common/jQuery-File-Upload/js/jquery.fileupload.js"></script>
|
||||
<script src="${base}/common/jQuery-File-Upload/js/jquery.fileupload-process.js"></script>
|
||||
<script src="${base}/common/jQuery-File-Upload/js/jquery.fileupload-validate.js"></script>
|
||||
<script src="${base}/assets/js/amazeui.switch.js"></script>
|
||||
|
||||
<script>
|
||||
var $mycheckbox = $('.switch-button');
|
||||
$mycheckbox.each(function () {
|
||||
$("#switch").on({
|
||||
'switchChange.bootstrapSwitch': function (event, state) {
|
||||
if (state.toString() == "true") {
|
||||
$("#isEnable").val("1");
|
||||
} else {
|
||||
$("#isEnable").val("0");
|
||||
}
|
||||
}
|
||||
});
|
||||
});
|
||||
</script>
|
|
@ -1,219 +0,0 @@
|
|||
<#assign base=request.contextPath />
|
||||
<#import "../common/defaultLayout.ftl" as defaultLayout>
|
||||
<@defaultLayout.layout>
|
||||
<link rel="stylesheet" href="${base}/assets/css/amazeui.switch.css"/>
|
||||
<div class="admin-content">
|
||||
<div class="am-cf am-padding" style="padding:1rem 1.6rem 1.6rem 1rem;margin:0px;">
|
||||
<!-- padding:1px 2px 3px 4px;上、右、下,和左 -->
|
||||
<div class="am-fl am-cf"><strong class="am-text-primary am-text-lg">系统管理</strong> /
|
||||
<small>前端角色管理</small>
|
||||
</div>
|
||||
</div>
|
||||
<form class="am-form" id="list-form" action="${base}/app/role/list" method="post">
|
||||
<input type="hidden" id="keywords" name="keywords" value='${keywords!""}'/>
|
||||
<div class="am-g">
|
||||
<div class="am-u-sm-12 am-u-md-6" style="padding:0px 1.6rem 1.6rem 1rem;margin:0px;">
|
||||
<div class="am-btn-toolbar">
|
||||
<div class="am-btn-group am-btn-group-xs">
|
||||
<@shiro.hasPermission name="APPROLE_ADD">
|
||||
<button type="button" class="am-btn am-btn-default"
|
||||
onclick="location.href='${base}/app/role/add'">
|
||||
<span class="am-icon-plus"></span>
|
||||
新增
|
||||
</button>
|
||||
</@shiro.hasPermission>
|
||||
<@shiro.hasPermission name="APPROLE_DELETE">
|
||||
<button type="button" id="deleteButton" disabled="disabled"
|
||||
class="am-btn am-btn-default"
|
||||
onclick="deleteAll('${base}/app/role/delete')"><span
|
||||
class="am-icon-trash-o"></span> 删除
|
||||
</button>
|
||||
</@shiro.hasPermission>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="am-u-sm-12 am-u-md-3">
|
||||
<div class="am-input-group am-input-group-sm">
|
||||
<input type="text" class="am-form-field" id="roleName" value="${roleName!}"
|
||||
placeholder="按角色名称搜索"/>
|
||||
<span class="am-input-group-btn">
|
||||
<button id="searchButton" class="am-btn am-btn-default" type="button">搜索</button>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
<div class="am-g">
|
||||
<div class="am-u-sm-12 am-scrollable-horizontal">
|
||||
<!-- padding:1px 2px 3px 4px;上、右、下,和左 -->
|
||||
<table class="am-table am-table-striped am-table-hover table-main">
|
||||
<thead>
|
||||
<tr class="am-text-nowrap">
|
||||
<th class="table-check">
|
||||
<input type="checkbox" id="allCheck"></th>
|
||||
<th class="table-title">角色名称</th>
|
||||
<th class="table-date">创建日期</th>
|
||||
<th class="table-set am-text-center">操作</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<#if (pager.list)?exists>
|
||||
<#list pager.list as list>
|
||||
<tr>
|
||||
<td>
|
||||
<input type="checkbox" name="ids" value="${list.id}"/>
|
||||
</td>
|
||||
<td>${list.roleName!}</td>
|
||||
<td><#if list.createdTime??>${list.createdTime?datetime}</#if></td>
|
||||
<td>
|
||||
<div id="edit-div" class="am-btn-toolbar switch-button">
|
||||
<div class="am-btn-group am-btn-group-xs">
|
||||
<@shiro.hasPermission name="APPROLE_EDIT">
|
||||
<button type="button"
|
||||
class="am-btn am-btn-default am-btn-xs am-text-secondary"
|
||||
onclick="location.href='${base}/app/role/edit?id=${list.id?c}'">
|
||||
<span class="am-icon-pencil-square-o"></span>
|
||||
编辑
|
||||
</button>
|
||||
</@shiro.hasPermission>
|
||||
<input id="${list.id}" type="checkbox" data-size='xs'
|
||||
data-am-switch data-off-text="已禁用" data-on-text="已启用"
|
||||
<#if list.isEnable==1 >checked</#if>
|
||||
/>
|
||||
<@shiro.hasPermission name="APPROLE_ALLOCATION">
|
||||
<button type="button"
|
||||
class="am-btn am-btn-default am-btn-xs am-text-secondary"
|
||||
onclick="location.href='${base}/app/role/allocation?id=${list.id?c}'">
|
||||
<span class="am-icon-pencil-square-o"></span>
|
||||
分配权限
|
||||
</button>
|
||||
</@shiro.hasPermission>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</#list>
|
||||
</#if>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<div class="am-cf">
|
||||
<!-- 分页 -->
|
||||
<#if (pager.list)?exists && (pager.list?size>0) >
|
||||
<div class="am-fr">
|
||||
<#include "../common/common_pager.ftl">
|
||||
</div>
|
||||
<#else>
|
||||
<div class="am-kai" align="center">
|
||||
<h3>没有找到任何记录!</h3>
|
||||
</div>
|
||||
</#if>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</@defaultLayout.layout>
|
||||
|
||||
<script src="${base}/assets/js/amazeui.switch.js"></script>
|
||||
<script type="text/javascript">
|
||||
var urlBase = "${base}";
|
||||
var url;
|
||||
|
||||
$(function () {
|
||||
/*表单提交 start*/
|
||||
var keywordsObj = {};
|
||||
$("#searchButton").on("click", function () {
|
||||
if ($("#roleName").val()) {
|
||||
keywordsObj.roleName = $("#roleName").val();
|
||||
}
|
||||
var keywords = "";
|
||||
if (!$.isEmptyObject(keywordsObj)) {
|
||||
keywords = JSON.stringify(keywordsObj);
|
||||
}
|
||||
console.log("keywords = " + keywords);
|
||||
$("#keywords").val(keywords);
|
||||
$("#list-form").submit();
|
||||
});
|
||||
/*表单提交 end*/
|
||||
|
||||
/*复选框全选效果 start*/
|
||||
$("body").on('click', '.list-item', function () {
|
||||
$(".list-item").removeClass("tr-selected");
|
||||
$(this).addClass('tr-selected');
|
||||
});
|
||||
$("#allCheck").click(function () {
|
||||
$('input[name="ids"]').prop("checked", this.checked);
|
||||
$("#deleteButton").prop("disabled", $("input[name='ids']:checked").length == 0 ? true : false);
|
||||
});
|
||||
var $citySubBox = $("input[name='ids']");
|
||||
$citySubBox.click(function () {
|
||||
$("#allCheckCity").prop("checked", $citySubBox.length == $("input[name='ids']:checked").length ? true : false);
|
||||
$("#deleteButton").prop("disabled", $("input[name='ids']:checked").length == 0 ? true : false);
|
||||
});
|
||||
/*复选框全选效果 end*/
|
||||
|
||||
});
|
||||
|
||||
/*批量删除角色 start*/
|
||||
var deleteAll = function (url) {
|
||||
var $deleteButton = $("#deleteButton");// 删除按钮
|
||||
var ids = "";
|
||||
$("input[name='ids']:checked").each(function () {
|
||||
ids += $(this).val() + "#%#";
|
||||
});
|
||||
var params = {ids: ids};
|
||||
if (window.confirm('确定要删除吗?')) {
|
||||
$.ajax({
|
||||
url: url,
|
||||
data: params,
|
||||
dataType: "json",
|
||||
async: false,
|
||||
beforeSend: function (data) {
|
||||
$deleteButton.prop("disabled", true)
|
||||
},
|
||||
success: function (data) {
|
||||
$deleteButton.prop("disabled", false)
|
||||
if (data.status == 0) {
|
||||
alert(data.msg);
|
||||
window.location.href = window.location.href;
|
||||
} else if (data.status == 1) {
|
||||
alert(data.msg);
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
/*批量删除角色 end*/
|
||||
|
||||
$(function () {
|
||||
//为每个启用或禁用按钮增加事件
|
||||
var $mycheckbox = $('.switch-button').find("input[type='checkbox']");
|
||||
$mycheckbox.each(function () {
|
||||
var myid = $(this).attr("id");
|
||||
var prop = $(this).attr("prop");
|
||||
|
||||
|
||||
$(this).on({
|
||||
'switchChange.bootstrapSwitch': function (event, state) {
|
||||
toggle(myid, state ? 1 : 0);
|
||||
}
|
||||
});
|
||||
|
||||
});
|
||||
});
|
||||
|
||||
//启用或者禁用
|
||||
var toggle = function (id, status) {
|
||||
console.info("id:" + id + ",status:" + status)
|
||||
$.ajax({
|
||||
url: "${base}/app/role/enableOrDisable",
|
||||
data: {id: id, status: status},
|
||||
type: "post",
|
||||
dataType: "json",
|
||||
async: false,
|
||||
success: function (data) {
|
||||
parent.layer.msg(data.msg);
|
||||
}
|
||||
});
|
||||
};
|
||||
</script>
|
|
@ -1,52 +0,0 @@
|
|||
<#assign base=request.contextPath />
|
||||
<#import "../common/defaultLayout.ftl" as defaultLayout>
|
||||
<@defaultLayout.layout>
|
||||
<script type="text/javascript">
|
||||
var base = '${base}';
|
||||
</script>
|
||||
<div class="admin-content">
|
||||
<div class="admin-content-body">
|
||||
<div class="am-cf am-padding">
|
||||
<div class="am-fl am-cf"><strong class="am-text-primary am-text-lg">绑定工地</strong>
|
||||
</div>
|
||||
</div>
|
||||
<form method="post" class="am-form" id="tmpForm"
|
||||
action="${base}/binding/save">
|
||||
<div class="am-tabs am-margin" data-am-tabs>
|
||||
<div class="am-tabs-bd">
|
||||
<div class="am-tab-panel am-fade am-in am-active" id="tab1">
|
||||
<div class="am-g am-form-group am-margin-top" style="display: flex;">
|
||||
<input name="constructionSiteBindingId" id="constructionSiteBindingId" type="hidden" value="${constructionSiteBindingId!}"/>
|
||||
<input name="userId" id="userId" type="hidden" value="${userId!}"/>
|
||||
<input name="type" id="type" type="hidden" value="${type!}"/>
|
||||
<div class="am-u-sm-4 am-u-md-2 am-text-right">绑定工地</div>
|
||||
<div class="am-u-sm-6 am-u-md-6">
|
||||
<select id="constructionSiteId" name="constructionSiteId"
|
||||
data-am-selected="{btnSize: 'sm',maxHeight: 200,searchBox: 1}">
|
||||
<option value="-1">全部</option>
|
||||
<#if constructionSiteList?exists>
|
||||
<#list constructionSiteList as node>
|
||||
<option value="${node.id!}" <#if constructionSiteBinding.constructionSiteId! == node.id >
|
||||
selected </#if>>${node.projectName}</option>
|
||||
</#list>
|
||||
</#if>
|
||||
|
||||
</select>
|
||||
<div>
|
||||
${message}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="am-margin">
|
||||
<button type="submit" id="submitBtn" class="am-btn am-btn-primary am-btn-xs">提交保存</button>
|
||||
<button type="button" class="am-btn am-btn-warning am-btn-xs"
|
||||
onclick="javascript:history.go(-1);">返回上一级
|
||||
</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</@defaultLayout.layout>
|
|
@ -1,327 +0,0 @@
|
|||
<#assign base=request.contextPath />
|
||||
<#import "../common/defaultLayout.ftl" as defaultLayout>
|
||||
<@defaultLayout.layout>
|
||||
<link rel="stylesheet" href="${base}/assets/css/amazeui.switch.css"/>
|
||||
<link rel="stylesheet" href="https://g.alicdn.com/de/prismplayer/2.8.2/skins/default/aliplayer-min.css" />
|
||||
<script charset="utf-8" type="text/javascript" src="https://g.alicdn.com/de/prismplayer/2.8.2/aliplayer-min.js"></script>
|
||||
<style>
|
||||
.am-modal-bd:after {
|
||||
content: '';
|
||||
display: block;
|
||||
clear: both;
|
||||
}
|
||||
</style>
|
||||
<div class="admin-content">
|
||||
<div class="am-cf am-padding" style="padding:1rem 1.6rem 1.6rem 1rem;margin:0px;">
|
||||
<!-- padding:1px 2px 3px 4px;上、右、下,和左 -->
|
||||
<div class="am-fl am-cf"><strong class="am-text-primary am-text-lg">智慧工地</strong> /
|
||||
<small>摄像头管理</small>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div class="am-g">
|
||||
<div class="am-u-sm-12">
|
||||
<form class="am-form" id="listForm" action="" method="POST">
|
||||
<table class="am-table am-table-bordered am-table-radius table-main" style="padding:0;">
|
||||
<tbody>
|
||||
<tr>
|
||||
<th class="am-text-middle">报警类型</th>
|
||||
<td>
|
||||
<div class="am-u-sm-10">
|
||||
<select id="type" name="type" data-am-selected="{btnSize: 'sm',maxHeight: 200,searchBox: 1}">
|
||||
<option value="-1" selected>未选择</option>
|
||||
<option value="1">喷淋告警:未喷淋工况</option>
|
||||
<option value="2">出入口告警:未密闭运输</option>
|
||||
<option value="3">出入口告警:车辆未冲洗</option>
|
||||
<option value="4">施工道路告警:道路积尘</option>
|
||||
<option value="5">裸土告警:未裸土覆盖</option>
|
||||
<option value="6">湿法作业告警:未湿法作业</option>
|
||||
<option value="7">移动机械告警:识别到扬尘</option>
|
||||
</select>
|
||||
</div>
|
||||
</td>
|
||||
<th class="am-text-middle">拉流范围</th>
|
||||
<td>
|
||||
<div class="am-u-sm-10">
|
||||
<select id="local" name="local" data-am-selected="{btnSize: 'sm',maxHeight: 200,searchBox: 1}">
|
||||
<option value="0">局域网拉流</option>
|
||||
<option value="1">外网拉流</option>
|
||||
</select>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="am-g">
|
||||
<div class="am-u-sm-12">
|
||||
<div class="am-scrollable-horizontal switch-button">
|
||||
<#list cameras as camera>
|
||||
${camera.name!}-${camera.org_name!}-${camera.ape_id!}
|
||||
<div id="div_${camera.ape_id!}" style="max-width: 1000px;height: 25px;overflow:hidden"></div>
|
||||
<div id="video_${camera.ape_id}">
|
||||
<#--播放器-->
|
||||
<div class="prism-player" id="J_prismPlayer_${camera.ape_id}"></div>
|
||||
</div>
|
||||
<div style="height: 35px;overflow-y: hidden">
|
||||
<button type="button" class="am-btn am-btn-default am-btn-sm am-text-secondary cameraRtmp" cameraId="${camera.ape_id!}">获取rtmp码流</button>
|
||||
<button type="button" class="am-btn am-btn-default am-btn-sm am-text-secondary cameraM3u8" cameraId="${camera.ape_id!}">获取m3u8码流</button>
|
||||
|
||||
|
||||
<button type="button" class="am-btn am-btn-default am-btn-sm am-text-secondary alarmStart" cameraId="${camera.ape_id!}" channelName="${camera.name}">开始报警</button>
|
||||
<button type="button" class="am-btn am-btn-default am-btn-sm am-text-secondary alarmShot" cameraId="${camera.ape_id!}" channelName="${camera.name}">画框报警</button>
|
||||
<button type="button" class="am-btn am-btn-default am-btn-sm am-text-secondary alarmEnd" cameraId="${camera.ape_id!}">取消报警</button>
|
||||
|
||||
</div>
|
||||
<br/>
|
||||
</#list>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="am-modal am-modal-prompt" tabindex="-1" id="my-prompt">
|
||||
<div class="am-modal-dialog">
|
||||
<div class="am-modal-hd">请选择报警类型</div>
|
||||
<div class="am-modal-bd">
|
||||
<div>
|
||||
<select id="type" name="type" class="am-modal-prompt-input" data-am-selected="{btnSize: 'sm',maxHeight: 200,searchBox: 1}">
|
||||
<option value="1">喷淋告警:未喷淋工况</option>
|
||||
<option value="2">出入口告警:未密闭运输</option>
|
||||
<option value="3">出入口告警:车辆未冲洗</option>
|
||||
<option value="4">施工道路告警:道路积尘</option>
|
||||
<option value="5" selected>裸土告警:未裸土覆盖</option>
|
||||
<option value="6">湿法作业告警:未湿法作业</option>
|
||||
<option value="7">移动机械告警:识别到扬尘</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="am-modal-footer">
|
||||
<span class="am-modal-btn" data-am-modal-cancel>取消</span>
|
||||
<span class="am-modal-btn" data-am-modal-confirm>确定</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<#--<div class="prism-player center-block" id="J_prismPlayer"></div>-->
|
||||
|
||||
|
||||
<footer class="admin-content-footer">
|
||||
<hr>
|
||||
</footer>
|
||||
</div>
|
||||
</@defaultLayout.layout>
|
||||
<script src="${base}/assets/js/amazeui.switch.js"></script>
|
||||
<script src="${base}/assets/js/cutshot.js"></script>
|
||||
<script type="text/javascript">
|
||||
|
||||
//保存摄像头和player、video的映射关系,方便通过摄像头拿到player
|
||||
MAP_CAMERA_PLAYER = {};
|
||||
MAP_CAMERA_VIDEO = {};
|
||||
//显示宽高
|
||||
PLAYER_WIDTH=720;
|
||||
PLAYER_HEIGHT=405;
|
||||
|
||||
$(function () {
|
||||
|
||||
//获取rtmp流
|
||||
$(".cameraRtmp").on("click", function () {
|
||||
var cameraId = $(this).attr("cameraId");
|
||||
var local = $("#local").val();
|
||||
cameraUri(cameraId, '${base}/api/v2/camera/rtmpStream/'+cameraId, true, local);
|
||||
});
|
||||
//获取m3u8流
|
||||
$(".cameraM3u8").on("click", function () {
|
||||
var cameraId = $(this).attr("cameraId");
|
||||
var local = $("#local").val();
|
||||
cameraUri(cameraId, '${base}/api/v2/camera/m3u8Stream/'+cameraId, false, local);
|
||||
});
|
||||
|
||||
//开始报警
|
||||
$(".alarmStart").on("click", function () {
|
||||
var cameraId = $(this).attr("cameraId");
|
||||
var channelName = $(this).attr("channelName");
|
||||
var type= $("#type").val();
|
||||
alarmStart(cameraId, channelName, type);
|
||||
});
|
||||
//开始截图报警
|
||||
$(".alarmShot").on("click", function () {
|
||||
var cameraId = $(this).attr("cameraId");
|
||||
var channelName = $(this).attr("channelName");
|
||||
var type= $("#type").val();
|
||||
alarmShot(cameraId, channelName, type);
|
||||
});
|
||||
//结束报警
|
||||
$(".alarmEnd").on("click", function () {
|
||||
var cameraId = $(this).attr("cameraId");
|
||||
alarmEnd(cameraId);
|
||||
|
||||
var cutshot = MAP_CAMERA_VIDEO[cameraId];
|
||||
if(cutshot){
|
||||
cutshot.clearShot();
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
|
||||
function alarmStart(cameraId, channelName, type) {
|
||||
var player = MAP_CAMERA_PLAYER[cameraId];
|
||||
if(undefined == player){
|
||||
parent.layer.msg('请先打开摄像头,否则因为截图无法报警');
|
||||
return;
|
||||
}
|
||||
|
||||
var base64 = draw(player.tag, PLAYER_WIDTH,PLAYER_HEIGHT);
|
||||
|
||||
saveImgAndAlarm(cameraId, channelName, type, base64, "");
|
||||
}
|
||||
|
||||
function alarmShot(cameraId, channelName, type) {
|
||||
var player = MAP_CAMERA_PLAYER[cameraId];
|
||||
if(undefined == player){
|
||||
parent.layer.msg('请先打开摄像头,否则因为截图无法报警');
|
||||
return;
|
||||
}
|
||||
|
||||
var resultImage = MAP_CAMERA_VIDEO[cameraId].getResultImage(player.tag);
|
||||
var base64 = resultImage.base64;
|
||||
var dots = JSON.stringify(resultImage.dots);
|
||||
|
||||
//console.log(base64);
|
||||
//console.log(dots);
|
||||
|
||||
saveImgAndAlarm(cameraId, channelName, type, base64, dots);
|
||||
}
|
||||
|
||||
|
||||
function saveImgAndAlarm(cameraId, channelName, type, base64, dots) {
|
||||
$.ajax({
|
||||
url: "${base}/api/v2/image/b64ToImg",
|
||||
data: {base64: base64},
|
||||
type: "post",
|
||||
dataType: "json",
|
||||
async: false,
|
||||
success: function (data) {
|
||||
//parent.layer.msg(data.msg);
|
||||
$.ajax({
|
||||
url: "${base}/api/v2/cameraAlarm/alarmBegin",
|
||||
data: {cameraId: cameraId, type:type, imageUrl:data.data, channelName:channelName, dots:dots},
|
||||
type: "post",
|
||||
dataType: "json",
|
||||
async: false,
|
||||
success: function (data) {
|
||||
parent.layer.msg(data.msg);
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function alarmEnd(cameraId) {
|
||||
$.ajax({
|
||||
url: "${base}/api/v2/cameraAlarm/alarmEnd",
|
||||
data: {cameraId: cameraId},
|
||||
type: "post",
|
||||
dataType: "json",
|
||||
async: false,
|
||||
success: function (data) {
|
||||
parent.layer.msg(data.msg);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
function cameraUri(cameraId, uri, flash, local) {
|
||||
$.ajax({
|
||||
url: uri,
|
||||
data: {local:local},
|
||||
dataType: "json",
|
||||
async: false,
|
||||
success: function (data) {
|
||||
console.log(data);
|
||||
var divId = "div_" + cameraId;
|
||||
$("#"+divId).text(data.data);
|
||||
|
||||
|
||||
createAliplayer(cameraId, data.data, flash);
|
||||
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function createAliplayer(cameraId, uri,flash) {
|
||||
var $myvideo = $("#video_"+cameraId);
|
||||
$myvideo.css('width',PLAYER_WIDTH+'px');
|
||||
$myvideo.css('height',PLAYER_HEIGHT+'px');
|
||||
|
||||
const cutshot = new Cutshot({
|
||||
el: '#video_'+cameraId,
|
||||
color: '#ff0000'
|
||||
}).init();
|
||||
|
||||
var player = new Aliplayer({
|
||||
id: 'J_prismPlayer_' + cameraId,
|
||||
width: PLAYER_WIDTH + 'px',
|
||||
height: PLAYER_HEIGHT + 'px',
|
||||
autoplay: true,
|
||||
rePlay: false,
|
||||
isLive: true,
|
||||
useH5Prism: !flash,
|
||||
useFlashPrism: flash,
|
||||
stashInitialSizeForFlv: 30,
|
||||
trackLog: false,
|
||||
extraInfo: {
|
||||
crossOrigin: 'anonymous',
|
||||
liveRetry:1
|
||||
},
|
||||
source : uri
|
||||
},function(player){
|
||||
console.log('播放器创建好了', player);
|
||||
});
|
||||
|
||||
//保存映射关系
|
||||
MAP_CAMERA_PLAYER[cameraId] = player;
|
||||
MAP_CAMERA_VIDEO[cameraId] = cutshot;
|
||||
}
|
||||
|
||||
|
||||
function draw(video, width, height) {
|
||||
var canvas = document.createElement("canvas");
|
||||
canvas.width = width;
|
||||
canvas.height = height;
|
||||
var context = canvas.getContext('2d');
|
||||
context.drawImage(video, 0, 0, width, height);
|
||||
var dataUrl = canvas.toDataURL("image/png");
|
||||
//console.log(dataUrl);
|
||||
return dataUrl;
|
||||
}
|
||||
|
||||
})
|
||||
</script>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
@ -1,87 +0,0 @@
|
|||
<#assign base=request.contextPath />
|
||||
<#import "../common/defaultLayout.ftl" as defaultLayout>
|
||||
<@defaultLayout.layout>
|
||||
<script type="text/javascript">
|
||||
var base = '${base}';
|
||||
</script>
|
||||
<div class="admin-content">
|
||||
<div class="admin-content-body">
|
||||
<div class="am-cf am-padding">
|
||||
<div class="am-fl am-cf"><strong class="am-text-primary am-text-lg">配置文件</strong> /
|
||||
<small><#if config.id?exists>编辑<#else>新增</#if></small>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<form method="post" class="am-form" id="tmpForm"
|
||||
action="${base}/config/save">
|
||||
<input name="id" id="configiId" type="hidden" value="${config.id!}"/>
|
||||
<div class="am-tabs am-margin" data-am-tabs>
|
||||
<ul class="am-tabs-nav am-nav am-nav-tabs">
|
||||
<li class="am-active"><a href="#tab1">编辑</a></li>
|
||||
</ul>
|
||||
<div class="am-tabs-bd">
|
||||
<div class="am-tab-panel am-fade am-in am-active" id="tab1">
|
||||
<div class="am-g am-form-group am-margin-top" style="display: flex;">
|
||||
<div class="am-u-sm-4 am-u-md-2 am-text-right">
|
||||
名称
|
||||
</div>
|
||||
<div class="am-u-sm-6 am-u-md-6">
|
||||
<input class="js-ajax-validate" name="name" value="${config.name!}"
|
||||
type="text"
|
||||
maxlength="255"
|
||||
/>
|
||||
</div>
|
||||
<div></div>
|
||||
</div>
|
||||
<div class="am-g am-form-group am-margin-top" style="display: flex;">
|
||||
<div class="am-u-sm-4 am-u-md-2 am-text-right">
|
||||
类型
|
||||
</div>
|
||||
<div class="am-u-sm-6 am-u-md-6">
|
||||
<input class="js-ajax-validate" name="type" value="${config.type!}"
|
||||
type="text"
|
||||
maxlength="255"
|
||||
/>
|
||||
</div>
|
||||
<div></div>
|
||||
</div>
|
||||
<div class="am-g am-form-group am-margin-top" style="display: flex;">
|
||||
<div class="am-u-sm-4 am-u-md-2 am-text-right">
|
||||
编码
|
||||
</div>
|
||||
<div class="am-u-sm-6 am-u-md-6">
|
||||
<input class="js-ajax-validate" name="code" value="${config.code!}"
|
||||
type="text"
|
||||
maxlength="255"
|
||||
/>
|
||||
</div>
|
||||
<div></div>
|
||||
</div>
|
||||
<div class="am-g am-form-group am-margin-top" style="display: flex;">
|
||||
<div class="am-u-sm-4 am-u-md-2 am-text-right">
|
||||
值
|
||||
</div>
|
||||
<div class="am-u-sm-6 am-u-md-6">
|
||||
<input class="js-ajax-validate" name="value" value="${config.value!}"
|
||||
type="text"
|
||||
maxlength="255" placeholder="请输入值"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!--选项卡(tabs)end-->
|
||||
<div class="am-margin">
|
||||
<button type="submit" id="submitBtn" class="am-btn am-btn-primary am-btn-xs">提交保存</button>
|
||||
<button type="button" class="am-btn am-btn-warning am-btn-xs"
|
||||
onclick="javascript:history.go(-1);">返回上一级
|
||||
</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</@defaultLayout.layout>
|
|
@ -1,102 +0,0 @@
|
|||
<#assign base=request.contextPath />
|
||||
<#import "../common/defaultLayout.ftl" as defaultLayout>
|
||||
<@defaultLayout.layout>
|
||||
<div class="admin-content">
|
||||
<div class="am-cf am-padding" style="padding:1rem 1.6rem 1.6rem 1rem;margin:0px;">
|
||||
<!-- padding:1px 2px 3px 4px;上、右、下,和左 -->
|
||||
<div class="am-fl am-cf"><strong class="am-text-primary am-text-lg">后台配置</strong> /
|
||||
<small>配置文件</small>
|
||||
</div>
|
||||
</div>
|
||||
<div class="am-g">
|
||||
<div class="am-u-sm-12 am-u-md-12" style="padding:0 1.6rem 1.6rem 1rem;margin:0;">
|
||||
<div class="am-btn-toolbar" style="padding-left:.5rem;">
|
||||
<div class="am-btn-group am-btn-group-xs">
|
||||
<button type="button" class="am-btn am-btn-default"
|
||||
onclick="location.href='${base}/config/edit'">
|
||||
<span class="am-icon-plus"></span> 新增
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="am-g">
|
||||
<div class="am-u-sm-12">
|
||||
<div class="am-scrollable-horizontal">
|
||||
<table class="am-table am-table-striped am-table-hover table-main">
|
||||
<thead>
|
||||
<tr class="am-text-nowrap">
|
||||
<th class="table-title">名称</th>
|
||||
<th class="table-title">值</th>
|
||||
<th class="table-title">操作</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<#if (pager.list)?exists && (pager.list?size>0)>
|
||||
<#list pager.list as list>
|
||||
<tr>
|
||||
<td>${list.name!}</td>
|
||||
<td>${list.value!}</td>
|
||||
<td>
|
||||
<div id="edit-div" class="am-btn-toolbar switch-button">
|
||||
<div class="am-btn-group am-btn-group-xs">
|
||||
<button type="button"
|
||||
class="am-btn am-btn-default am-btn-xs am-text-secondary"
|
||||
onclick="location.href='${base}/config/edit?id=${list.id?c}'">
|
||||
<span class="am-icon-pencil-square-o"></span>编辑
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</#list>
|
||||
|
||||
</#if>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<div class="am-cf">
|
||||
<!-- 分页 -->
|
||||
<#if (pager.list)?exists && (pager.list?size>0) >
|
||||
<div class="am-fr">
|
||||
<#include "../common/order_list_pager.ftl">
|
||||
</div>
|
||||
<#else>
|
||||
<div class="am-kai" align="center">
|
||||
<h3>没有找到任何记录!</h3>
|
||||
</div>
|
||||
</#if>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</@defaultLayout.layout>
|
||||
|
||||
<script type="text/javascript">
|
||||
var keywordsObj = {};
|
||||
var sub_function = function (type) {
|
||||
$("#pageNumber").val(1);
|
||||
initSearch();
|
||||
$("#listForm").submit();
|
||||
};
|
||||
|
||||
var initSearch = function(){};
|
||||
</script>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
@ -1,49 +0,0 @@
|
|||
<#assign base=request.contextPath />
|
||||
<#import "../common/defaultLayout.ftl" as defaultLayout>
|
||||
<@defaultLayout.layout>
|
||||
<style>
|
||||
|
||||
.am-icon-btn{
|
||||
padding-top: 12px;
|
||||
}
|
||||
</style>
|
||||
<div class="admin-content">
|
||||
<div class="am-cf am-padding">
|
||||
<div class="am-fl am-cf"><strong class="am-text-primary am-text-lg">首页</strong> / <small>管理中心</small></div>
|
||||
</div>
|
||||
|
||||
<div class="am-g">
|
||||
<div class="am-u-sm-12">
|
||||
<table class="am-table">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td class="am-primary" >用户名称: <span style="color:#5eb95e">${Session["realsName"]!""}</span></td>
|
||||
<td class="am-primary">上次登录时间: <span style="color:#5eb95e">${Session["lastLoginTime"]!""}</span></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
$(function(){
|
||||
|
||||
})
|
||||
</script>
|
||||
</@defaultLayout.layout>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
@ -1,220 +0,0 @@
|
|||
<#assign base=request.contextPath />
|
||||
<#import "../common/defaultLayout.ftl" as defaultLayout>
|
||||
<@defaultLayout.layout>
|
||||
|
||||
<div class="admin-content">
|
||||
<div class="admin-content-body">
|
||||
<div class="am-cf am-padding">
|
||||
<div class="am-fl am-cf"><strong class="am-text-primary am-text-lg">工地管理</strong> / <small>摄像头管理</small>
|
||||
</div>
|
||||
</div>
|
||||
<input type="hidden" id="constructionSiteId" value="${constructionSite.id}"/>
|
||||
<input type="hidden" id="coverImageUrl" value=""/>
|
||||
<input type="hidden" id="coverImageEnable" value="<#if constructionSite.coverUrl??>true<#else>false</#if>"/>
|
||||
|
||||
<div style="float: left">
|
||||
<div class="am-u-sm-2 am-u-md-4">
|
||||
<div class="am-form-file am-text-xs">
|
||||
<button type="button" class="am-btn am-btn-primary am-btn-sm">
|
||||
<i class="am-icon-cloud-upload"></i> 上传工地全景图
|
||||
</button>
|
||||
<input id="fileupload" type="file" name="files[]">
|
||||
</div>
|
||||
<!-- The global progress bar -->
|
||||
<div id="progress-area" class="am-margin-top-sm am-hide">
|
||||
<div id="progress-text" class="am-text-xs am-text-right"></div>
|
||||
<div id="progress" class="am-progress am-progress-xs">
|
||||
<div class="am-progress-bar" style="width: 0%"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="am-form-file am-text-xs">
|
||||
<button type="button" onclick="updateCoverUrl()" class="am-btn am-btn-primary am-btn-sm">
|
||||
保存效果图
|
||||
</button>
|
||||
</div>
|
||||
<#--<span class="am-text-primary am-text-xs am-fl">提示:上传的示意图将显示在下方</span>-->
|
||||
<br>
|
||||
<img id="constructionSiteCover" width="660" height="660" src="
|
||||
<#if constructionSite.coverUrl??>
|
||||
${constructionSite.coverUrl}
|
||||
<#else >
|
||||
${base}/img/work.jpg
|
||||
</#if>
|
||||
">
|
||||
</div>
|
||||
<div style="float: left;margin-left: 100px">
|
||||
<#list cameraBeans as cameraBean>
|
||||
<div>
|
||||
<span class="am-circle am-icon-border am-text-xl" style="background-color: #87f3ff">${cameraBean_index}</span> <span>${cameraBean.name}</span>【<span class="cameraId">${cameraBean.ape_id}</span>】 <#if cameraBean.markable==1><span class="am-icon-circle draggable"></span></#if><br>
|
||||
</div>
|
||||
</#list>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="am-modal am-modal-prompt" tabindex="-1" id="my-prompt">
|
||||
<div class="am-modal-dialog">
|
||||
<div class="am-modal-hd">修改摄像头属性</div>
|
||||
<div class="am-modal-bd">
|
||||
<input type="text" name="name" class="am-modal-prompt-input">
|
||||
<select type="text" name="alarmType" data-am-selected="{btnSize: 'sm',maxHeight: 200,searchBox: 1}" class="am-modal-prompt-input">
|
||||
<#--<option value="-1" selected>未选择</option>-->
|
||||
<#list alarmTypes as alarmType>
|
||||
<option value="${alarmType.type}">${alarmType.name}</option>
|
||||
</#list>
|
||||
</select>
|
||||
</div>
|
||||
<div class="am-modal-footer">
|
||||
<span class="am-modal-btn" data-am-modal-cancel>取消</span>
|
||||
<span class="am-modal-btn" data-am-modal-confirm>提交</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</@defaultLayout.layout>
|
||||
<script src="${base}/common/jQuery-File-Upload/js/vendor/jquery.ui.widget.js"></script>
|
||||
<script src="${base}/common/jQuery-File-Upload/js/jquery.iframe-transport.js"></script>
|
||||
<script src="${base}/common/jQuery-File-Upload/js/jquery.fileupload.js"></script>
|
||||
<script src="${base}/common/jQuery-File-Upload/js/jquery.fileupload-process.js"></script>
|
||||
<script src="${base}/common/jQuery-File-Upload/js/jquery.fileupload-validate.js"></script>
|
||||
<script src="//code.jquery.com/ui/1.10.4/jquery-ui.js"></script>
|
||||
<script type="text/javascript">
|
||||
/*附件上传:begin*/
|
||||
var jqXHR = $('#fileupload').fileupload({
|
||||
url: "${base}/file/upload",
|
||||
dataType: 'json',
|
||||
start: function (e) {
|
||||
$("#progress-area").removeClass("am-hide");
|
||||
$("#progress-text").removeClass("am-text-danger");
|
||||
$("#progress-text").html("");
|
||||
$(".am-progress-bar").css("width","0%");
|
||||
},
|
||||
done: function (e, data) {
|
||||
console.log(data);
|
||||
$("#constructionSiteCover").attr("src",data.result.data.url);
|
||||
$("#coverImageUrl").val(data.result.data.url);
|
||||
setTimeout(function() {
|
||||
$("#progress-area").addClass("am-hide");
|
||||
},1500);
|
||||
},
|
||||
progressall: function (e, data) {
|
||||
var progress = parseInt(data.loaded / data.total * 100, 10);
|
||||
$(".am-progress-bar").css("width",progress + "%");
|
||||
$("#progress-text").html(progress + "%");
|
||||
},
|
||||
error: function (jqXHR, textStatus, errorThrown) {
|
||||
console.log("imageupload error!");
|
||||
// console.log(jqXHR);
|
||||
// console.log(textStatus);
|
||||
// console.log(errorThrown);
|
||||
$("#progress-area").removeClass("am-hide");
|
||||
$("#progress-text").addClass("am-text-danger");
|
||||
$("#progress-text").html("imageupload error!");
|
||||
$(".am-progress-bar").css("width","0%");
|
||||
setTimeout(function() {
|
||||
$("#progress-area").addClass("am-hide");
|
||||
},2000);
|
||||
},
|
||||
fail: function (jqXHR, textStatus) {
|
||||
console.log("imageupload fail!");
|
||||
// console.log(jqXHR);
|
||||
// console.log(textStatus);
|
||||
$("#progress-area").removeClass("am-hide");
|
||||
$("#progress-text").addClass("am-text-danger");
|
||||
$("#progress-text").html("imageupload fail!");
|
||||
$(".am-progress-bar").css("width","0%");
|
||||
setTimeout(function() {
|
||||
$("#progress-area").addClass("am-hide");
|
||||
},2000);
|
||||
}
|
||||
});
|
||||
/*附件上传:end*/
|
||||
|
||||
function updateCoverUrl() {
|
||||
$.ajax({
|
||||
url: "${base}/construction/site/updateCoverUrl",
|
||||
data: {
|
||||
constructionSiteId:$("#constructionSiteId").val(),
|
||||
coverUrl:$("#coverImageUrl").val()
|
||||
},
|
||||
type: "post",
|
||||
dataType: "json",
|
||||
async: false,
|
||||
success: function (data) {
|
||||
$("#coverImageEnable").val("true");
|
||||
parent.layer.msg(data.msg);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
$(".draggable").draggable({
|
||||
/*cursor:'crosshair',*/
|
||||
cursorAt:{
|
||||
bottom:0
|
||||
},
|
||||
start: function (event, ui){
|
||||
if("true" != $("#coverImageEnable").val()){
|
||||
//封面不存在的情况下不允许拖动
|
||||
parent.layer.msg("请先上传效果图并保存");
|
||||
return false;
|
||||
}
|
||||
},
|
||||
stop: function(event, ui) {
|
||||
|
||||
//相对于当前页面
|
||||
console.log(ui.offset);
|
||||
//相对于当前对象
|
||||
console.log(ui.position);
|
||||
|
||||
console.log(event,ui);
|
||||
|
||||
//TODO 还差拖动之后的数据保存,获取摄像头id和名字
|
||||
//TODO 还差数据展示在地图上
|
||||
var cameraId = '';
|
||||
var cameraChannelName='';
|
||||
|
||||
$('#my-prompt').modal({
|
||||
relatedTarget: this,
|
||||
onConfirm: function(e) {
|
||||
var name = e[0];
|
||||
var alarmType = e[1];
|
||||
$.ajax({
|
||||
url: "${base}/construction/site/updateMark",
|
||||
data: {
|
||||
constructionSiteId:$("#constructionSiteId").val(),
|
||||
cameraId: cameraId,
|
||||
cameraChannelName:cameraChannelName,
|
||||
name:name,
|
||||
alarmType:alarmType,
|
||||
x:ui.offset.left,
|
||||
y:ui.offset.top
|
||||
},
|
||||
type: "post",
|
||||
dataType: "json",
|
||||
async: false,
|
||||
success: function (data) {
|
||||
parent.layer.msg(data.msg);
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
});
|
||||
</script>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
@ -1,343 +0,0 @@
|
|||
<#assign base=request.contextPath />
|
||||
<#import "../common/defaultLayout.ftl" as defaultLayout>
|
||||
<@defaultLayout.layout>
|
||||
<link rel="stylesheet" href="${base}/assets/css/amazeui.switch.css"/>
|
||||
<link rel="stylesheet" href="https://g.alicdn.com/de/prismplayer/2.8.2/skins/default/aliplayer-min.css" />
|
||||
<script charset="utf-8" type="text/javascript" src="https://g.alicdn.com/de/prismplayer/2.8.2/aliplayer-min.js"></script>
|
||||
<style>
|
||||
.am-modal-bd:after {
|
||||
content: '';
|
||||
display: block;
|
||||
clear: both;
|
||||
}
|
||||
</style>
|
||||
<div class="admin-content">
|
||||
<div class="am-cf am-padding" style="padding:1rem 1.6rem 1.6rem 1rem;margin:0px;">
|
||||
<!-- padding:1px 2px 3px 4px;上、右、下,和左 -->
|
||||
<div class="am-fl am-cf"><strong class="am-text-primary am-text-lg">智慧工地</strong> /
|
||||
<small>告警推送管理【${constructionSite.projectName}】</small>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div class="am-g">
|
||||
<div class="am-u-sm-12">
|
||||
<form class="am-form" id="listForm" action="" method="POST">
|
||||
<input type="hidden" id="constructionSiteId" value="${constructionSite.id}"/>
|
||||
<table class="am-table am-table-bordered am-table-radius table-main" style="padding:0;">
|
||||
<tbody>
|
||||
<tr>
|
||||
<th class="am-text-middle">报警类型</th>
|
||||
<td>
|
||||
<div class="am-u-sm-10">
|
||||
<select id="type" name="type" data-am-selected="{btnSize: 'sm',maxHeight: 200,searchBox: 1}">
|
||||
<option value="-1" selected>未选择</option>
|
||||
<#list alarmTypes as alarmType>
|
||||
<option value="${alarmType.type}">${alarmType.name}</option>
|
||||
</#list>
|
||||
</select>
|
||||
</div>
|
||||
</td>
|
||||
<th class="am-text-middle">拉流范围</th>
|
||||
<td>
|
||||
<div class="am-u-sm-10">
|
||||
<select id="local" name="local" data-am-selected="{btnSize: 'sm',maxHeight: 200,searchBox: 1}">
|
||||
<option value="1" selected>外网拉流</option>
|
||||
<option value="0">局域网拉流</option>
|
||||
</select>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="am-g">
|
||||
<div class="am-u-sm-12">
|
||||
<div class="am-scrollable-horizontal switch-button">
|
||||
<#--<#list cameras as camera>
|
||||
${camera.name!}-${camera.cameraChannelName!}-${camera.cameraId!}
|
||||
<div id="div_${camera.cameraId!}" style="max-width: 1000px;height: 25px;overflow:hidden"></div>
|
||||
<div id="video_${camera.cameraId}">
|
||||
<#–播放器–>
|
||||
<div class="prism-player" id="J_prismPlayer_${camera.cameraId}"></div>
|
||||
</div>
|
||||
<div style="height: 35px;overflow-y: hidden">
|
||||
<button type="button" class="am-btn am-btn-default am-btn-sm am-text-secondary cameraRtmp" cameraId="${camera.cameraId!}">获取rtmp码流</button>
|
||||
<button type="button" class="am-btn am-btn-default am-btn-sm am-text-secondary cameraM3u8" cameraId="${camera.cameraId!}">获取m3u8码流</button>
|
||||
|
||||
|
||||
<button type="button" class="am-btn am-btn-default am-btn-sm am-text-secondary alarmStart" cameraId="${camera.cameraId!}" channelName="${camera.cameraChannelName}" alarmType="${camera.alarmType}">开始报警</button>
|
||||
<button type="button" class="am-btn am-btn-default am-btn-sm am-text-secondary alarmShot" cameraId="${camera.cameraId!}" channelName="${camera.cameraChannelName}" alarmType="${camera.alarmType}">画框报警</button>
|
||||
<button type="button" class="am-btn am-btn-default am-btn-sm am-text-secondary alarmEnd" cameraId="${camera.cameraId!}">取消报警</button>
|
||||
|
||||
</div>
|
||||
<br/>
|
||||
</#list>-->
|
||||
<#list cameraBeans as camera>
|
||||
${camera.name!}-${camera.org_name!}-${camera.ape_id!}
|
||||
<div id="div_${camera.ape_id!}" style="max-width: 1000px;height: 25px;overflow:hidden"></div>
|
||||
<div id="video_${camera.ape_id}">
|
||||
<#--播放器-->
|
||||
<div class="prism-player" id="J_prismPlayer_${camera.ape_id}"></div>
|
||||
</div>
|
||||
<div style="height: 35px;overflow-y: hidden">
|
||||
<button type="button" class="am-btn am-btn-default am-btn-sm am-text-secondary cameraRtmp" cameraId="${camera.ape_id!}">获取rtmp码流</button>
|
||||
<button type="button" class="am-btn am-btn-default am-btn-sm am-text-secondary cameraM3u8" cameraId="${camera.ape_id!}">获取m3u8码流</button>
|
||||
|
||||
|
||||
<button type="button" class="am-btn am-btn-default am-btn-sm am-text-secondary alarmStart" cameraId="${camera.ape_id!}" channelName="${camera.name}" >开始报警</button>
|
||||
<button type="button" class="am-btn am-btn-default am-btn-sm am-text-secondary alarmShot" cameraId="${camera.ape_id!}" channelName="${camera.name}" >画框报警</button>
|
||||
<button type="button" class="am-btn am-btn-default am-btn-sm am-text-secondary alarmEnd" cameraId="${camera.ape_id!}">取消报警</button>
|
||||
|
||||
</div>
|
||||
<br/>
|
||||
</#list>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<footer class="admin-content-footer">
|
||||
<hr>
|
||||
</footer>
|
||||
</div>
|
||||
</@defaultLayout.layout>
|
||||
<script src="${base}/assets/js/amazeui.switch.js"></script>
|
||||
<script src="${base}/assets/js/cutshot.js"></script>
|
||||
<script type="text/javascript">
|
||||
|
||||
//保存摄像头和player、video的映射关系,方便通过摄像头拿到player
|
||||
MAP_CAMERA_PLAYER = {};
|
||||
MAP_CAMERA_VIDEO = {};
|
||||
//显示宽高
|
||||
PLAYER_WIDTH=720;
|
||||
PLAYER_HEIGHT=405;
|
||||
|
||||
$(function () {
|
||||
|
||||
//获取rtmp流
|
||||
$(".cameraRtmp").on("click", function () {
|
||||
var cameraId = $(this).attr("cameraId");
|
||||
var local = $("#local").val();
|
||||
cameraUri(cameraId, '${base}/camera/rtmpStream', true, local);
|
||||
});
|
||||
//获取m3u8流
|
||||
$(".cameraM3u8").on("click", function () {
|
||||
var cameraId = $(this).attr("cameraId");
|
||||
var local = $("#local").val();
|
||||
cameraUri(cameraId, '${base}/camera/m3u8Stream', false, local);
|
||||
});
|
||||
|
||||
//开始报警
|
||||
$(".alarmStart").on("click", function () {
|
||||
var constructionSiteId = $("#constructionSiteId").val();
|
||||
var cameraId = $(this).attr("cameraId");
|
||||
var channelName = $(this).attr("channelName");
|
||||
var type= $("#type").val();
|
||||
/*var alarmType = $(this).attr("alarmType");
|
||||
//未选择告警类型,那么就按照摄像头事先设置的类型
|
||||
if(type == "-1"){
|
||||
type = alarmType;
|
||||
}*/
|
||||
alarmStart(constructionSiteId,cameraId, channelName, type);
|
||||
});
|
||||
//开始截图报警
|
||||
$(".alarmShot").on("click", function () {
|
||||
var constructionSiteId = $("#constructionSiteId").val();
|
||||
var cameraId = $(this).attr("cameraId");
|
||||
var channelName = $(this).attr("channelName");
|
||||
var type= $("#type").val();
|
||||
/*var alarmType = $(this).attr("alarmType");
|
||||
//未选择告警类型,那么就按照摄像头事先设置的类型
|
||||
if(type == "-1"){
|
||||
type = alarmType;
|
||||
}*/
|
||||
alarmShot(constructionSiteId,cameraId, channelName, type);
|
||||
});
|
||||
//结束报警
|
||||
$(".alarmEnd").on("click", function () {
|
||||
var cameraId = $(this).attr("cameraId");
|
||||
alarmEnd(cameraId);
|
||||
|
||||
var cutshot = MAP_CAMERA_VIDEO[cameraId];
|
||||
if(cutshot){
|
||||
cutshot.clearShot();
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
|
||||
function alarmStart(constructionSiteId,cameraId, channelName, type) {
|
||||
var player = MAP_CAMERA_PLAYER[cameraId];
|
||||
if(undefined == player){
|
||||
parent.layer.msg('请先打开摄像头,否则因为截图无法报警');
|
||||
return;
|
||||
}
|
||||
|
||||
var base64 = draw(player.tag, PLAYER_WIDTH,PLAYER_HEIGHT);
|
||||
|
||||
saveImgAndAlarm(constructionSiteId,cameraId, channelName, type, base64, "");
|
||||
}
|
||||
|
||||
function alarmShot(constructionSiteId,cameraId, channelName, type) {
|
||||
var player = MAP_CAMERA_PLAYER[cameraId];
|
||||
if(undefined == player){
|
||||
parent.layer.msg('请先打开摄像头,否则因为截图无法报警');
|
||||
return;
|
||||
}
|
||||
|
||||
var resultImage = MAP_CAMERA_VIDEO[cameraId].getResultImage(player.tag);
|
||||
var base64 = resultImage.base64;
|
||||
var dots = JSON.stringify(resultImage.dots);
|
||||
|
||||
//console.log(base64);
|
||||
//console.log(dots);
|
||||
|
||||
saveImgAndAlarm(constructionSiteId,cameraId, channelName, type, base64, dots);
|
||||
}
|
||||
|
||||
|
||||
function saveImgAndAlarm(constructionSiteId,cameraId, channelName, type, base64, dots) {
|
||||
$.ajax({
|
||||
url: "${base}/image/b64ToImg",
|
||||
data: {base64: base64},
|
||||
type: "post",
|
||||
dataType: "json",
|
||||
async: false,
|
||||
success: function (data) {
|
||||
//parent.layer.msg(data.msg);
|
||||
$.ajax({
|
||||
url: "${base}/cameraAlarm/alarmBegin",
|
||||
data: {
|
||||
constructionSiteId:constructionSiteId,
|
||||
cameraId: cameraId,
|
||||
type:type,
|
||||
imageUrl:data.data,
|
||||
channelName:channelName,
|
||||
dots:dots
|
||||
},
|
||||
type: "post",
|
||||
dataType: "json",
|
||||
async: false,
|
||||
success: function (data) {
|
||||
parent.layer.msg(data.msg);
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function alarmEnd(cameraId) {
|
||||
$.ajax({
|
||||
url: "${base}/cameraAlarm/alarmEnd",
|
||||
data: {
|
||||
constructionSiteId:$("#constructionSiteId").val(),
|
||||
cameraId: cameraId
|
||||
},
|
||||
type: "post",
|
||||
dataType: "json",
|
||||
async: false,
|
||||
success: function (data) {
|
||||
parent.layer.msg(data.msg);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
function cameraUri(cameraId, uri, flash, local) {
|
||||
$.ajax({
|
||||
url: uri,
|
||||
data: {
|
||||
constructionSiteId:$("#constructionSiteId").val(),
|
||||
cameraId:cameraId,
|
||||
local:local
|
||||
},
|
||||
dataType: "json",
|
||||
async: false,
|
||||
success: function (data) {
|
||||
console.log(data);
|
||||
var divId = "div_" + cameraId;
|
||||
$("#"+divId).text(data.data);
|
||||
|
||||
|
||||
createAliplayer(cameraId, data.data, flash);
|
||||
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function createAliplayer(cameraId, uri,flash) {
|
||||
var $myvideo = $("#video_"+cameraId);
|
||||
$myvideo.css('width',PLAYER_WIDTH+'px');
|
||||
$myvideo.css('height',PLAYER_HEIGHT+'px');
|
||||
|
||||
const cutshot = new Cutshot({
|
||||
el: '#video_'+cameraId,
|
||||
color: '#ff0000'
|
||||
}).init();
|
||||
|
||||
var player = new Aliplayer({
|
||||
id: 'J_prismPlayer_' + cameraId,
|
||||
width: PLAYER_WIDTH + 'px',
|
||||
height: PLAYER_HEIGHT + 'px',
|
||||
autoplay: true,
|
||||
rePlay: false,
|
||||
isLive: true,
|
||||
useH5Prism: !flash,
|
||||
useFlashPrism: flash,
|
||||
stashInitialSizeForFlv: 30,
|
||||
trackLog: false,
|
||||
extraInfo: {
|
||||
crossOrigin: 'anonymous',
|
||||
liveRetry:1
|
||||
},
|
||||
source : uri
|
||||
},function(player){
|
||||
console.log('播放器创建好了', player);
|
||||
});
|
||||
|
||||
//保存映射关系
|
||||
MAP_CAMERA_PLAYER[cameraId] = player;
|
||||
MAP_CAMERA_VIDEO[cameraId] = cutshot;
|
||||
}
|
||||
|
||||
|
||||
function draw(video, width, height) {
|
||||
var canvas = document.createElement("canvas");
|
||||
canvas.width = width;
|
||||
canvas.height = height;
|
||||
var context = canvas.getContext('2d');
|
||||
context.drawImage(video, 0, 0, width, height);
|
||||
var dataUrl = canvas.toDataURL("image/png");
|
||||
//console.log(dataUrl);
|
||||
return dataUrl;
|
||||
}
|
||||
|
||||
})
|
||||
</script>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
@ -1,398 +0,0 @@
|
|||
<#assign base=request.contextPath />
|
||||
<#import "../common/defaultLayout.ftl" as defaultLayout>
|
||||
<@defaultLayout.layout>
|
||||
<link rel="stylesheet" href="${base}/assets/css/amazeui.switch.css"/>
|
||||
<link rel="stylesheet" href="https://g.alicdn.com/de/prismplayer/2.8.2/skins/default/aliplayer-min.css" />
|
||||
<script charset="utf-8" type="text/javascript" src="https://g.alicdn.com/de/prismplayer/2.8.2/aliplayer-min.js"></script>
|
||||
<style>
|
||||
.am-modal-bd:after {
|
||||
content: '';
|
||||
display: block;
|
||||
clear: both;
|
||||
}
|
||||
</style>
|
||||
<div class="admin-content">
|
||||
<div class="am-cf am-padding" style="padding:1rem 1.6rem 1.6rem 1rem;margin:0px;">
|
||||
<!-- padding:1px 2px 3px 4px;上、右、下,和左 -->
|
||||
<div class="am-fl am-cf"><strong class="am-text-primary am-text-lg">智慧工地</strong> /
|
||||
<small>告警推送管理【${constructionSite.projectName}】</small>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div class="am-g">
|
||||
<div class="am-u-sm-12">
|
||||
<form class="am-form" id="listForm" action="${base}/construction/site/cameraAlarm" method="POST">
|
||||
<input type="hidden" id="constructionSiteId" name="constructionSiteId" value="${constructionSite.id}"/>
|
||||
<table class="am-table am-table-bordered am-table-radius table-main" style="padding:0;">
|
||||
<tbody>
|
||||
<tr>
|
||||
<th class="am-text-middle">摄像头名称</th>
|
||||
<td>
|
||||
<div class="am-u-sm-10">
|
||||
<input type="text" id="cameraName" class="am-form-field am-input-sm" name="cameraName" value="${cameraName!}"/>
|
||||
</div>
|
||||
</td>
|
||||
<th class="am-text-middle">报警类型</th>
|
||||
<td>
|
||||
<div class="am-u-sm-10">
|
||||
<select id="alarmType" name="alarmType" data-am-selected="{btnSize: 'sm',maxHeight: 200,searchBox: 1}">
|
||||
<option value="-1" selected>未选择</option>
|
||||
<#list alarmTypes as at>
|
||||
<option value="${at.type}" <#if at.type==alarmType>selected</#if>>${at.name}</option>
|
||||
</#list>
|
||||
</select>
|
||||
</div>
|
||||
</td>
|
||||
<td colspan="4">
|
||||
<div align='right'>
|
||||
<button type="submit" class="am-btn am-btn-default am-btn-sm am-text-secondary"
|
||||
id="submit-btn">搜索
|
||||
</button>
|
||||
</div>
|
||||
</td>
|
||||
<#--<th class="am-text-middle">拉流范围</th>
|
||||
<td>
|
||||
<div class="am-u-sm-10">
|
||||
<select id="local" name="local" data-am-selected="{btnSize: 'sm',maxHeight: 200,searchBox: 1}">
|
||||
<option value="1" selected>外网拉流</option>
|
||||
<option value="0">局域网拉流</option>
|
||||
</select>
|
||||
</div>
|
||||
</td>-->
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="am-g">
|
||||
<div class="am-u-sm-12">
|
||||
<div class="am-scrollable-horizontal switch-button">
|
||||
<#list cameras as camera>
|
||||
<div style="display:inline-block;width: 725px;">
|
||||
${camera.name!}<#---${camera.cameraChannelName!}-->-${camera.cameraId!}
|
||||
<div id="div_${camera.cameraId!}" style="max-width: 1000px;height: 25px;overflow:hidden"></div>
|
||||
<div id="video_${camera.cameraId}">
|
||||
<#--播放器-->
|
||||
<div class="prism-player" id="J_prismPlayer_${camera.cameraId}"></div>
|
||||
</div>
|
||||
<div style="height: 35px;overflow-y: hidden">
|
||||
<#--<button type="button" class="am-btn am-btn-default am-btn-sm am-text-secondary cameraRtmp" cameraId="${camera.cameraId!}">获取rtmp码流</button>-->
|
||||
<button type="button" class="am-btn am-btn-default am-btn-sm am-text-secondary cameraM3u8" cameraId="${camera.cameraId!}">获取m3u8码流</button>
|
||||
|
||||
<button type="button" class="am-btn am-btn-default am-btn-sm am-text-secondary cutShot" cameraId="${camera.cameraId!}">框选工具</button>
|
||||
<button type="button" class="am-btn am-btn-default am-btn-sm am-text-secondary alarmStart" cameraId="${camera.cameraId!}" channelName="${camera.cameraChannelName}" alarmType="${camera.alarmType}">开始报警</button>
|
||||
<button type="button" class="am-btn am-btn-default am-btn-sm am-text-secondary alarmShot" cameraId="${camera.cameraId!}" channelName="${camera.cameraChannelName}" alarmType="${camera.alarmType}">画框报警</button>
|
||||
<button type="button" class="am-btn am-btn-default am-btn-sm am-text-secondary alarmEnd" cameraId="${camera.cameraId!}">取消报警</button>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</#list>
|
||||
<#--<#list cameraBeans as camera>
|
||||
${camera.name!}-${camera.org_name!}-${camera.ape_id!}
|
||||
<div id="div_${camera.ape_id!}" style="max-width: 1000px;height: 25px;overflow:hidden"></div>
|
||||
<div id="video_${camera.ape_id}">
|
||||
<#–播放器–>
|
||||
<div class="prism-player" id="J_prismPlayer_${camera.ape_id}"></div>
|
||||
</div>
|
||||
<div style="height: 35px;overflow-y: hidden">
|
||||
<button type="button" class="am-btn am-btn-default am-btn-sm am-text-secondary cameraRtmp" cameraId="${camera.ape_id!}">获取rtmp码流</button>
|
||||
<button type="button" class="am-btn am-btn-default am-btn-sm am-text-secondary cameraM3u8" cameraId="${camera.ape_id!}">获取m3u8码流</button>
|
||||
|
||||
|
||||
<button type="button" class="am-btn am-btn-default am-btn-sm am-text-secondary alarmStart" cameraId="${camera.ape_id!}" channelName="${camera.name}" >开始报警</button>
|
||||
<button type="button" class="am-btn am-btn-default am-btn-sm am-text-secondary alarmShot" cameraId="${camera.ape_id!}" channelName="${camera.name}" >画框报警</button>
|
||||
<button type="button" class="am-btn am-btn-default am-btn-sm am-text-secondary alarmEnd" cameraId="${camera.ape_id!}">取消报警</button>
|
||||
|
||||
</div>
|
||||
<br/>
|
||||
</#list>-->
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="am-modal am-modal-prompt" tabindex="-1" id="my-prompt">
|
||||
<div class="am-modal-dialog">
|
||||
<div class="am-modal-hd">请选择报警级别</div>
|
||||
<div class="am-modal-bd">
|
||||
<div>
|
||||
<select id="riskGradeValue" name="riskGradeValue" class="am-modal-prompt-input" data-am-selected="{btnSize: 'sm',maxHeight: 200,searchBox: 1}">
|
||||
<#list pushConfigs as pushConfig>
|
||||
<option value="${pushConfig.riskGradeValue}">${pushConfig.riskGrade}</option>
|
||||
</#list>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="am-modal-footer">
|
||||
<span class="am-modal-btn" data-am-modal-cancel>取消</span>
|
||||
<span class="am-modal-btn" data-am-modal-confirm>确定</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<footer class="admin-content-footer">
|
||||
<hr>
|
||||
</footer>
|
||||
</div>
|
||||
</@defaultLayout.layout>
|
||||
<script src="${base}/assets/js/amazeui.switch.js"></script>
|
||||
<script src="${base}/assets/js/cutshot.js"></script>
|
||||
<script type="text/javascript">
|
||||
|
||||
//保存摄像头和player、video的映射关系,方便通过摄像头拿到player
|
||||
MAP_CAMERA_PLAYER = {};
|
||||
MAP_CAMERA_VIDEO = {};
|
||||
//显示宽高
|
||||
PLAYER_WIDTH=720;
|
||||
PLAYER_HEIGHT=405;
|
||||
|
||||
$(function () {
|
||||
|
||||
//获取rtmp流
|
||||
/*$(".cameraRtmp").on("click", function () {
|
||||
var cameraId = $(this).attr("cameraId");
|
||||
var local = $("#local").val();
|
||||
cameraUri(cameraId, '${base}/camera/rtmpStream', true, local);
|
||||
});*/
|
||||
//获取m3u8流
|
||||
$(".cameraM3u8").on("click", function () {
|
||||
var cameraId = $(this).attr("cameraId");
|
||||
//var local = $("#local").val();
|
||||
var local = "1";
|
||||
cameraUri(cameraId, '${base}/camera/m3u8StreamVerify', false, local);
|
||||
});
|
||||
$(".cutShot").on("click", function () {
|
||||
var cameraId = $(this).attr("cameraId");
|
||||
if(MAP_CAMERA_VIDEO[cameraId]){
|
||||
//已经初始化过了
|
||||
return;
|
||||
}
|
||||
const cutshot = new Cutshot({
|
||||
el: '#video_'+cameraId,
|
||||
color: '#ff0000'
|
||||
}).init();
|
||||
MAP_CAMERA_VIDEO[cameraId] = cutshot;
|
||||
});
|
||||
|
||||
//开始报警
|
||||
$(".alarmStart").on("click", function () {
|
||||
var cameraId = $(this).attr("cameraId");
|
||||
var channelName = $(this).attr("channelName");
|
||||
var alarmType = $(this).attr("alarmType");
|
||||
alarmStart(cameraId, channelName, alarmType);
|
||||
});
|
||||
//开始截图报警
|
||||
$(".alarmShot").on("click", function () {
|
||||
var cameraId = $(this).attr("cameraId");
|
||||
var channelName = $(this).attr("channelName");
|
||||
var alarmType = $(this).attr("alarmType");
|
||||
alarmShot(cameraId, channelName, alarmType);
|
||||
});
|
||||
//结束报警
|
||||
$(".alarmEnd").on("click", function () {
|
||||
var cameraId = $(this).attr("cameraId");
|
||||
alarmEnd(cameraId);
|
||||
|
||||
var cutshot = MAP_CAMERA_VIDEO[cameraId];
|
||||
if(cutshot){
|
||||
cutshot.clearShot();
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
|
||||
function alarmStart(cameraId, channelName, type) {
|
||||
var player = MAP_CAMERA_PLAYER[cameraId];
|
||||
if(!player){
|
||||
parent.layer.msg('请先打开摄像头,否则无法报警');
|
||||
return;
|
||||
}
|
||||
|
||||
var base64 = draw(player.tag, PLAYER_WIDTH,PLAYER_HEIGHT);
|
||||
|
||||
saveImgAndAlarm(cameraId, channelName, type, base64, "");
|
||||
}
|
||||
|
||||
function alarmShot(cameraId, channelName, type) {
|
||||
var player = MAP_CAMERA_PLAYER[cameraId];
|
||||
if(!player){
|
||||
parent.layer.msg('请先打开摄像头,否则无法截图报警');
|
||||
return;
|
||||
}
|
||||
|
||||
if(!MAP_CAMERA_VIDEO[cameraId]){
|
||||
parent.layer.msg('请先使用画框工具绘制告警区域');
|
||||
return;
|
||||
}
|
||||
|
||||
var resultImage = MAP_CAMERA_VIDEO[cameraId].getResultImage(player.tag);
|
||||
var base64 = resultImage.base64;
|
||||
var dots = JSON.stringify(resultImage.dots);
|
||||
|
||||
//console.log(base64);
|
||||
console.log(dots);
|
||||
|
||||
saveImgAndAlarm(cameraId, channelName, type, base64, dots);
|
||||
}
|
||||
|
||||
|
||||
function saveImgAndAlarm(cameraId, channelName, type, base64, dots) {
|
||||
$.ajax({
|
||||
url: "${base}/image/b64ToImg",
|
||||
data: {base64: base64},
|
||||
type: "post",
|
||||
dataType: "json",
|
||||
async: false,
|
||||
success: function (data) {
|
||||
$('#my-prompt').modal({
|
||||
relatedTarget: this,
|
||||
onConfirm: function(e) {
|
||||
console.log(e.data);
|
||||
alarmBegin(cameraId, type,e.data,data.data,channelName,dots);
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function alarmBegin(cameraId, type, riskGradeValue,imageUrl,channelName,dots) {
|
||||
$.ajax({
|
||||
url: "${base}/cameraAlarm/alarmBegin",
|
||||
data: {
|
||||
constructionSiteId:$("#constructionSiteId").val(),
|
||||
cameraId: cameraId,
|
||||
type:type,
|
||||
riskGradeValue:riskGradeValue,
|
||||
imageUrl:imageUrl,
|
||||
channelName:channelName,
|
||||
dots:dots
|
||||
},
|
||||
type: "post",
|
||||
dataType: "json",
|
||||
async: false,
|
||||
success: function (d) {
|
||||
parent.layer.msg(d.msg);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function alarmEnd(cameraId) {
|
||||
$.ajax({
|
||||
url: "${base}/cameraAlarm/alarmEnd",
|
||||
data: {
|
||||
constructionSiteId:$("#constructionSiteId").val(),
|
||||
cameraId: cameraId
|
||||
},
|
||||
type: "post",
|
||||
dataType: "json",
|
||||
async: false,
|
||||
success: function (data) {
|
||||
parent.layer.msg(data.msg);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
function cameraUri(cameraId, uri, flash, local) {
|
||||
$.ajax({
|
||||
url: uri,
|
||||
data: {
|
||||
constructionSiteId:$("#constructionSiteId").val(),
|
||||
cameraId:cameraId,
|
||||
local:local
|
||||
},
|
||||
dataType: "json",
|
||||
async: false,
|
||||
success: function (data) {
|
||||
console.log(data);
|
||||
if(data.status != 0 ){
|
||||
parent.layer.msg(data.msg);
|
||||
return;
|
||||
}
|
||||
var divId = "div_" + cameraId;
|
||||
$("#"+divId).text(data.data);
|
||||
|
||||
|
||||
createAliplayer(cameraId, data.data, flash);
|
||||
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function createAliplayer(cameraId, uri, flash) {
|
||||
var $myvideo = $("#video_"+cameraId);
|
||||
$myvideo.css('width',PLAYER_WIDTH+'px');
|
||||
$myvideo.css('height',PLAYER_HEIGHT+'px');
|
||||
|
||||
/*const cutshot = new Cutshot({
|
||||
el: '#video_'+cameraId,
|
||||
color: '#ff0000'
|
||||
}).init();*/
|
||||
|
||||
var player = new Aliplayer({
|
||||
id: 'J_prismPlayer_' + cameraId,
|
||||
width: PLAYER_WIDTH + 'px',
|
||||
height: PLAYER_HEIGHT + 'px',
|
||||
autoplay: true,
|
||||
rePlay: false,
|
||||
isLive: true,
|
||||
useH5Prism: !flash,
|
||||
useFlashPrism: flash,
|
||||
stashInitialSizeForFlv: 30,
|
||||
trackLog: false,
|
||||
extraInfo: {
|
||||
crossOrigin: 'anonymous',
|
||||
liveRetry:1
|
||||
},
|
||||
source : uri
|
||||
},function(player){
|
||||
console.log('播放器创建好了', player);
|
||||
/*aliplayer会将全局name设置为""导致找不到iframe*/
|
||||
window.name = "mainFrame";
|
||||
});
|
||||
|
||||
//保存映射关系
|
||||
MAP_CAMERA_PLAYER[cameraId] = player;
|
||||
/*MAP_CAMERA_VIDEO[cameraId] = cutshot;*/
|
||||
}
|
||||
|
||||
|
||||
function draw(video, width, height) {
|
||||
var canvas = document.createElement("canvas");
|
||||
canvas.width = width;
|
||||
canvas.height = height;
|
||||
var context = canvas.getContext('2d');
|
||||
context.drawImage(video, 0, 0, width, height);
|
||||
var dataUrl = canvas.toDataURL("image/png");
|
||||
//console.log(dataUrl);
|
||||
return dataUrl;
|
||||
}
|
||||
|
||||
})
|
||||
</script>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
@ -1,350 +0,0 @@
|
|||
<#assign base=request.contextPath />
|
||||
<#import "../common/defaultLayout.ftl" as defaultLayout>
|
||||
<@defaultLayout.layout>
|
||||
<div class="admin-content">
|
||||
<div class="am-cf am-padding" style="padding:1rem 1.6rem 1.6rem 1rem;margin:0px;">
|
||||
<!-- padding:1px 2px 3px 4px;上、右、下,和左 -->
|
||||
<div class="am-fl am-cf"><strong class="am-text-primary am-text-lg">工地管理</strong> /
|
||||
<small>重点监管</small>
|
||||
</div>
|
||||
</div>
|
||||
<div class="am-g">
|
||||
<div class="am-u-sm-12">
|
||||
<form class="am-form" id="listForm" action="${base}/construction/site/focus/list" method="POST">
|
||||
<input type="hidden" id="keywords" name="keywords" value='${keywords!""}'/>
|
||||
<table class="am-table am-table-bordered am-table-radius table-main" style="padding:0;">
|
||||
<tbody>
|
||||
<tr>
|
||||
<th class="am-text-middle">项目名称</th>
|
||||
<td>
|
||||
<div class="am-u-sm-10">
|
||||
<input type="text" id="projectName" class="am-form-field am-input-sm"
|
||||
value="${projectName!}"/>
|
||||
</div>
|
||||
</td>
|
||||
<th class="am-text-middle">建设单位</th>
|
||||
<td>
|
||||
<div class="am-u-sm-10">
|
||||
<input type="text" id="buildCompany" class="am-form-field am-input-sm"
|
||||
value="${buildCompany!}"/>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class="am-text-middle">所属区域</th>
|
||||
<td>
|
||||
<div class="am-u-sm-10">
|
||||
<select id="regionId" name="regionId"
|
||||
data-am-selected="{btnSize: 'sm',maxHeight: 200,searchBox: 1}">
|
||||
<option value="-1">全部</option>
|
||||
<#if regionList?exists>
|
||||
<#list regionList as node>
|
||||
<option value="${node.id!}" <#if regionId! == "${node.id}" >
|
||||
selected </#if>>${node.name}</option>
|
||||
</#list>
|
||||
</#if>
|
||||
|
||||
</select>
|
||||
</div>
|
||||
</td>
|
||||
<th class="am-text-middle">施工单位</th>
|
||||
<td>
|
||||
<div class="am-u-sm-10">
|
||||
<input type="text" id="constructionCompany" class="am-form-field am-input-sm"
|
||||
value="${constructionCompany!}"/>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="4">
|
||||
<div align='right'>
|
||||
<button type="button" class="am-btn am-btn-default am-btn-sm am-text-secondary"
|
||||
id="submit-btn" onclick="sub_function('query')">搜索
|
||||
</button>
|
||||
<@shiro.hasPermission name="FOCUSEXPORT">
|
||||
<button type="button" class="am-btn am-btn-default am-btn-sm am-text-secondary"
|
||||
id="submit-btn-export" onclick="sub_function('export')">导出
|
||||
</button>
|
||||
</@shiro.hasPermission>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</form>
|
||||
</div>
|
||||
<div class="am-u-sm-12 am-u-md-12" style="padding:0 1.6rem 1.6rem 1rem;margin:0;">
|
||||
<div class="am-btn-toolbar" style="padding-left:.5rem;">
|
||||
<div class="am-btn-group am-btn-group-xs">
|
||||
<@shiro.hasPermission name="FOCUSDELETE">
|
||||
<button type="button" id="deleteButton" disabled="disabled" class="am-btn am-btn-default"
|
||||
onclick="deleteAll('${base}/construction/site/not/focus')"><span
|
||||
class="am-icon-trash-o"></span> 删除
|
||||
</button>
|
||||
</@shiro.hasPermission>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="am-g">
|
||||
<div class="am-u-sm-12">
|
||||
<div class="am-scrollable-horizontal">
|
||||
<table class="am-table am-table-striped am-table-hover table-main">
|
||||
<thead>
|
||||
<tr class="am-text-nowrap">
|
||||
<th class="table-check"><input type="checkbox" id="allCheck"></th>
|
||||
<th class="table-id">主键ID</th>
|
||||
<th class="table-title">项目名称</th>
|
||||
<th class="table-title">项目地址</th>
|
||||
<th class="table-title">所属区域</th>
|
||||
<th class="table-title">经纬度</th>
|
||||
<th class="table-title">建设单位</th>
|
||||
<th class="table-title">施工单位</th>
|
||||
<th class="table-title">工地环保负责人姓名</th>
|
||||
<th class="table-title">工地环保负责人电话</th>
|
||||
<th class="table-set">操作</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<#if (pager.list)?exists>
|
||||
<#list pager.list as list>
|
||||
<tr>
|
||||
<td><input type="checkbox" name="ids" value="${list.id}"/></td>
|
||||
<td>${list.id!}</td>
|
||||
<td>${list.projectName!}</td>
|
||||
<td>${list.projectAddress!}</td>
|
||||
<td>${list.regionName!}</td>
|
||||
<td>${list.location!}</td>
|
||||
<td>${list.buildCompany!}</td>
|
||||
<td>${list.constructionCompany!}</td>
|
||||
<td>${list.principalName!}</td>
|
||||
<td>${list.principalPhone!}</td>
|
||||
<td>
|
||||
<div class="am-btn-toolbar">
|
||||
<div class="am-btn-group am-btn-group-xs">
|
||||
<@shiro.hasPermission name="FOCUSTYPE">
|
||||
<button type="button"
|
||||
class="am-btn am-btn-default am-btn-xs am-text-secondary"
|
||||
onclick="location.href='${base}/construction/site/focus/type?constructionSiteId=${list.id?c}'"><span
|
||||
class="am-icon-pencil-square-o"></span>重点关注类型
|
||||
</button>
|
||||
</@shiro.hasPermission>
|
||||
<@shiro.hasPermission name="FOCUSCAMERA">
|
||||
<button type="button"
|
||||
class="am-btn am-btn-default am-btn-xs am-text-secondary"
|
||||
onclick="location.href='${base}/construction/site/cameraAlarm?constructionSiteId=${list.id?c}'"><span
|
||||
class="am-icon-pencil-square-o"></span>实时查看
|
||||
</button>
|
||||
</@shiro.hasPermission>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</#list>
|
||||
</#if>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<div class="am-cf">
|
||||
<!-- 分页 -->
|
||||
<#if (pager.list)?exists && (pager.list?size>0) >
|
||||
<div class="am-fr">
|
||||
<#include "../common/common_pager.ftl">
|
||||
</div>
|
||||
<#else>
|
||||
<div class="am-kai" align="center">
|
||||
<h3>没有找到任何记录!</h3>
|
||||
</div>
|
||||
</#if>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</@defaultLayout.layout>
|
||||
|
||||
<script type="text/javascript" src="${base}/common/js/jquery.ajaxfileupload.js"></script>
|
||||
<script src="${base}/common/jQuery-File-Upload/js/vendor/jquery.ui.widget.js"></script>
|
||||
<script type="text/javascript" src="${base}/common/jQuery-File-Upload/js/jquery.iframe-transport.js"></script>
|
||||
<script type="text/javascript" src="${base}/common/jQuery-File-Upload/js/jquery.fileupload.js"></script>
|
||||
<script src="${base}/common/jQuery-File-Upload/js/jquery.fileupload-process.js"></script>
|
||||
<script src="${base}/common/jQuery-File-Upload/js/jquery.fileupload-validate.js"></script>
|
||||
<script src="${base}/assets/js/amazeui.switch.js"></script>
|
||||
|
||||
<script type="text/javascript">
|
||||
|
||||
$(function () {
|
||||
$("body").on('click', '.list-item', function () {
|
||||
$(".list-item").removeClass("tr-selected");
|
||||
$(this).addClass('tr-selected');
|
||||
});
|
||||
$("#allCheck").click(function () {
|
||||
$('input[name="ids"]').prop("checked", this.checked);
|
||||
$("#deleteButton").prop("disabled", $("input[name='ids']:checked").length == 0 ? true : false);
|
||||
});
|
||||
var $citySubBox = $("input[name='ids']");
|
||||
$citySubBox.click(function () {
|
||||
$("#allCheckCity").prop("checked", $citySubBox.length == $("input[name='ids']:checked").length ? true : false);
|
||||
$("#deleteButton").prop("disabled", $("input[name='ids']:checked").length == 0 ? true : false);
|
||||
});
|
||||
|
||||
var keywordsObj = {};
|
||||
$("#submit-btn").on("click", function () {
|
||||
$("#pageNumber").val(1);
|
||||
if ($("#projectName").val())
|
||||
keywordsObj.projectName = $("#projectName").val();
|
||||
if ($("#buildCompany").val())
|
||||
keywordsObj.buildCompany = $("#buildCompany").val();
|
||||
if ($("#projectAddress").val())
|
||||
keywordsObj.projectAddress = $("#projectAddress").val();
|
||||
if ($("#constructionCompany").val())
|
||||
keywordsObj.constructionCompany = $("#constructionCompany").val();
|
||||
if ($("#regionId").val())
|
||||
keywordsObj.regionId = $("#regionId").val();
|
||||
if ($("#sStartTime").val())
|
||||
keywordsObj.sStartTime = $("#sStartTime").val();
|
||||
if ($("#sEndTime").val())
|
||||
keywordsObj.sEndTime = $("#sEndTime").val();
|
||||
if ($("#eStartTime").val())
|
||||
keywordsObj.eStartTime = $("#eStartTime").val();
|
||||
if ($("#eEndTime").val())
|
||||
keywordsObj.eEndTime = $("#eEndTime").val();
|
||||
var keywords = "";
|
||||
if (!$.isEmptyObject(keywordsObj)) {
|
||||
keywords = JSON.stringify(keywordsObj);
|
||||
}
|
||||
console.log("keywords = " + keywords);
|
||||
$("#keywords").val(keywords);
|
||||
$("#listForm").submit();
|
||||
});
|
||||
});
|
||||
|
||||
function ajaxUploadFile(id, url) {
|
||||
$.ajaxFileUpload({
|
||||
url: url,
|
||||
secureuri: false,
|
||||
fileElementId: id,// file标签的id
|
||||
dataType: 'json',// 返回数据的类型
|
||||
success: function (data, status) {
|
||||
console.log("--------success---------" + data)
|
||||
if (data.status == 0) {
|
||||
var list = data.data;
|
||||
var content = '';
|
||||
$.each(list, function (i, r) {
|
||||
content += (i + 1) + '、' + r + '<br>';
|
||||
});
|
||||
console.log('---> ' + content);
|
||||
parent.layer.open({
|
||||
title: '导入结果:',
|
||||
content: data.msg + '<br><br>' + content
|
||||
});
|
||||
} else {
|
||||
parent.layer.msg(data.msg);
|
||||
}
|
||||
|
||||
window.location.reload();
|
||||
$("#" + id).val("");
|
||||
},
|
||||
error: function (data, status, e) {
|
||||
console.log("--------error---------" + data)
|
||||
alert("-----------------" + data);
|
||||
// if ($('#modal')) {
|
||||
// $('#modal').modal('close');
|
||||
// }
|
||||
alert(e);
|
||||
$("#" + id).val("");
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
var sub_function = function (type) {
|
||||
$("#pageNumber").val(1);
|
||||
initSearch();
|
||||
if (type == 'export') {
|
||||
$("#listForm").attr("action", "${base}/construction/site/export");
|
||||
} else {
|
||||
$("#listForm").attr("action", "${base}/construction/site/focus/list");
|
||||
var index = layer.load(1, {
|
||||
shade: [0.1, '#fff'] //0.1透明度的白色背景
|
||||
});
|
||||
}
|
||||
$("#listForm").submit();
|
||||
};
|
||||
|
||||
function initSearch() {
|
||||
var keywordsObj = {};
|
||||
if ($("#projectName").val())
|
||||
keywordsObj.projectName = $("#projectName").val();
|
||||
if ($("#buildCompany").val())
|
||||
keywordsObj.buildCompany = $("#buildCompany").val();
|
||||
if ($("#projectAddress").val())
|
||||
keywordsObj.projectAddress = $("#projectAddress").val();
|
||||
if ($("#constructionCompany").val())
|
||||
keywordsObj.constructionCompany = $("#constructionCompany").val();
|
||||
if ($("#regionId").val())
|
||||
keywordsObj.regionId = $("#regionId").val();
|
||||
if ($("#sStartTime").val())
|
||||
keywordsObj.sStartTime = $("#sStartTime").val();
|
||||
if ($("#sEndTime").val())
|
||||
keywordsObj.sEndTime = $("#sEndTime").val();
|
||||
if ($("#eStartTime").val())
|
||||
keywordsObj.eStartTime = $("#eStartTime").val();
|
||||
if ($("#eEndTime").val())
|
||||
keywordsObj.eEndTime = $("#eEndTime").val();
|
||||
var keywords = "";
|
||||
if (!$.isEmptyObject(keywordsObj)) {
|
||||
keywords = JSON.stringify(keywordsObj);
|
||||
}
|
||||
console.log("keywords = " + keywords);
|
||||
$("#keywords").val(keywords);
|
||||
}
|
||||
|
||||
// 删除
|
||||
var deleteAll = function (url) {
|
||||
var $deleteButton = $("#deleteButton");// 删除按钮
|
||||
var ids = "";
|
||||
$("input[name='ids']:checked").each(function () {
|
||||
ids += $(this).val() + "#%#";
|
||||
});
|
||||
var params = {ids: ids};
|
||||
if (window.confirm('确定要删除吗?')) {
|
||||
$.ajax({
|
||||
url: url,
|
||||
data: params,
|
||||
dataType: "json",
|
||||
async: false,
|
||||
beforeSend: function (data) {
|
||||
$deleteButton.prop("disabled", true)
|
||||
},
|
||||
success: function (data) {
|
||||
console.info("data.status==============="+data.status)
|
||||
$deleteButton.prop("disabled", false)
|
||||
if (data.status == 0) {
|
||||
alert("删除成功");
|
||||
window.location.href = window.location.href;
|
||||
} else if (data.status == 1) {
|
||||
alert("删除失败");
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
</script>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
@ -1,331 +0,0 @@
|
|||
<#assign base=request.contextPath />
|
||||
<#import "../common/defaultLayout.ftl" as defaultLayout>
|
||||
<@defaultLayout.layout>
|
||||
|
||||
<div class="admin-content">
|
||||
<div class="admin-content-body">
|
||||
<div class="am-cf am-padding">
|
||||
<div class="am-fl am-cf"><strong class="am-text-primary am-text-lg">工地管理</strong> / <small>工地管理</small>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<form method="post" class="am-form" id="pmsForm"
|
||||
action="${base}/construction/site/save">
|
||||
<!--选项卡(tabs)begin-->
|
||||
<div class="am-tabs am-margin" data-am-tabs>
|
||||
<ul class="am-tabs-nav am-nav am-nav-tabs">
|
||||
<li class="am-active"><a href="#tab1">新增/编辑</a></li>
|
||||
</ul>
|
||||
<div class="am-tabs-bd">
|
||||
<div class="am-tab-panel am-fade am-in am-active" id="tab1">
|
||||
<input name="constructionSiteID" id="constructionSiteID" type="hidden"
|
||||
value="${constructionSiteID!}"/>
|
||||
<!--验证表单元素(validate) begin-->
|
||||
|
||||
<div class="am-g am-form-group am-margin-top">
|
||||
<div class="am-u-sm-4 am-u-md-2 am-text-right">
|
||||
<span style="color: red;">*</span>项目名称
|
||||
</div>
|
||||
<div class="am-u-sm-6 am-u-md-6">
|
||||
<input name="projectName" class="js-ajax-validate"
|
||||
data-validate-async data-validation-message="请输入项目名称(20字符以内)"
|
||||
type="text" id="projectName" value="${constructionSite.projectName!}"
|
||||
minlength="1"
|
||||
maxlength="20" placeholder="请输入项目名称(10字符以内)" required/>
|
||||
</div>
|
||||
<div class="am-u-sm-2 am-u-md-4 input-msg"></div>
|
||||
</div>
|
||||
|
||||
<div class="am-g am-form-group am-margin-top">
|
||||
<div class="am-u-sm-4 am-u-md-2 am-text-right">
|
||||
<span style="color: red;">*</span>项目地址
|
||||
</div>
|
||||
<div class="am-u-sm-6 am-u-md-6">
|
||||
<input name="projectAddress" class="js-ajax-validate"
|
||||
data-validate-async data-validation-message="请输入项目地址(30字符以内)"
|
||||
type="text" id="projectAddress" value="${constructionSite.projectAddress!}"
|
||||
minlength="1"
|
||||
maxlength="30" placeholder="请输入项目地址(30字符以内)" required/>
|
||||
</div>
|
||||
<div class="am-u-sm-2 am-u-md-4 input-msg"></div>
|
||||
</div>
|
||||
<div class="am-g am-form-group am-margin-top">
|
||||
<div class="am-u-sm-4 am-u-md-2 am-text-right">
|
||||
<span style="color: red;">*</span>
|
||||
所属区域
|
||||
</div>
|
||||
<div class="am-u-sm-8 am-u-md-10">
|
||||
<select id="regionId" name="regionId"
|
||||
data-am-selected="{btnSize: 'sm',maxHeight: 200,searchBox: 1}">
|
||||
<option value="-1">请选择</option>
|
||||
<#if regionList?exists>
|
||||
<#list regionList as node>
|
||||
<option value="${node.id!}" <#if constructionSite.regionId! == node.id >
|
||||
selected </#if>>${node.name}</option>
|
||||
</#list>
|
||||
</#if>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="am-g am-form-group am-margin-top">
|
||||
<div class="am-u-sm-4 am-u-md-2 am-text-right">
|
||||
<span style="color: red;">*</span>经度
|
||||
</div>
|
||||
<div class="am-u-sm-6 am-u-md-6">
|
||||
<input name="longitude" class="js-ajax-validate"
|
||||
data-validate-async data-validation-message="请输入经度(30字符以内)"
|
||||
type="text" id="longitude" value="${constructionSite.longitude!}"
|
||||
minlength="1"
|
||||
maxlength="30" placeholder="请输入经度(例:104.067936)" required/>
|
||||
</div>
|
||||
<div class="am-u-sm-2 am-u-md-4 input-msg"></div>
|
||||
</div>
|
||||
<div class="am-g am-form-group am-margin-top">
|
||||
<div class="am-u-sm-4 am-u-md-2 am-text-right">
|
||||
<span style="color: red;">*</span>纬度
|
||||
</div>
|
||||
<div class="am-u-sm-6 am-u-md-6">
|
||||
<input name="latitude" class="js-ajax-validate"
|
||||
data-validate-async data-validation-message="请输入纬度(30字符以内)"
|
||||
type="text" id="latitude" value="${constructionSite.latitude!}"
|
||||
minlength="1"
|
||||
maxlength="30" placeholder="请输入纬度(例:30.679965)" required/>
|
||||
</div><span style="color: red;">注意:输入错误经纬度地图上将无法显示此工地</span>
|
||||
<div class="am-u-sm-2 am-u-md-4 input-msg"></div>
|
||||
</div>
|
||||
<div class="am-g am-form-group am-margin-top">
|
||||
<div class="am-u-sm-4 am-u-md-2 am-text-right">
|
||||
<span style="color: red;">*</span>建设单位
|
||||
</div>
|
||||
<div class="am-u-sm-6 am-u-md-6">
|
||||
<input name="buildCompany" class="js-ajax-validate"
|
||||
data-validate-async data-validation-message="请输入建设单位(30字符以内)"
|
||||
type="text" id="buildCompany" value="${constructionSite.buildCompany!}"
|
||||
minlength="1"
|
||||
maxlength="30" placeholder="请输入建设单位(30字符以内)" required/>
|
||||
</div>
|
||||
<div class="am-u-sm-2 am-u-md-4 input-msg"></div>
|
||||
</div>
|
||||
|
||||
<div class="am-g am-form-group am-margin-top">
|
||||
<div class="am-u-sm-4 am-u-md-2 am-text-right">
|
||||
<span style="color: red;">*</span>施工单位
|
||||
</div>
|
||||
<div class="am-u-sm-6 am-u-md-6">
|
||||
<input name="constructionCompany" class="js-ajax-validate"
|
||||
data-validate-async data-validation-message="请输入施工单位(30字符以内)"
|
||||
type="text" id="constructionCompany"
|
||||
value="${constructionSite.constructionCompany!}"
|
||||
minlength="1"
|
||||
maxlength="30" placeholder="请输入施工单位(30字符以内)" required/>
|
||||
</div>
|
||||
<div class="am-u-sm-2 am-u-md-4 input-msg"></div>
|
||||
</div>
|
||||
|
||||
<div class="am-g am-form-group am-margin-top">
|
||||
<div class="am-u-sm-4 am-u-md-2 am-text-right">
|
||||
<span style="color: red;">*</span>建筑面积
|
||||
</div>
|
||||
<div class="am-u-sm-6 am-u-md-6">
|
||||
<input name="coveredArea" class="js-ajax-validate"
|
||||
data-validate-async data-validation-message="请输入正确的建筑面积"
|
||||
type="number" id="coveredArea" value="${constructionSite.coveredArea!}"
|
||||
minlength="1"
|
||||
oninput="value=value.replace(/^\D*(\d*(?:\.\d{0,6})?).*$/g, '$1')"
|
||||
maxlength="10" placeholder="请输入正确的建筑面积" required/>
|
||||
</div>平方米
|
||||
<div class="am-u-sm-2 am-u-md-4 input-msg"></div>
|
||||
</div>
|
||||
|
||||
<div class="am-g am-form-group am-margin-top">
|
||||
<div class="am-u-sm-4 am-u-md-2 am-text-right">
|
||||
开工日期
|
||||
</div>
|
||||
<div class="am-u-sm-2 am-u-md-2">
|
||||
<div class="am-form-group am-form-icon">
|
||||
<i class="am-icon-calendar"></i>
|
||||
<input type="text" class="am-form-field am-input-sm" id="startDate"
|
||||
name="startDate" autocomplete="off"
|
||||
value="${(constructionSite.startDate?date)!}" placeholder="开工日期"
|
||||
data-am-datepicker>
|
||||
</div>
|
||||
</div>
|
||||
<div class="am-u-sm-2 am-u-md-4 input-msg"></div>
|
||||
</div>
|
||||
<div class="am-g am-form-group am-margin-top">
|
||||
<div class="am-u-sm-4 am-u-md-2 am-text-right">
|
||||
竣工日期
|
||||
</div>
|
||||
<div class="am-u-sm-2 am-u-md-2">
|
||||
<div class="am-form-group am-form-icon">
|
||||
<i class="am-icon-calendar"></i>
|
||||
<input type="text" class="am-form-field am-input-sm" id="endDate"
|
||||
name="endDate" autocomplete="off"
|
||||
value="${(constructionSite.endDate?date)!}" placeholder="竣工日期"
|
||||
data-am-datepicker>
|
||||
</div>
|
||||
</div>
|
||||
<div class="am-u-sm-2 am-u-md-4 input-msg"></div>
|
||||
</div>
|
||||
|
||||
<div class="am-g am-form-group am-margin-top">
|
||||
<div class="am-u-sm-4 am-u-md-2 am-text-right">
|
||||
<span style="color: red;">*</span>工地环保负责人姓名
|
||||
</div>
|
||||
<div class="am-u-sm-6 am-u-md-6">
|
||||
<input name="principalName" class="js-ajax-validate"
|
||||
data-validate-async data-validation-message="请输入工地环保负责人姓名(10字符以内)"
|
||||
type="text" id="principalName" value="${constructionSite.principalName!}"
|
||||
minlength="1"
|
||||
maxlength="10" placeholder="请输入工地环保负责人姓名(10字符以内)" required/>
|
||||
</div>
|
||||
<div class="am-u-sm-2 am-u-md-4 input-msg"></div>
|
||||
</div>
|
||||
|
||||
<#--<div class="am-g am-form-group am-margin-top">
|
||||
<div class="am-u-sm-4 am-u-md-2 am-text-right">
|
||||
<span style="color: red;">*</span>工地环保负责人电话
|
||||
</div>
|
||||
<div class="am-u-sm-6 am-u-md-6">
|
||||
<input name="principalPhone" class="am-form-field am-input-sm"
|
||||
data-validate-async data-validation-message="请输入正确格式手机号码!"
|
||||
onkeyup="value=value.replace(/[^\d]/g,'')"
|
||||
type="text" id="principalPhone" value="${constructionSite.principalPhone!}" minlength="11"
|
||||
maxlength="11"
|
||||
required
|
||||
placeholder="请输入正确格式手机号码!"
|
||||
onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\d]/g,''))"/>
|
||||
</div>
|
||||
<div class="am-u-sm-2 am-u-md-4 input-msg"></div>
|
||||
</div>-->
|
||||
|
||||
<div class="am-g am-form-group am-margin-top">
|
||||
<div class="am-u-sm-4 am-u-md-2 am-text-right">
|
||||
手机号
|
||||
</div>
|
||||
<div class="am-u-sm-6 am-u-md-6">
|
||||
<input name="principalPhone" class="am-form-field am-input-sm"
|
||||
type="text" id="principalPhone" value="${constructionSite.principalPhone!}"
|
||||
maxlength="11"
|
||||
onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\d]/g,''))"/>
|
||||
</div>
|
||||
<div class="am-u-sm-2 am-u-md-4 input-msg"></div>
|
||||
</div>
|
||||
|
||||
<div class="am-g am-form-group am-margin-top">
|
||||
<div class="am-u-sm-4 am-u-md-2 am-text-right">
|
||||
<span style="color: red;">*</span>集云服务器地址
|
||||
</div>
|
||||
<div class="am-u-sm-6 am-u-md-6">
|
||||
<input name="serverAddress" class="js-ajax-validate"
|
||||
data-validate-async data-validation-message="请输入集云服务器地址(如:http://125.69.0.125:11125)"
|
||||
type="text" id="serverAddress" value="${constructionSite.serverAddress!}"
|
||||
minlength="1"
|
||||
maxlength="50" placeholder="请输入集云服务器地址(如:http://125.69.0.125:11125)" required/>
|
||||
</div><span style="color: red;">注意:输入错误的集云服务器地址无法获取摄像头列表</span>
|
||||
<div class="am-u-sm-2 am-u-md-4 input-msg"></div>
|
||||
</div>
|
||||
<div class="am-g am-form-group am-margin-top">
|
||||
<div class="am-u-sm-4 am-u-md-2 am-text-right">
|
||||
<span style="color: red;">*</span>物联网站点编码
|
||||
</div>
|
||||
<div class="am-u-sm-6 am-u-md-6">
|
||||
<input name="siteCode" class="js-ajax-validate"
|
||||
data-validate-async data-validation-message="物联网站点编码"
|
||||
type="text" id="siteCode" value="${constructionSite.siteCode!}"
|
||||
minlength="1"
|
||||
maxlength="50" placeholder="物联网站点编码" required/>
|
||||
</div>
|
||||
<div class="am-u-sm-2 am-u-md-4 input-msg"></div>
|
||||
</div>
|
||||
|
||||
<!--验证表单元素(validate end-->
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!--选项卡(tabs)end-->
|
||||
<div class="am-margin">
|
||||
<button type="submit" class="am-btn am-btn-primary am-btn-xs">提交保存</button>
|
||||
<button type="button" class="am-btn am-btn-warning am-btn-xs"
|
||||
onclick="javascript:history.go(-1);">返回上一级
|
||||
</button>
|
||||
</div>
|
||||
</form>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</@defaultLayout.layout>
|
||||
|
||||
<script type="text/javascript">
|
||||
var urlBase = "${base}";
|
||||
var url;
|
||||
|
||||
$(function () {
|
||||
/*表单验证:begin*/
|
||||
//自定义规则,用法:验证元素上加class="js-pattern-sort"
|
||||
if ($.AMUI && $.AMUI.validator) {
|
||||
$.AMUI.validator.patterns.sort = /^([0-9]+)$/;
|
||||
}
|
||||
$("#pmsForm").validator({
|
||||
// 域通过验证时回调
|
||||
onValid: function (validity) {
|
||||
$(validity.field).closest('.am-form-group').find('.am-alert').hide();
|
||||
},
|
||||
// 域验证通过时添加的操作,通过该接口可定义各种验证提示
|
||||
markValid: function (validity) {
|
||||
// this is Validator instance
|
||||
var $field = $(validity.field);
|
||||
//add by zxl,只对有required属性的字段进行验证
|
||||
if (typeof ($field.attr("required")) != "undefined") {
|
||||
var options = this.options;
|
||||
var $parent = $field.closest('.am-form-group');
|
||||
$field.addClass(options.validClass).removeClass(options.inValidClass);
|
||||
|
||||
$parent.addClass('am-form-success').removeClass('am-form-error');
|
||||
|
||||
options.onValid.call(this, validity);
|
||||
}
|
||||
},
|
||||
// 验证出错时的回调, validity 对象包含相关信息,格式通 H5 表单元素的 validity 属性
|
||||
onInValid: function (validity) {
|
||||
var $field = $(validity.field);
|
||||
var $group = $field.closest('.am-form-group');
|
||||
var $alert = $group.find('.am-alert');
|
||||
// 使用自定义的提示信息 或 插件内置的提示信息
|
||||
var msg = $field.data('validationMessage') || this.getValidationMessage(validity);
|
||||
|
||||
if (!$alert.length) {
|
||||
$alert = $("<div class='am-alert am-alert-danger'></div>").hide().appendTo($group.find(".input-msg"));
|
||||
}
|
||||
console.log("onInValid : " + $field.val());
|
||||
$alert.html(msg).show();
|
||||
}
|
||||
});
|
||||
/*表单验证:end*/
|
||||
|
||||
})
|
||||
|
||||
var submit_function = function () {
|
||||
var areaCode = $("#areaCode").val();
|
||||
if(areaCode == '') {
|
||||
$("#areaCode").val(0);
|
||||
}
|
||||
|
||||
$("#pmsForm").submit();
|
||||
};
|
||||
|
||||
</script>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
@ -1,481 +0,0 @@
|
|||
<#assign base=request.contextPath />
|
||||
<#import "../common/defaultLayout.ftl" as defaultLayout>
|
||||
<@defaultLayout.layout>
|
||||
<div class="admin-content">
|
||||
<div class="am-cf am-padding" style="padding:1rem 1.6rem 1.6rem 1rem;margin:0px;">
|
||||
<!-- padding:1px 2px 3px 4px;上、右、下,和左 -->
|
||||
<div class="am-fl am-cf"><strong class="am-text-primary am-text-lg">工地管理</strong> /
|
||||
<small>工地管理</small>
|
||||
</div>
|
||||
</div>
|
||||
<div class="am-g">
|
||||
<div class="am-u-sm-12">
|
||||
<form class="am-form" id="listForm" action="${base}/construction/site/list" method="POST">
|
||||
<input type="hidden" id="keywords" name="keywords" value='${keywords!""}'/>
|
||||
<table class="am-table am-table-bordered am-table-radius table-main" style="padding:0;">
|
||||
<tbody>
|
||||
<tr>
|
||||
<th class="am-text-middle">项目名称</th>
|
||||
<td>
|
||||
<div class="am-u-sm-10">
|
||||
<input type="text" id="projectName" class="am-form-field am-input-sm"
|
||||
value="${projectName!}"/>
|
||||
</div>
|
||||
</td>
|
||||
<th class="am-text-middle">建设单位</th>
|
||||
<td>
|
||||
<div class="am-u-sm-10">
|
||||
<input type="text" id="buildCompany" class="am-form-field am-input-sm"
|
||||
value="${buildCompany!}"/>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class="am-text-middle">项目地址</th>
|
||||
<td>
|
||||
<div class="am-u-sm-10">
|
||||
<input type="text" id="projectAddress" class="am-form-field am-input-sm"
|
||||
value="${projectAddress!}"/>
|
||||
</div>
|
||||
</td>
|
||||
<th class="am-text-middle">开工日期</th>
|
||||
<td>
|
||||
<div class="am-u-sm-10">
|
||||
<div class="am-form am-form-inline">
|
||||
<div class="am-form-group am-form-icon">
|
||||
<i class="am-icon-calendar"></i>
|
||||
<input type="text" class="am-form-field am-input-sm" id="sStartTime"
|
||||
value="${sStartTime!}" placeholder="开始日期" data-am-datepicker>
|
||||
</div>
|
||||
<div class="am-form-group">至</div>
|
||||
<div class="am-form-group am-form-icon">
|
||||
<i class="am-icon-calendar"></i>
|
||||
<input type="text" class="am-form-field am-input-sm" id="sEndTime"
|
||||
value="${sEndTime!}"
|
||||
placeholder="结束日期" data-am-datepicker>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class="am-text-middle">所属区域</th>
|
||||
<td>
|
||||
<div class="am-u-sm-10">
|
||||
<select id="regionId" name="regionId"
|
||||
data-am-selected="{btnSize: 'sm',maxHeight: 200,searchBox: 1}">
|
||||
<option value="-1">全部</option>
|
||||
<#if regionList?exists>
|
||||
<#list regionList as node>
|
||||
<option value="${node.id!}" <#if regionId! == "${node.id}" >
|
||||
selected </#if>>${node.name}</option>
|
||||
</#list>
|
||||
</#if>
|
||||
|
||||
</select>
|
||||
</div>
|
||||
</td>
|
||||
<th class="am-text-middle">竣工日期</th>
|
||||
<td>
|
||||
<div class="am-u-sm-10">
|
||||
<div class="am-form am-form-inline">
|
||||
<div class="am-form-group am-form-icon">
|
||||
<i class="am-icon-calendar"></i>
|
||||
<input type="text" class="am-form-field am-input-sm" id="eStartTime"
|
||||
value="${eStartTime!}" placeholder="开始日期" data-am-datepicker>
|
||||
</div>
|
||||
<div class="am-form-group">至</div>
|
||||
<div class="am-form-group am-form-icon">
|
||||
<i class="am-icon-calendar"></i>
|
||||
<input type="text" class="am-form-field am-input-sm" id="eEndTime"
|
||||
value="${eEndTime!}"
|
||||
placeholder="结束日期" data-am-datepicker>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class="am-text-middle">施工单位</th>
|
||||
<td>
|
||||
<div class="am-u-sm-10">
|
||||
<input type="text" id="constructionCompany" class="am-form-field am-input-sm"
|
||||
value="${constructionCompany!}"/>
|
||||
</div>
|
||||
</td>
|
||||
<td colspan="4">
|
||||
<div align='right'>
|
||||
<button type="button" class="am-btn am-btn-default am-btn-sm am-text-secondary"
|
||||
id="submit-btn" onclick="sub_function('query')">搜索
|
||||
</button>
|
||||
<@shiro.hasPermission name="CONS_EXPOR">
|
||||
<button type="button" class="am-btn am-btn-default am-btn-sm am-text-secondary"
|
||||
id="submit-btn-export" onclick="sub_function('export')">导出
|
||||
</button>
|
||||
</@shiro.hasPermission>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</form>
|
||||
</div>
|
||||
<div class="am-u-sm-12 am-u-md-12" style="padding:0 1.6rem 1.6rem 1rem;margin:0;">
|
||||
<div class="am-btn-toolbar" style="padding-left:.5rem;">
|
||||
<div class="am-btn-group am-btn-group-xs">
|
||||
<@shiro.hasPermission name="CONS_ADD">
|
||||
<button type="button" class="am-btn am-btn-default"
|
||||
onclick="location.href='${base}/construction/site/add'">
|
||||
<span class="am-icon-plus"></span> 新增
|
||||
</button>
|
||||
</@shiro.hasPermission>
|
||||
<@shiro.hasPermission name="CONS_DELETE">
|
||||
<button type="button" id="deleteButton" disabled="disabled" class="am-btn am-btn-default"
|
||||
onclick="deleteAll('${base}/construction/site/delete')"><span
|
||||
class="am-icon-trash-o"></span> 删除
|
||||
</button>
|
||||
</@shiro.hasPermission>
|
||||
<div class="am-btn-group am-btn-group-xs">
|
||||
<div class="am-btn-group am-btn-group-xs am-form-file">
|
||||
<@shiro.hasPermission name="BATCHIMPORT">
|
||||
<button type="button" id="bt_import" class="am-btn am-btn-default">
|
||||
<span class="am-icon-archive"></span>
|
||||
批量导入
|
||||
</button>
|
||||
</@shiro.hasPermission>
|
||||
<input id="doc-form-file" type="file" name="file"
|
||||
onChange="ajaxUploadFile('doc-form-file','${base}/construction/site/batchImport')"
|
||||
multiple>
|
||||
</div>
|
||||
<@shiro.hasPermission name="CONS_EXPOR">
|
||||
<button type="button" class="am-btn am-btn-default"
|
||||
onclick="location.href='${base}/construction/site/template'">
|
||||
<span class="am-icon-archive"></span> 导入模板下载
|
||||
</button>
|
||||
</@shiro.hasPermission>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="am-g">
|
||||
<div class="am-u-sm-12">
|
||||
<div class="am-scrollable-horizontal">
|
||||
<table class="am-table am-table-striped am-table-hover table-main">
|
||||
<thead>
|
||||
<tr class="am-text-nowrap">
|
||||
<th class="table-check"><input type="checkbox" id="allCheck"></th>
|
||||
<th class="table-id">主键ID</th>
|
||||
<th class="table-title">项目名称</th>
|
||||
<th class="table-title">项目地址</th>
|
||||
<th class="table-title">所属区域</th>
|
||||
<th class="table-title">经纬度</th>
|
||||
<th class="table-title">建设单位</th>
|
||||
<th class="table-title">施工单位</th>
|
||||
<th class="table-title">建筑面积</th>
|
||||
<th class="table-title">开工日期</th>
|
||||
<th class="table-title">竣工日期</th>
|
||||
<th class="table-title">工地环保负责人姓名</th>
|
||||
<th class="table-title">工地环保负责人电话</th>
|
||||
<th class="table-title">集云服务器地址</th>
|
||||
<th class="table-set">操作</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<#if (pager.list)?exists>
|
||||
<#list pager.list as list>
|
||||
<tr>
|
||||
<td><input type="checkbox" name="ids" value="${list.id}"/></td>
|
||||
<td>${list.id!}</td>
|
||||
<td>${list.projectName!}</td>
|
||||
<td>${list.projectAddress!}</td>
|
||||
<td>${list.regionName!}</td>
|
||||
<td>${list.location!}</td>
|
||||
<td>${list.buildCompany!}</td>
|
||||
<td>${list.constructionCompany!}</td>
|
||||
<td>${list.coveredArea!}</td>
|
||||
<#-- <td><#if list.startDate??>${list.startDate?datetime}</#if></td>
|
||||
<td><#if list.endDate??>${list.endDate?datetime}</#if></td>-->
|
||||
<td>${list.startDateString!}</td>
|
||||
<td>${list.endDateString!}</td>
|
||||
<td>${list.principalName!}</td>
|
||||
<td>${list.principalPhone!}</td>
|
||||
<td>${list.serverAddress!}</td>
|
||||
<td>
|
||||
<div class="am-btn-toolbar">
|
||||
<div class="am-btn-group am-btn-group-xs">
|
||||
<@shiro.hasPermission name="CONS_EDIT">
|
||||
<button type="button"
|
||||
class="am-btn am-btn-default am-btn-xs am-text-secondary"
|
||||
onclick="location.href='${base}/construction/site/edit?id=${list.id?c}'"><span
|
||||
class="am-icon-pencil-square-o"></span>编辑
|
||||
</button>
|
||||
</@shiro.hasPermission>
|
||||
<@shiro.hasPermission name="CONS_CAMERA">
|
||||
<button type="button"
|
||||
class="am-btn am-btn-default am-btn-xs am-text-secondary"
|
||||
<#--onclick="location.href='${base}/construction/site/cameraList?id=${list.id?c}'">-->
|
||||
onclick="jump(${list.id})">
|
||||
<span class="am-icon-pencil-square-o"></span>摄像头管理
|
||||
</button>
|
||||
</@shiro.hasPermission>
|
||||
<@shiro.hasPermission name="CONS_CAMERA_ALARM">
|
||||
<button type="button"
|
||||
class="am-btn am-btn-default am-btn-xs am-text-secondary"
|
||||
onclick="location.href='${base}/construction/site/cameraAlarm?constructionSiteId=${list.id?c}'"><span
|
||||
class="am-icon-pencil-square-o"></span>实时查看
|
||||
</button>
|
||||
</@shiro.hasPermission>
|
||||
<@shiro.hasPermission name="CONS_CAMERA_ALARM">
|
||||
<#if (list.focusOn) =1>
|
||||
<button class="am-btn am-btn-default am-btn-xs am-text-secondary"
|
||||
onclick="location.href='${base}/construction/site/focus?constructionSiteId=${list.id}'">重点监管
|
||||
</button>
|
||||
</#if>
|
||||
</@shiro.hasPermission>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</#list>
|
||||
</#if>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<div class="am-cf">
|
||||
<!-- 分页 -->
|
||||
<#if (pager.list)?exists && (pager.list?size>0) >
|
||||
<div class="am-fr">
|
||||
<#include "../common/order_list_pager.ftl">
|
||||
</div>
|
||||
<#else>
|
||||
<div class="am-kai" align="center">
|
||||
<h3>没有找到任何记录!</h3>
|
||||
</div>
|
||||
</#if>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</@defaultLayout.layout>
|
||||
|
||||
<script type="text/javascript" src="${base}/common/js/jquery.ajaxfileupload.js"></script>
|
||||
<script src="${base}/common/jQuery-File-Upload/js/vendor/jquery.ui.widget.js"></script>
|
||||
<script type="text/javascript" src="${base}/common/jQuery-File-Upload/js/jquery.iframe-transport.js"></script>
|
||||
<script type="text/javascript" src="${base}/common/jQuery-File-Upload/js/jquery.fileupload.js"></script>
|
||||
<script src="${base}/common/jQuery-File-Upload/js/jquery.fileupload-process.js"></script>
|
||||
<script src="${base}/common/jQuery-File-Upload/js/jquery.fileupload-validate.js"></script>
|
||||
<script src="${base}/assets/js/amazeui.switch.js"></script>
|
||||
|
||||
<script type="text/javascript">
|
||||
|
||||
function jump(id) {
|
||||
var p=window.location.protocol;
|
||||
var h=window.location.host;
|
||||
console.log(p,h);
|
||||
location.href='${base}/construction/site/toDragCamera?id='+id + "&protocol="+p + "&host="+h;
|
||||
}
|
||||
|
||||
$(function () {
|
||||
$("body").on('click', '.list-item', function () {
|
||||
$(".list-item").removeClass("tr-selected");
|
||||
$(this).addClass('tr-selected');
|
||||
});
|
||||
$("#allCheck").click(function () {
|
||||
$('input[name="ids"]').prop("checked", this.checked);
|
||||
$("#deleteButton").prop("disabled", $("input[name='ids']:checked").length == 0 ? true : false);
|
||||
});
|
||||
var $citySubBox = $("input[name='ids']");
|
||||
$citySubBox.click(function () {
|
||||
$("#allCheckCity").prop("checked", $citySubBox.length == $("input[name='ids']:checked").length ? true : false);
|
||||
$("#deleteButton").prop("disabled", $("input[name='ids']:checked").length == 0 ? true : false);
|
||||
});
|
||||
|
||||
var keywordsObj = {};
|
||||
$("#submit-btn").on("click", function () {
|
||||
$("#pageNumber").val(1);
|
||||
if ($("#projectName").val())
|
||||
keywordsObj.projectName = $("#projectName").val();
|
||||
if ($("#buildCompany").val())
|
||||
keywordsObj.buildCompany = $("#buildCompany").val();
|
||||
if ($("#projectAddress").val())
|
||||
keywordsObj.projectAddress = $("#projectAddress").val();
|
||||
if ($("#constructionCompany").val())
|
||||
keywordsObj.constructionCompany = $("#constructionCompany").val();
|
||||
if ($("#regionId").val())
|
||||
keywordsObj.regionId = $("#regionId").val();
|
||||
if ($("#sStartTime").val())
|
||||
keywordsObj.sStartTime = $("#sStartTime").val();
|
||||
if ($("#sEndTime").val())
|
||||
keywordsObj.sEndTime = $("#sEndTime").val();
|
||||
|
||||
var sStartTime = $("#sStartTime").val();
|
||||
var sEndTime = $("#sEndTime").val();
|
||||
if(sStartTime > sEndTime){
|
||||
window.confirm('开工日期开始日期应早于结束日期');
|
||||
}
|
||||
|
||||
if ($("#eStartTime").val())
|
||||
keywordsObj.eStartTime = $("#eStartTime").val();
|
||||
if ($("#eEndTime").val())
|
||||
keywordsObj.eEndTime = $("#eEndTime").val();
|
||||
|
||||
var eStartTime = $("#eStartTime").val();
|
||||
var eEndTime = $("#eEndTime").val();
|
||||
if(eStartTime > eEndTime){
|
||||
window.confirm('竣工日期开始日期应早于结束日期');
|
||||
}
|
||||
var keywords = "";
|
||||
if (!$.isEmptyObject(keywordsObj)) {
|
||||
keywords = JSON.stringify(keywordsObj);
|
||||
}
|
||||
console.log("keywords = " + keywords);
|
||||
$("#keywords").val(keywords);
|
||||
$("#listForm").submit();
|
||||
});
|
||||
});
|
||||
|
||||
function ajaxUploadFile(id, url) {
|
||||
$.ajaxFileUpload({
|
||||
url: url,
|
||||
secureuri: false,
|
||||
fileElementId: id,// file标签的id
|
||||
dataType: 'json',// 返回数据的类型
|
||||
success: function (data, status) {
|
||||
console.log("--------success---------" + data)
|
||||
if (data.status == 0) {
|
||||
var list = data.data;
|
||||
var content = '';
|
||||
$.each(list, function (i, r) {
|
||||
content += (i + 1) + '、' + r + '<br>';
|
||||
});
|
||||
console.log('---> ' + content);
|
||||
parent.layer.open({
|
||||
title: '导入结果:',
|
||||
content: data.msg + '<br><br>' + content
|
||||
});
|
||||
} else {
|
||||
parent.layer.msg(data.msg);
|
||||
}
|
||||
|
||||
window.location.reload();
|
||||
$("#" + id).val("");
|
||||
},
|
||||
error: function (data, status, e) {
|
||||
console.log("--------error---------" + data)
|
||||
alert("-----------------" + data);
|
||||
// if ($('#modal')) {
|
||||
// $('#modal').modal('close');
|
||||
// }
|
||||
alert(e);
|
||||
$("#" + id).val("");
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
var sub_function = function (type) {
|
||||
$("#pageNumber").val(1);
|
||||
initSearch();
|
||||
if (type == 'export') {
|
||||
$("#listForm").attr("action", "${base}/construction/site/export");
|
||||
} else {
|
||||
$("#listForm").attr("action", "${base}/construction/site/list");
|
||||
var index = layer.load(1, {
|
||||
shade: [0.1, '#fff'] //0.1透明度的白色背景
|
||||
});
|
||||
}
|
||||
$("#listForm").submit();
|
||||
};
|
||||
|
||||
function initSearch() {
|
||||
var keywordsObj = {};
|
||||
if ($("#projectName").val())
|
||||
keywordsObj.projectName = $("#projectName").val();
|
||||
if ($("#buildCompany").val())
|
||||
keywordsObj.buildCompany = $("#buildCompany").val();
|
||||
if ($("#projectAddress").val())
|
||||
keywordsObj.projectAddress = $("#projectAddress").val();
|
||||
if ($("#constructionCompany").val())
|
||||
keywordsObj.constructionCompany = $("#constructionCompany").val();
|
||||
if ($("#regionId").val())
|
||||
keywordsObj.regionId = $("#regionId").val();
|
||||
if ($("#sStartTime").val())
|
||||
keywordsObj.sStartTime = $("#sStartTime").val();
|
||||
if ($("#sEndTime").val())
|
||||
keywordsObj.sEndTime = $("#sEndTime").val();
|
||||
if ($("#eStartTime").val())
|
||||
keywordsObj.eStartTime = $("#eStartTime").val();
|
||||
if ($("#eEndTime").val())
|
||||
keywordsObj.eEndTime = $("#eEndTime").val();
|
||||
var keywords = "";
|
||||
if (!$.isEmptyObject(keywordsObj)) {
|
||||
keywords = JSON.stringify(keywordsObj);
|
||||
}
|
||||
console.log("keywords = " + keywords);
|
||||
$("#keywords").val(keywords);
|
||||
};
|
||||
|
||||
// 删除
|
||||
var deleteAll = function (url) {
|
||||
var $deleteButton = $("#deleteButton");// 删除按钮
|
||||
var ids = "";
|
||||
$("input[name='ids']:checked").each(function () {
|
||||
ids += $(this).val() + "#%#";
|
||||
});
|
||||
var params = {ids: ids};
|
||||
if (window.confirm('确定要删除吗?')) {
|
||||
$.ajax({
|
||||
url: url,
|
||||
data: params,
|
||||
dataType: "json",
|
||||
async: false,
|
||||
beforeSend: function (data) {
|
||||
$deleteButton.prop("disabled", true)
|
||||
},
|
||||
success: function (data) {
|
||||
$deleteButton.prop("disabled", false)
|
||||
if (data.status == 0) {
|
||||
alert("删除成功");
|
||||
window.location.href = window.location.href;
|
||||
} else if (data.status == 1) {
|
||||
alert("删除失败");
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
var focus = function (constructionSiteId) {
|
||||
if (window.confirm('确定设置重点监管吗?')) {
|
||||
$.ajax({
|
||||
url: "${base}/construction/site/focus?constructionSiteId=" + constructionSiteId,
|
||||
type: "get",
|
||||
dataType: "json",
|
||||
async: false,
|
||||
success: function (data) {
|
||||
alert(data.msg);
|
||||
window.location.href = window.location.href;
|
||||
}
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
</script>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
@ -1,190 +0,0 @@
|
|||
<#assign base=request.contextPath />
|
||||
<#import "../common/defaultLayout.ftl" as defaultLayout>
|
||||
<@defaultLayout.layout>
|
||||
<div class="admin-content">
|
||||
<div class="am-cf am-padding" style="padding:1rem 1.6rem 1.6rem 1rem;margin:0px;">
|
||||
<!-- padding:1px 2px 3px 4px;上、右、下,和左 -->
|
||||
<div class="am-fl am-cf"><strong class="am-text-primary am-text-lg">统计报表</strong> /
|
||||
<small>工地用电量统计</small>
|
||||
</div>
|
||||
</div>
|
||||
<div class="am-g">
|
||||
<div class="am-u-sm-12">
|
||||
<form class="am-form" id="listForm" action="${base}/electricity/list" method="POST">
|
||||
<input type="hidden" id="keywords" name="keywords" value='${keywords!""}'/>
|
||||
<table class="am-table am-table-bordered am-table-radius table-main" style="padding:0;">
|
||||
<tbody>
|
||||
<tr>
|
||||
<th class="am-text-middle">工地名称</th>
|
||||
<td>
|
||||
<div class="am-u-sm-10">
|
||||
<input type="text" id="constructionSiteName" class="am-form-field am-input-sm"
|
||||
value="${constructionSiteName!}"/>
|
||||
</div>
|
||||
</td>
|
||||
<th class="am-text-middle">查询时间</th>
|
||||
<td>
|
||||
<div class="am-u-sm-10">
|
||||
<div class="am-form am-form-inline">
|
||||
<div class="am-form-group am-form-icon">
|
||||
<i class="am-icon-calendar"></i>
|
||||
<input type="text" class="am-form-field am-input-sm" id="startTime"
|
||||
value="${startTime!}" placeholder="开始日期" data-am-datepicker>
|
||||
</div>
|
||||
<div class="am-form-group">至</div>
|
||||
<div class="am-form-group am-form-icon">
|
||||
<i class="am-icon-calendar"></i>
|
||||
<input type="text" class="am-form-field am-input-sm" id="endTime"
|
||||
value="${endTime!}"
|
||||
placeholder="结束日期" data-am-datepicker>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
</td>
|
||||
<td colspan="4">
|
||||
<div align='right'>
|
||||
<button type="button" class="am-btn am-btn-default am-btn-sm am-text-secondary"
|
||||
id="submit-btn" onclick="sub_function('query')">搜索
|
||||
</button>
|
||||
<@shiro.hasPermission name="ELECTRICITYEXPORT">
|
||||
<button type="button" class="am-btn am-btn-default am-btn-sm am-text-secondary"
|
||||
id="submit-btn-export" onclick="sub_function('export')">导出
|
||||
</button>
|
||||
</@shiro.hasPermission>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
<div class="am-g">
|
||||
<div class="am-u-sm-12">
|
||||
<div class="am-scrollable-horizontal">
|
||||
<table class="am-table am-table-striped am-table-hover table-main">
|
||||
<thead>
|
||||
<tr class="am-text-nowrap">
|
||||
<th class="table-title">工地名称</th>
|
||||
<th class="table-title">用电量</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<#if (pager.list)?exists>
|
||||
<#list pager.list as list>
|
||||
<tr>
|
||||
<td>${list.constructionSiteName!}</td>
|
||||
<td>${list.electricity!}</td>
|
||||
</tr>
|
||||
</#list>
|
||||
</#if>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<div class="am-cf">
|
||||
<!-- 分页 -->
|
||||
<#if (pager.list)?exists && (pager.list?size>0) >
|
||||
<div class="am-fr">
|
||||
<#include "../common/order_list_pager.ftl">
|
||||
</div>
|
||||
<#else>
|
||||
<div class="am-kai" align="center">
|
||||
<h3>没有找到任何记录!</h3>
|
||||
</div>
|
||||
</#if>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</@defaultLayout.layout>
|
||||
|
||||
<script type="text/javascript">
|
||||
|
||||
var sub_function = function (type) {
|
||||
$("#pageNumber").val(1);
|
||||
initSearch();
|
||||
if (type == 'export') {
|
||||
$("#listForm").attr("action", "${base}/electricity/export");
|
||||
} else {
|
||||
$("#listForm").attr("action", "${base}/electricity/list");
|
||||
var index = layer.load(1, {
|
||||
shade: [0.1, '#fff'] //0.1透明度的白色背景
|
||||
});
|
||||
}
|
||||
$("#listForm").submit();
|
||||
};
|
||||
|
||||
function initSearch() {
|
||||
var keywordsObj = {};
|
||||
if ($("#constructionSiteName").val())
|
||||
keywordsObj.constructionSiteName = $("#constructionSiteName").val();
|
||||
if ($("#startTime").val())
|
||||
keywordsObj.startTime = $("#startTime").val();
|
||||
if ($("#endTime").val())
|
||||
keywordsObj.endTime = $("#endTime").val();
|
||||
var keywords = "";
|
||||
if (!$.isEmptyObject(keywordsObj)) {
|
||||
keywords = JSON.stringify(keywordsObj);
|
||||
}
|
||||
console.log("keywords = " + keywords);
|
||||
$("#keywords").val(keywords);
|
||||
}
|
||||
|
||||
$(function () {
|
||||
$("body").on('click', '.list-item', function () {
|
||||
$(".list-item").removeClass("tr-selected");
|
||||
$(this).addClass('tr-selected');
|
||||
});
|
||||
$("#allCheck").click(function () {
|
||||
$('input[name="ids"]').prop("checked", this.checked);
|
||||
$("#deleteButton").prop("disabled", $("input[name='ids']:checked").length == 0 ? true : false);
|
||||
});
|
||||
var $citySubBox = $("input[name='ids']");
|
||||
$citySubBox.click(function () {
|
||||
$("#allCheckCity").prop("checked", $citySubBox.length == $("input[name='ids']:checked").length ? true : false);
|
||||
$("#deleteButton").prop("disabled", $("input[name='ids']:checked").length == 0 ? true : false);
|
||||
});
|
||||
|
||||
var keywordsObj = {};
|
||||
$("#submit-btn").on("click", function () {
|
||||
$("#pageNumber").val(1);
|
||||
if ($("#constructionSiteName").val())
|
||||
keywordsObj.constructionSiteName = $("#constructionSiteName").val();
|
||||
if ($("#startTime").val())
|
||||
keywordsObj.startTime = $("#startTime").val();
|
||||
if ($("#endTime").val())
|
||||
keywordsObj.endTime = $("#endTime").val();
|
||||
var startTime = $("#startTime").val();
|
||||
var endTime = $("#endTime").val();
|
||||
if(startTime > endTime){
|
||||
window.confirm('开始日期应早于结束日期');
|
||||
}
|
||||
var keywords = "";
|
||||
if (!$.isEmptyObject(keywordsObj)) {
|
||||
keywords = JSON.stringify(keywordsObj);
|
||||
}
|
||||
console.log("keywords = " + keywords);
|
||||
$("#keywords").val(keywords);
|
||||
$("#listForm").submit();
|
||||
});
|
||||
});
|
||||
</script>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
@ -1,172 +0,0 @@
|
|||
<#assign base=request.contextPath />
|
||||
<#import "../common/defaultLayout.ftl" as defaultLayout>
|
||||
<@defaultLayout.layout>
|
||||
|
||||
<div class="admin-content">
|
||||
<div class="admin-content-body">
|
||||
<div class="am-cf am-padding">
|
||||
<div class="am-fl am-cf"><strong class="am-text-primary am-text-lg">工地管理</strong> /
|
||||
<small>重点关注类型</small></div>
|
||||
</div>
|
||||
<form method="post" class="am-form" id="tmpForm" action="${base}/construction/site/focus/type/save">
|
||||
<!--选项卡(tabs)begin-->
|
||||
<div class="am-tabs am-margin" data-am-tabs>
|
||||
<ul class="am-tabs-nav am-nav am-nav-tabs">
|
||||
<li class="am-active">
|
||||
<a href="#tab1">设置重点关注类型</a>
|
||||
</li>
|
||||
</ul>
|
||||
<div class="am-tabs-bd">
|
||||
<div class="am-tab-panel am-fade am-in am-active" id="tab1">
|
||||
<input name="constructionSiteId" id="constructionSiteId" type="hidden" value="${constructionSiteId!}"/>
|
||||
<!--验证表单元素(validate) begin-->
|
||||
<!--input begin-->
|
||||
<div class="am-g am-form-group am-margin-top">
|
||||
|
||||
<div class="am-u-sm-4 am-u-md-2 am-text-right">工地名称</div>
|
||||
<div class="am-u-sm-8 am-u-md-10">
|
||||
<input class="js-ajax-validate" name="projectName" value="${constructionSite.projectName!}"
|
||||
type="text" disabled/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="am-g am-form-group am-margin-top">
|
||||
<div class="am-u-sm-4 am-u-md-2 am-text-right">关注类型</div>
|
||||
<div class="am-u-sm-8 am-u-md-10">
|
||||
<table class="am-table am-table-striped am-table-hover table-main">
|
||||
<thead>
|
||||
<tr class="am-text-nowrap">
|
||||
<th class="table-check"><input type="checkbox" id="allCheck"></th>
|
||||
<th class="table-title">告警类型名称</th>
|
||||
<th class="table-title">是否已关注</th>
|
||||
<th class="table-title">告警数</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<#if (focusAlarmTypes)?exists>
|
||||
<#list focusAlarmTypes as list>
|
||||
<tr>
|
||||
<td><input type="checkbox" name="ids" value="${list.alarmTypeId}"
|
||||
<#if (list.isChecked ==0) >checked</#if>/>
|
||||
</td>
|
||||
<td>${list.alarmTypeName!}</td>
|
||||
<td>
|
||||
<#if (list.isChecked ==1) >
|
||||
未关注
|
||||
<#else>
|
||||
已关注
|
||||
</#if>
|
||||
</td>
|
||||
<td>${list.alarmCount!}</td>
|
||||
</tr>
|
||||
</#list>
|
||||
</#if>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!--选项卡(tabs)end-->
|
||||
<div class="am-margin">
|
||||
<button type="button" id="deleteButton"
|
||||
class="am-btn am-btn-warning am-btn-xs"
|
||||
onclick="saveAll('${base}/construction/site/focus/type/save')"><span></span>保存
|
||||
</button>
|
||||
<button type="button" class="am-btn am-btn-warning am-btn-xs" onclick="javascript:history.go(-1);">
|
||||
返回上一级
|
||||
</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</@defaultLayout.layout>
|
||||
|
||||
<script src="${base}/assets/js/amazeui.switch.js"></script>
|
||||
<script type="text/javascript">
|
||||
var urlBase = "${base}";
|
||||
var url;
|
||||
|
||||
$(function () {
|
||||
/*表单提交 start*/
|
||||
var keywordsObj = {};
|
||||
$("#submit-btn").on("click", function () {
|
||||
if ($("#name").val())
|
||||
keywordsObj.name = $("#name").val();
|
||||
if ($("#roleId").val())
|
||||
keywordsObj.roleId = parseInt($("#roleId").val());
|
||||
if ($("#phone").val())
|
||||
keywordsObj.phone = $("#phone").val();
|
||||
if ($("#regionId").val())
|
||||
keywordsObj.regionId = parseInt($("#regionId").val());
|
||||
if ($("#company").val())
|
||||
keywordsObj.company = $("#company").val();
|
||||
var keywords = "";
|
||||
if (!$.isEmptyObject(keywordsObj)) {
|
||||
keywords = JSON.stringify(keywordsObj);
|
||||
}
|
||||
console.log("keywords = " + keywords);
|
||||
$("#keywords").val(keywords);
|
||||
$("#listForm").submit();
|
||||
});
|
||||
/*表单提交 end*/
|
||||
|
||||
/*复选框全选效果 start*/
|
||||
$("body").on('click', '.list-item', function () {
|
||||
$(".list-item").removeClass("tr-selected");
|
||||
$(this).addClass('tr-selected');
|
||||
});
|
||||
$("#allCheck").click(function () {
|
||||
$('input[name="ids"]').prop("checked", this.checked);
|
||||
$("#deleteButton").prop("disabled", $("input[name='ids']:checked").length == 0 ? true : false);
|
||||
});
|
||||
var $citySubBox = $("input[name='ids']");
|
||||
$citySubBox.click(function () {
|
||||
$("#allCheckCity").prop("checked", $citySubBox.length == $("input[name='ids']:checked").length ? true : false);
|
||||
$("#deleteButton").prop("disabled", $("input[name='ids']:checked").length == 0 ? true : false);
|
||||
});
|
||||
/*复选框全选效果 end*/
|
||||
|
||||
});
|
||||
|
||||
var saveAll = function (url) {
|
||||
var $deleteButton = $("#deleteButton");// 删除按钮
|
||||
var ids = "";
|
||||
$("input[name='ids']:checked").each(function () {
|
||||
ids += $(this).val() + "#%#";
|
||||
});
|
||||
var params = {ids: ids, constructionSiteId:${constructionSiteId}};
|
||||
$.ajax({
|
||||
url: url,
|
||||
data: params,
|
||||
dataType: "json",
|
||||
async: false,
|
||||
beforeSend: function (data) {
|
||||
$deleteButton.prop("disabled", true)
|
||||
},
|
||||
success: function (data) {
|
||||
$deleteButton.prop("disabled", false)
|
||||
if (data.status == 0) {
|
||||
alert(data.msg);
|
||||
window.location.href = window.location.href;
|
||||
} else if (data.status == 1) {
|
||||
alert(data.msg);
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
</script>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
@ -1,260 +0,0 @@
|
|||
<#assign base=request.contextPath />
|
||||
<#import "../common/defaultLayout.ftl" as defaultLayout>
|
||||
<@defaultLayout.layout>
|
||||
<link rel="stylesheet" href="../assets/css/amazeui.switch.css"/>
|
||||
<div class="admin-content">
|
||||
<div class="am-cf am-padding" style="padding:1rem 1.6rem 1.6rem 1rem;margin:0px;">
|
||||
<!-- padding:1px 2px 3px 4px;上、右、下,和左 -->
|
||||
<div class="am-fl am-cf"><strong class="am-text-primary am-text-lg">统计报表</strong> /
|
||||
<small>网格员统计报表</small>
|
||||
</div>
|
||||
</div>
|
||||
<div class="am-g">
|
||||
<div class="am-u-sm-12">
|
||||
<form class="am-form" id="listForm" action="${base}/grid/member/list" method="POST">
|
||||
<input type="hidden" id="keywords" name="keywords" value='${keywords!""}'/>
|
||||
<table class="am-table am-table-bordered am-table-radius table-main" style="padding:0;">
|
||||
<tbody>
|
||||
<tr>
|
||||
<th class="am-text-middle">网格员姓名</th>
|
||||
<td>
|
||||
<div class="am-u-sm-10">
|
||||
<input type="text" id="gridMemberName" class="am-form-field am-input-sm"
|
||||
value="${gridMemberName!}"/>
|
||||
</div>
|
||||
</td>
|
||||
<th class="am-text-middle">创建时间</th>
|
||||
<td>
|
||||
<div class="am-u-sm-10">
|
||||
<div class="am-form am-form-inline">
|
||||
<div class="am-form-group am-form-icon">
|
||||
<i class="am-icon-calendar"></i>
|
||||
<input type="text" class="am-form-field am-input-sm" id="startTime"
|
||||
value="${startTime!}" placeholder="开始日期" data-am-datepicker>
|
||||
</div>
|
||||
<div class="am-form-group">至</div>
|
||||
<div class="am-form-group am-form-icon">
|
||||
<i class="am-icon-calendar"></i>
|
||||
<input type="text" class="am-form-field am-input-sm" id="endTime"
|
||||
value="${endTime!}"
|
||||
placeholder="结束日期" data-am-datepicker>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class="am-text-middle">所属区域</th>
|
||||
<td>
|
||||
<div class="am-u-sm-10">
|
||||
<select id="regionId" name="regionId"
|
||||
data-am-selected="{btnSize: 'sm',maxHeight: 200,searchBox: 1}">
|
||||
<option value="-1">全部</option>
|
||||
<#if regionList?exists>
|
||||
<#list regionList as node>
|
||||
<option value="${node.id!}" <#if regionId! == "${node.id}" >
|
||||
selected </#if>>${node.name}</option>
|
||||
</#list>
|
||||
</#if>
|
||||
|
||||
</select>
|
||||
</div>
|
||||
</td>
|
||||
<td colspan="4">
|
||||
<div align='right'>
|
||||
<button type="button" class="am-btn am-btn-default am-btn-sm am-text-secondary"
|
||||
id="submit-btn" onclick="sub_function('query')">搜索
|
||||
</button>
|
||||
<@shiro.hasPermission name="GRIDMEMBEREXPORT">
|
||||
<button type="button" class="am-btn am-btn-default am-btn-sm am-text-secondary"
|
||||
id="submit-btn-export" onclick="sub_function('export')">导出
|
||||
</button>
|
||||
</@shiro.hasPermission>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="4">
|
||||
<div align='left'>
|
||||
<button type="button" class="am-btn am-btn-default am-btn-sm am-text-secondary"
|
||||
id="submit-btn" onclick="sub_function('year')">本年
|
||||
</button>
|
||||
<button type="button" class="am-btn am-btn-default am-btn-sm am-text-secondary"
|
||||
id="submit-btn-export" onclick="sub_function('month')">本月
|
||||
</button>
|
||||
<button type="button" class="am-btn am-btn-default am-btn-sm am-text-secondary"
|
||||
id="submit-btn" onclick="sub_function('week')">本周
|
||||
</button>
|
||||
<button type="button" class="am-btn am-btn-default am-btn-sm am-text-secondary"
|
||||
id="submit-btn-export" onclick="sub_function('day')">本日
|
||||
</button>
|
||||
</div>
|
||||
</td>
|
||||
<td colspan="4">
|
||||
<div align='left'>
|
||||
<span>上传工单数统计:${count}</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
<div class="am-g">
|
||||
<div class="am-u-sm-12">
|
||||
<div class="am-scrollable-horizontal">
|
||||
<table class="am-table am-table-striped am-table-hover table-main">
|
||||
<thead>
|
||||
<tr class="am-text-nowrap">
|
||||
<th class="table-title">主键ID</th>
|
||||
<th class="table-title">网格员姓名</th>
|
||||
<th class="table-title">所属区域</th>
|
||||
<th class="table-title">所属单位</th>
|
||||
<th class="table-title">上传工单数</th>
|
||||
<th class="table-title">平均响应时间(分)</th>
|
||||
<th class="table-title">工单验收率</th>
|
||||
<th class="table-title">创建时间</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<#if (pager.list)?exists && (pager.list?size>0)>
|
||||
<#list pager.list as list>
|
||||
<tr>
|
||||
<td>${list.id!}</td>
|
||||
<td>${list.gridMemberName!}</td>
|
||||
<td>${list.regionName!}</td>
|
||||
<td>${list.organization!}</td>
|
||||
<td>${list.receivingNumber!}</td>
|
||||
<td>${list.responseTime!}</td>
|
||||
<td>${list.acceptanceRate!}</td>
|
||||
<td><#if list.createTime??>${list.createTime?datetime}</#if></td>
|
||||
</tr>
|
||||
</#list>
|
||||
</#if>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<div class="am-cf">
|
||||
<!-- 分页 -->
|
||||
<#if (pager.list)?exists && (pager.list?size>0) >
|
||||
<div class="am-fr">
|
||||
<#include "../common/order_list_pager.ftl">
|
||||
</div>
|
||||
<#else>
|
||||
<div class="am-kai" align="center">
|
||||
<h3>没有找到任何记录!</h3>
|
||||
</div>
|
||||
</#if>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</@defaultLayout.layout>
|
||||
|
||||
<script src="../assets/js/amazeui.switch.js"></script>
|
||||
<script type="text/javascript">
|
||||
|
||||
var sub_function = function (type) {
|
||||
$("#pageNumber").val(1);
|
||||
initSearch();
|
||||
if (type == 'export') {
|
||||
$("#listForm").attr("action", "${base}/grid/member/export");
|
||||
}
|
||||
if (type == 'query') {
|
||||
$("#listForm").attr("action", "${base}/grid/member/list");
|
||||
}
|
||||
if (type == 'year') {
|
||||
$("#listForm").attr("action", "${base}/grid/member/list/time?type=year");
|
||||
}
|
||||
if (type == 'month') {
|
||||
$("#listForm").attr("action", "${base}/grid/member/list/time?type=month");
|
||||
}
|
||||
if (type == 'week') {
|
||||
$("#listForm").attr("action", "${base}/grid/member/list/time?type=week");
|
||||
}
|
||||
if (type == 'day') {
|
||||
$("#listForm").attr("action", "${base}/grid/member/list/time?type=day");
|
||||
}
|
||||
$("#listForm").submit();
|
||||
};
|
||||
|
||||
function initSearch() {
|
||||
var keywordsObj = {};
|
||||
if ($("#gridMemberName").val())
|
||||
keywordsObj.gridMemberName = $("#gridMemberName").val();
|
||||
if ($("#startTime").val())
|
||||
keywordsObj.startTime = $("#startTime").val();
|
||||
if ($("#endTime").val())
|
||||
keywordsObj.endTime = $("#endTime").val();
|
||||
if ($("#regionId").val())
|
||||
keywordsObj.regionId = $("#regionId").val();
|
||||
var keywords = "";
|
||||
if (!$.isEmptyObject(keywordsObj)) {
|
||||
keywords = JSON.stringify(keywordsObj);
|
||||
}
|
||||
console.log("keywords = " + keywords);
|
||||
$("#keywords").val(keywords);
|
||||
}
|
||||
|
||||
$(function () {
|
||||
$("body").on('click', '.list-item', function () {
|
||||
$(".list-item").removeClass("tr-selected");
|
||||
$(this).addClass('tr-selected');
|
||||
});
|
||||
$("#allCheck").click(function () {
|
||||
$('input[name="ids"]').prop("checked", this.checked);
|
||||
$("#deleteButton").prop("disabled", $("input[name='ids']:checked").length == 0 ? true : false);
|
||||
});
|
||||
var $citySubBox = $("input[name='ids']");
|
||||
$citySubBox.click(function () {
|
||||
$("#allCheckCity").prop("checked", $citySubBox.length == $("input[name='ids']:checked").length ? true : false);
|
||||
$("#deleteButton").prop("disabled", $("input[name='ids']:checked").length == 0 ? true : false);
|
||||
});
|
||||
|
||||
var keywordsObj = {};
|
||||
$("#submit-btn").on("click", function () {
|
||||
$("#pageNumber").val(1);
|
||||
if ($("#gridMemberName").val())
|
||||
keywordsObj.gridMemberName = $("#gridMemberName").val();
|
||||
if ($("#startTime").val())
|
||||
keywordsObj.startTime = $("#startTime").val();
|
||||
if ($("#endTime").val())
|
||||
keywordsObj.endTime = $("#endTime").val();
|
||||
if ($("#regionId").val())
|
||||
keywordsObj.regionId = $("#regionId").val();
|
||||
var startTime = $("#startTime").val();
|
||||
var endTime = $("#endTime").val();
|
||||
if (startTime > endTime) {
|
||||
window.confirm('开始日期应早于结束日期');
|
||||
}
|
||||
var keywords = "";
|
||||
if (!$.isEmptyObject(keywordsObj)) {
|
||||
keywords = JSON.stringify(keywordsObj);
|
||||
}
|
||||
console.log("keywords = " + keywords);
|
||||
$("#keywords").val(keywords);
|
||||
$("#listForm").submit();
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
</script>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
@ -1,54 +0,0 @@
|
|||
<#assign base=request.contextPath />
|
||||
<#import "../common/defaultLayout.ftl" as defaultLayout>
|
||||
<@defaultLayout.layout>
|
||||
<link rel="stylesheet" type="text/css" href="${base}/common/css/time-axis.css">
|
||||
<div class="admin-content">
|
||||
<div class="am-cf am-padding" style="padding:1rem 1.6rem 1.6rem 1rem;margin:0px;">
|
||||
<!-- padding:1px 2px 3px 4px;上、右、下,和左 -->
|
||||
<div class="am-fl am-cf"><strong class="am-text-primary am-text-lg">网格员巡查记录</strong> /
|
||||
<small>查看详情</small>
|
||||
</div>
|
||||
</div>
|
||||
<div class="main">
|
||||
<ul class="time-axis">
|
||||
<li class="time-axis-item">
|
||||
<p class="time-axis-achievement">${describe}</p>
|
||||
</li>
|
||||
</ul>
|
||||
<ul class="time-axis">
|
||||
<#if images?exists >
|
||||
<#list images as node>
|
||||
<li class="time-axis-item">
|
||||
<p class="time-axis-achievement"><img src="${node}" height="500" width="600"></p>
|
||||
</li>
|
||||
</#list>
|
||||
</#if>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="am-margin">
|
||||
<button type="button" class="am-btn am-btn-warning am-btn-xs" onclick="javascript:history.go(-1);">
|
||||
返回上一级
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</@defaultLayout.layout>
|
||||
|
||||
<script type="text/javascript" src="${base}/assets/js/jquery-3.4.1.min.js"></script>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
@ -1,278 +0,0 @@
|
|||
<#assign base=request.contextPath />
|
||||
<#import "../common/defaultLayout.ftl" as defaultLayout>
|
||||
<@defaultLayout.layout>
|
||||
<link rel="stylesheet" href="../assets/css/amazeui.switch.css"/>
|
||||
<div class="admin-content">
|
||||
<div class="am-cf am-padding" style="padding:1rem 1.6rem 1.6rem 1rem;margin:0px;">
|
||||
<!-- padding:1px 2px 3px 4px;上、右、下,和左 -->
|
||||
<div class="am-fl am-cf"><strong class="am-text-primary am-text-lg">统计报表</strong> /
|
||||
<small>网格员巡查记录</small>
|
||||
</div>
|
||||
</div>
|
||||
<div class="am-g">
|
||||
<div class="am-u-sm-12">
|
||||
<form class="am-form" id="listForm" action="${base}/patrolRecord/list" method="POST">
|
||||
<input type="hidden" id="keywords" name="keywords" value='${keywords!""}'/>
|
||||
<table class="am-table am-table-bordered am-table-radius table-main" style="padding:0;">
|
||||
<tbody>
|
||||
<tr>
|
||||
<th class="am-text-middle">网格员姓名</th>
|
||||
<td>
|
||||
<div class="am-u-sm-10">
|
||||
<input type="text" id="managerName" class="am-form-field am-input-sm"
|
||||
value="${managerName!}"/>
|
||||
</div>
|
||||
</td>
|
||||
<th class="am-text-middle">所属区域</th>
|
||||
<td>
|
||||
<div class="am-u-sm-10">
|
||||
<select id="regionId" name="regionId"
|
||||
data-am-selected="{btnSize: 'sm',maxHeight: 200,searchBox: 1}">
|
||||
<option value="-1">全部</option>
|
||||
<#if regionList?exists>
|
||||
<#list regionList as node>
|
||||
<option value="${node.id!}" <#if regionId! == "${node.id}" >
|
||||
selected </#if>>${node.name}</option>
|
||||
</#list>
|
||||
</#if>
|
||||
|
||||
</select>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class="am-text-middle">上报时间</th>
|
||||
<td>
|
||||
<div class="am-u-sm-10">
|
||||
<div class="am-form am-form-inline">
|
||||
<div class="am-form-group am-form-icon">
|
||||
<i class="am-icon-calendar"></i>
|
||||
<input type="text" class="am-form-field am-input-sm" id="startTime"
|
||||
value="${startTime!}" placeholder="开始日期" data-am-datepicker>
|
||||
</div>
|
||||
<div class="am-form-group">至</div>
|
||||
<div class="am-form-group am-form-icon">
|
||||
<i class="am-icon-calendar"></i>
|
||||
<input type="text" class="am-form-field am-input-sm" id="endTime"
|
||||
value="${endTime!}"
|
||||
placeholder="结束日期" data-am-datepicker>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
<td colspan="4">
|
||||
<div align='right'>
|
||||
<button type="button" class="am-btn am-btn-default am-btn-sm am-text-secondary"
|
||||
id="submit-btn" onclick="sub_function('query')">搜索
|
||||
</button>
|
||||
<@shiro.hasPermission name="PATROLRECORDEXPORT">
|
||||
<button type="button" class="am-btn am-btn-default am-btn-sm am-text-secondary"
|
||||
id="submit-btn-export" onclick="sub_function('export')">导出
|
||||
</button>
|
||||
</@shiro.hasPermission>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</form>
|
||||
</div>
|
||||
<div class="am-btn-toolbar" style="padding-left:.5rem;">
|
||||
<div class="am-btn-group am-btn-group-xs">
|
||||
<@shiro.hasPermission name="PATROLRECORDDELETE">
|
||||
<button type="button" id="deleteButton" disabled="disabled" class="am-btn am-btn-default"
|
||||
onclick="deleteAll('${base}/patrolRecord/delete')"><span
|
||||
class="am-icon-trash-o"></span> 删除
|
||||
</button>
|
||||
</@shiro.hasPermission>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="am-g">
|
||||
<div class="am-u-sm-12">
|
||||
<div class="am-scrollable-horizontal">
|
||||
<table class="am-table am-table-striped am-table-hover table-main">
|
||||
<thead>
|
||||
<tr class="am-text-nowrap">
|
||||
<th class="table-check"><input type="checkbox" id="allCheck"></th>
|
||||
<th class="table-title">网格员姓名</th>
|
||||
<th class="table-title">所属区域</th>
|
||||
<th class="table-title">所属单位</th>
|
||||
<th class="table-title">工地名称</th>
|
||||
<th class="table-title">巡查记录</th>
|
||||
<th class="table-title">上报时间</th>
|
||||
<th class="table-title">操作</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<#if (pager.list)?exists && (pager.list?size>0)>
|
||||
<#list pager.list as list>
|
||||
<tr>
|
||||
<td><input type="checkbox" name="ids" value="${list.id}"/></td>
|
||||
<td>${list.managerName!}</td>
|
||||
<td>${list.regionName!}</td>
|
||||
<td>${list.company!}</td>
|
||||
<td>${list.constructionSiteName!}</td>
|
||||
<td>${list.content!}</td>
|
||||
<td><#if list.recordTime??>${list.recordTime?datetime}</#if></td>
|
||||
<td>
|
||||
<div id="edit-div" class="am-btn-toolbar switch-button">
|
||||
<div class="am-btn-group am-btn-group-xs">
|
||||
<@shiro.hasPermission name="ALARMTYPE_EDIT">
|
||||
<button type="button"
|
||||
class="am-btn am-btn-default am-btn-xs am-text-secondary"
|
||||
onclick="location.href='${base}/patrolRecord/detail?id=${list.id?c}'">
|
||||
<span class="am-icon-pencil-square-o"></span>查看详情
|
||||
</button>
|
||||
</@shiro.hasPermission>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</#list>
|
||||
</#if>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<div class="am-cf">
|
||||
<!-- 分页 -->
|
||||
<#if (pager.list)?exists && (pager.list?size>0) >
|
||||
<div class="am-fr">
|
||||
<#include "../common/order_list_pager.ftl">
|
||||
</div>
|
||||
<#else>
|
||||
<div class="am-kai" align="center">
|
||||
<h3>没有找到任何记录!</h3>
|
||||
</div>
|
||||
</#if>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</@defaultLayout.layout>
|
||||
|
||||
<script src="../assets/js/amazeui.switch.js"></script>
|
||||
<script type="text/javascript">
|
||||
|
||||
var sub_function = function (type) {
|
||||
$("#pageNumber").val(1);
|
||||
initSearch();
|
||||
if (type == 'export') {
|
||||
$("#listForm").attr("action", "${base}/patrolRecord/export");
|
||||
} else {
|
||||
$("#listForm").attr("action", "${base}/patrolRecord/list");
|
||||
var index = layer.load(1, {
|
||||
shade: [0.1, '#fff'] //0.1透明度的白色背景
|
||||
});
|
||||
}
|
||||
$("#listForm").submit();
|
||||
};
|
||||
|
||||
function initSearch() {
|
||||
var keywordsObj = {};
|
||||
if ($("#managerName").val())
|
||||
keywordsObj.managerName = $("#managerName").val();
|
||||
if ($("#startTime").val())
|
||||
keywordsObj.startTime = $("#startTime").val();
|
||||
if ($("#endTime").val())
|
||||
keywordsObj.endTime = $("#endTime").val();
|
||||
if ($("#regionId").val())
|
||||
keywordsObj.regionId = $("#regionId").val();
|
||||
var keywords = "";
|
||||
if (!$.isEmptyObject(keywordsObj)) {
|
||||
keywords = JSON.stringify(keywordsObj);
|
||||
}
|
||||
console.log("keywords = " + keywords);
|
||||
$("#keywords").val(keywords);
|
||||
}
|
||||
|
||||
$(function () {
|
||||
$("body").on('click', '.list-item', function () {
|
||||
$(".list-item").removeClass("tr-selected");
|
||||
$(this).addClass('tr-selected');
|
||||
});
|
||||
$("#allCheck").click(function () {
|
||||
$('input[name="ids"]').prop("checked", this.checked);
|
||||
$("#deleteButton").prop("disabled", $("input[name='ids']:checked").length == 0 ? true : false);
|
||||
});
|
||||
var $citySubBox = $("input[name='ids']");
|
||||
$citySubBox.click(function () {
|
||||
$("#allCheckCity").prop("checked", $citySubBox.length == $("input[name='ids']:checked").length ? true : false);
|
||||
$("#deleteButton").prop("disabled", $("input[name='ids']:checked").length == 0 ? true : false);
|
||||
});
|
||||
|
||||
var keywordsObj = {};
|
||||
$("#submit-btn").on("click", function () {
|
||||
$("#pageNumber").val(1);
|
||||
if ($("#managerName").val())
|
||||
keywordsObj.managerName = $("#managerName").val();
|
||||
if ($("#startTime").val())
|
||||
keywordsObj.startTime = $("#startTime").val();
|
||||
if ($("#endTime").val())
|
||||
keywordsObj.endTime = $("#endTime").val();
|
||||
if ($("#regionId").val())
|
||||
keywordsObj.regionId = $("#regionId").val();
|
||||
var startTime = $("#startTime").val();
|
||||
var endTime = $("#endTime").val();
|
||||
if(startTime > endTime){
|
||||
window.confirm('开始日期应早于结束日期');
|
||||
}
|
||||
var keywords = "";
|
||||
if (!$.isEmptyObject(keywordsObj)) {
|
||||
keywords = JSON.stringify(keywordsObj);
|
||||
}
|
||||
console.log("keywords = " + keywords);
|
||||
$("#keywords").val(keywords);
|
||||
$("#listForm").submit();
|
||||
});
|
||||
});
|
||||
|
||||
// 删除
|
||||
var deleteAll = function (url) {
|
||||
var $deleteButton = $("#deleteButton");// 删除按钮
|
||||
var ids = "";
|
||||
$("input[name='ids']:checked").each(function () {
|
||||
ids += $(this).val() + "#%#";
|
||||
});
|
||||
var params = {ids: ids};
|
||||
if (window.confirm('确定要删除吗?')) {
|
||||
$.ajax({
|
||||
url: url,
|
||||
data: params,
|
||||
dataType: "json",
|
||||
async: false,
|
||||
beforeSend: function (data) {
|
||||
$deleteButton.prop("disabled", true)
|
||||
},
|
||||
success: function (data) {
|
||||
$deleteButton.prop("disabled", false)
|
||||
if (data.status == 0) {
|
||||
alert("删除成功");
|
||||
window.location.href = window.location.href;
|
||||
} else if (data.status == 1) {
|
||||
alert("删除失败");
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
</script>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
@ -1,129 +0,0 @@
|
|||
<#assign base=request.contextPath />
|
||||
<#import "../common/defaultLayout.ftl" as defaultLayout>
|
||||
<style type="text/css">
|
||||
ul {
|
||||
list-style: none;
|
||||
display: inline;
|
||||
}
|
||||
</style>
|
||||
<@defaultLayout.layout>
|
||||
<link rel="stylesheet" href="${base}/assets/css/amazeui.switch.css"/>
|
||||
<script type="text/javascript">
|
||||
var base = '${base}';
|
||||
</script>
|
||||
<div class="admin-content">
|
||||
<div class="admin-content-body">
|
||||
<div class="am-cf am-padding">
|
||||
<div class="am-fl am-cf"><strong class="am-text-primary am-text-lg">后台风险配置</strong>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<form method="post" class="am-form" id="tmpForm"
|
||||
action="${base}/push/config/save">
|
||||
<input name="pushConfigId" id="pushConfigId" type="hidden" value="${pushConfigId!}"/>
|
||||
<div class="am-tabs am-margin" data-am-tabs>
|
||||
<ul class="am-tabs-nav am-nav am-nav-tabs">
|
||||
<li class="am-active"><a href="#tab1">新增/编辑</a></li>
|
||||
</ul>
|
||||
<div class="am-tabs-bd">
|
||||
<div class="am-tab-panel am-fade am-in am-active" id="tab1">
|
||||
<div class="am-g am-form-group am-margin-top" style="display: flex;">
|
||||
<div class="am-u-sm-4 am-u-md-2 am-text-right">
|
||||
<span style="color: red;">*</span>风险等级</div>
|
||||
<div class="am-u-sm-6 am-u-md-6">
|
||||
<input class="js-ajax-validate" name="riskGrade" value="${pushConfig.riskGrade!}"
|
||||
type="text" required/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="am-g am-form-group am-margin-top" style="display: flex;">
|
||||
<div class="am-u-sm-4 am-u-md-2 am-text-right">
|
||||
<span style="color: red;">*</span>等级标识</div>
|
||||
<div class="am-u-sm-6 am-u-md-6">
|
||||
<input class="js-ajax-validate" name="riskGradeValue" value="${pushConfig.riskGradeValue!}"
|
||||
type="text" required/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="am-g am-form-group am-margin-top" style="display: flex;">
|
||||
<div class="am-u-sm-4 am-u-md-2 am-text-right">
|
||||
<span style="color: red;">*</span>推送角色</div>
|
||||
<div class="am-u-sm-6 am-u-md-6">
|
||||
<#list roleList as wt>
|
||||
<ul>
|
||||
<li>
|
||||
<#if wt.roleName??>
|
||||
<input
|
||||
type="checkbox" <#if pushRole??&&pushRole?seq_contains(wt.roleName)> checked="checked"</#if>
|
||||
name="pushRuleName" id="pushRuleName"
|
||||
value="${wt.roleName}">
|
||||
|
||||
</#if>
|
||||
<span>${wt.roleName}</span>
|
||||
</li>
|
||||
</ul>
|
||||
</#list>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="am-g am-form-group am-margin-top" style="display: flex;">
|
||||
<div class="am-u-sm-4 am-u-md-2 am-text-right">备注</div>
|
||||
<div class="am-u-sm-6 am-u-md-6">
|
||||
<input class="js-ajax-validate" name="remark" value="${pushConfig.remark!}"
|
||||
type="text"/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="am-g am-form-group am-margin-top">
|
||||
<div class="am-u-sm-4 am-u-md-2 am-text-right">启用/禁用</div>
|
||||
|
||||
<div class="am-u-sm-12 am-u-md-4 switch-button" style="height: 25px;">
|
||||
<input id="switch" name="switch" type="checkbox" data-size='xs'
|
||||
data-am-switch data-off-text="禁用" data-on-text="启用"
|
||||
<#if pushConfig.isEnable==1 >checked</#if>
|
||||
/>
|
||||
<input type="hidden" class="am-input-sm" name="isEnable" id="isEnable"
|
||||
value="${pushConfig.isEnable!1}"/>
|
||||
</div>
|
||||
|
||||
<div class="am-hide-sm-only am-u-md-1" style="color: red;"></div>
|
||||
<div class="am-u-sm-2 am-u-md-5 input-msg"></div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!--选项卡(tabs)end-->
|
||||
<div class="am-margin">
|
||||
<button type="submit" id="submitBtn" class="am-btn am-btn-primary am-btn-xs">提交保存</button>
|
||||
<button type="button" class="am-btn am-btn-warning am-btn-xs"
|
||||
onclick="javascript:history.go(-1);">返回上一级
|
||||
</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</@defaultLayout.layout>
|
||||
<script src="${base}/common/jQuery-File-Upload/js/vendor/jquery.ui.widget.js"></script>
|
||||
<script type="text/javascript" src="${base}/common/jQuery-File-Upload/js/jquery.iframe-transport.js"></script>
|
||||
<script type="text/javascript" src="${base}/common/jQuery-File-Upload/js/jquery.fileupload.js"></script>
|
||||
<script src="${base}/common/jQuery-File-Upload/js/jquery.fileupload-process.js"></script>
|
||||
<script src="${base}/common/jQuery-File-Upload/js/jquery.fileupload-validate.js"></script>
|
||||
<script src="${base}/assets/js/amazeui.switch.js"></script>
|
||||
|
||||
<script>
|
||||
var $mycheckbox = $('.switch-button');
|
||||
$mycheckbox.each(function () {
|
||||
$("#switch").on({
|
||||
'switchChange.bootstrapSwitch': function (event, state) {
|
||||
if (state.toString() == "true") {
|
||||
$("#isEnable").val("1");
|
||||
} else {
|
||||
$("#isEnable").val("0");
|
||||
}
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
</script>
|
|
@ -1,259 +0,0 @@
|
|||
<#assign base=request.contextPath />
|
||||
<#import "../common/defaultLayout.ftl" as defaultLayout>
|
||||
<@defaultLayout.layout>
|
||||
<link rel="stylesheet" href="${base}/assets/css/amazeui.switch.css"/>
|
||||
<div class="admin-content">
|
||||
<div class="am-cf am-padding" style="padding:1rem 1.6rem 1.6rem 1rem;margin:0px;">
|
||||
<!-- padding:1px 2px 3px 4px;上、右、下,和左 -->
|
||||
<div class="am-fl am-cf"><strong class="am-text-primary am-text-lg">系统管理</strong> /
|
||||
<small>后台风险配置</small>
|
||||
</div>
|
||||
</div>
|
||||
<div class="am-g">
|
||||
<div class="am-u-sm-12">
|
||||
<form class="am-form" id="listForm" action="${base}/push/config/list" method="POST">
|
||||
<input type="hidden" id="keywords" name="keywords" value='${keywords!""}'/>
|
||||
<table class="am-table am-table-bordered am-table-radius table-main" style="padding:0;">
|
||||
<tbody>
|
||||
<tr>
|
||||
<th class="am-text-middle">启用状态</th>
|
||||
<td>
|
||||
<div class="am-u-sm-10">
|
||||
<select data-am-selected="{btnWidth: '40%', btnSize: 'sm'" id="isEnable">
|
||||
<option value="-1">全部</option>
|
||||
<option value="1" <#if isEnable! == "1">selected</#if> >启用</option>
|
||||
<option value="0" <#if isEnable! == "0">selected</#if> >禁用</option>
|
||||
</select>
|
||||
</div>
|
||||
</td>
|
||||
<th class="am-text-middle">创建时间</th>
|
||||
<td>
|
||||
<div class="am-u-sm-10">
|
||||
<div class="am-form am-form-inline">
|
||||
<div class="am-form-group am-form-icon">
|
||||
<i class="am-icon-calendar"></i>
|
||||
<input type="text" class="am-form-field am-input-sm" id="startTime"
|
||||
value="${startTime!}" placeholder="开始日期" data-am-datepicker>
|
||||
</div>
|
||||
<div class="am-form-group">至</div>
|
||||
<div class="am-form-group am-form-icon">
|
||||
<i class="am-icon-calendar"></i>
|
||||
<input type="text" class="am-form-field am-input-sm" id="endTime"
|
||||
value="${endTime!}"
|
||||
placeholder="结束日期" data-am-datepicker>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="4">
|
||||
<div align='right'>
|
||||
<button type="button" class="am-btn am-btn-default am-btn-sm am-text-secondary"
|
||||
id="submit-btn" onclick="sub_function('query')">搜索
|
||||
</button>
|
||||
<@shiro.hasPermission name="PUSHCONFIG_EXPORT">
|
||||
<button type="button" class="am-btn am-btn-default am-btn-sm am-text-secondary"
|
||||
id="submit-btn-export" onclick="sub_function('export')">导出
|
||||
</button>
|
||||
</@shiro.hasPermission>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</form>
|
||||
</div>
|
||||
<div class="am-btn-toolbar" style="padding-left:.5rem;">
|
||||
<div class="am-btn-group am-btn-group-xs">
|
||||
<@shiro.hasPermission name="PUSHCONFIG_ADD">
|
||||
<button type="button" class="am-btn am-btn-default"
|
||||
onclick="location.href='${base}/push/config/add'">
|
||||
<span class="am-icon-plus"></span> 新增
|
||||
</button>
|
||||
</@shiro.hasPermission>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="am-g">
|
||||
<div class="am-u-sm-12">
|
||||
<div class="am-scrollable-horizontal">
|
||||
<table class="am-table am-table-striped am-table-hover table-main">
|
||||
<thead>
|
||||
<tr class="am-text-nowrap">
|
||||
<th class="table-title">风险等级</th>
|
||||
<th class="table-title">推送角色</th>
|
||||
<th class="table-title">等级标识</th>
|
||||
<th class="table-title">备注</th>
|
||||
<th class="table-title">创建时间</th>
|
||||
<th class="table-title">操作</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<#if (pager.list)?exists && (pager.list?size>0)>
|
||||
<#list pager.list as list>
|
||||
<tr>
|
||||
<td>${list.riskGrade!}</td>
|
||||
<td>${list.pushRuleName!}</td>
|
||||
<td>${list.riskGradeValue!}</td>
|
||||
<td>${list.remark!}</td>
|
||||
<td><#if list.createTime??>${list.createTime?datetime}</#if></td>
|
||||
<td>
|
||||
<div id="edit-div" class="am-btn-toolbar switch-button">
|
||||
<div class="am-btn-group am-btn-group-xs">
|
||||
<@shiro.hasPermission name="PUSHCONFIG_EDIT">
|
||||
<button type="button"
|
||||
class="am-btn am-btn-default am-btn-xs am-text-secondary"
|
||||
onclick="location.href='${base}/push/config/edit?id=${list.id?c}'">
|
||||
<span class="am-icon-pencil-square-o"></span>编辑
|
||||
</button>
|
||||
</@shiro.hasPermission>
|
||||
<input id="${list.id}" type="checkbox" data-size='xs'
|
||||
data-am-switch data-off-text="已禁用" data-on-text="已启用"
|
||||
<#if list.isEnable==1 >checked</#if>
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</#list>
|
||||
</#if>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<div class="am-cf">
|
||||
<!-- 分页 -->
|
||||
<#if (pager.list)?exists && (pager.list?size>0) >
|
||||
<div class="am-fr">
|
||||
<#include "../common/order_list_pager.ftl">
|
||||
</div>
|
||||
<#else>
|
||||
<div class="am-kai" align="center">
|
||||
<h3>没有找到任何记录!</h3>
|
||||
</div>
|
||||
</#if>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</@defaultLayout.layout>
|
||||
|
||||
<script src="${base}/assets/js/amazeui.switch.js"></script>
|
||||
<script type="text/javascript">
|
||||
|
||||
var sub_function = function (type) {
|
||||
$("#pageNumber").val(1);
|
||||
initSearch();
|
||||
if (type == 'export') {
|
||||
$("#listForm").attr("action", "${base}/push/config/export");
|
||||
} else {
|
||||
$("#listForm").attr("action", "${base}/push/config/list");
|
||||
var index = layer.load(1, {
|
||||
shade: [0.1, '#fff'] //0.1透明度的白色背景
|
||||
});
|
||||
}
|
||||
$("#listForm").submit();
|
||||
};
|
||||
|
||||
function initSearch() {
|
||||
var keywordsObj = {};
|
||||
if ($("#startTime").val())
|
||||
keywordsObj.startTime = $("#startTime").val();
|
||||
if ($("#endTime").val())
|
||||
keywordsObj.endTime = $("#endTime").val();
|
||||
if ($("#isEnable").val())
|
||||
keywordsObj.isEnable = $("#isEnable").val();
|
||||
var keywords = "";
|
||||
if (!$.isEmptyObject(keywordsObj)) {
|
||||
keywords = JSON.stringify(keywordsObj);
|
||||
}
|
||||
console.log("keywords = " + keywords);
|
||||
$("#keywords").val(keywords);
|
||||
}
|
||||
|
||||
$(function () {
|
||||
//为每个启用或禁用按钮增加事件
|
||||
var $mycheckbox = $('.switch-button').find("input[type='checkbox']");
|
||||
$mycheckbox.each(function () {
|
||||
var myid = $(this).attr("id");
|
||||
var prop = $(this).attr("prop");
|
||||
$(this).on({
|
||||
'switchChange.bootstrapSwitch': function (event, state) {
|
||||
toggle(myid, state ? 1 : 0);
|
||||
}
|
||||
});
|
||||
|
||||
});
|
||||
});
|
||||
|
||||
//启用或者禁用
|
||||
var toggle = function (id, status) {
|
||||
$.ajax({
|
||||
url: "${base}/push/config/enableOrDisable",
|
||||
data: {id: id, status: status},
|
||||
type: "post",
|
||||
dataType: "json",
|
||||
async: false,
|
||||
success: function (data) {
|
||||
parent.layer.msg(data.msg);
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
$(function () {
|
||||
$("body").on('click', '.list-item', function () {
|
||||
$(".list-item").removeClass("tr-selected");
|
||||
$(this).addClass('tr-selected');
|
||||
});
|
||||
$("#allCheck").click(function () {
|
||||
$('input[name="ids"]').prop("checked", this.checked);
|
||||
$("#deleteButton").prop("disabled", $("input[name='ids']:checked").length == 0 ? true : false);
|
||||
});
|
||||
var $citySubBox = $("input[name='ids']");
|
||||
$citySubBox.click(function () {
|
||||
$("#allCheckCity").prop("checked", $citySubBox.length == $("input[name='ids']:checked").length ? true : false);
|
||||
$("#deleteButton").prop("disabled", $("input[name='ids']:checked").length == 0 ? true : false);
|
||||
});
|
||||
|
||||
var keywordsObj = {};
|
||||
$("#submit-btn").on("click", function () {
|
||||
$("#pageNumber").val(1);
|
||||
if ($("#startTime").val())
|
||||
keywordsObj.startTime = $("#startTime").val();
|
||||
if ($("#endTime").val())
|
||||
keywordsObj.endTime = $("#endTime").val();
|
||||
if ($("#isEnable").val())
|
||||
keywordsObj.isEnable = $("#isEnable").val();
|
||||
var startTime = $("#startTime").val();
|
||||
var endTime = $("#endTime").val();
|
||||
if(startTime > endTime){
|
||||
window.confirm('开始日期应早于结束日期');
|
||||
}
|
||||
var keywords = "";
|
||||
if (!$.isEmptyObject(keywordsObj)) {
|
||||
keywords = JSON.stringify(keywordsObj);
|
||||
}
|
||||
console.log("keywords = " + keywords);
|
||||
$("#keywords").val(keywords);
|
||||
$("#listForm").submit();
|
||||
});
|
||||
});
|
||||
|
||||
</script>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
@ -1,53 +0,0 @@
|
|||
<#assign base=request.contextPath />
|
||||
<#import "../common/defaultLayout.ftl" as defaultLayout>
|
||||
<@defaultLayout.layout>
|
||||
<script type="text/javascript">
|
||||
var base = '${base}';
|
||||
</script>
|
||||
<div class="admin-content">
|
||||
<div class="admin-content-body">
|
||||
<div class="am-cf am-padding">
|
||||
<div class="am-fl am-cf"><strong class="am-text-primary am-text-lg">系统管理</strong>/
|
||||
<small>推送规则配置</small>
|
||||
</div>
|
||||
</div>
|
||||
<form method="post" class="am-form" id="tmpForm"
|
||||
action="${base}/push/rule/save">
|
||||
<div class="am-tabs am-margin" data-am-tabs>
|
||||
<div class="am-tabs-bd">
|
||||
<div class="am-tab-panel am-fade am-in am-active" id="tab1">
|
||||
<div class="am-g am-form-group am-margin-top" style="display: flex;">
|
||||
<div class="am-u-sm-4 am-u-md-2 am-text-right">推送规则</div>
|
||||
<div class="am-u-sm-6 am-u-md-6">
|
||||
<select data-am-selected="{btnWidth: '40%', btnSize: 'sm'" id="rule" name="rule">
|
||||
<option value="1440" <#if pushRule.rule! ==1440>selected</#if> >24小时</option>
|
||||
<option value="720" <#if pushRule.rule! ==720>selected</#if> >12小时</option>
|
||||
<option value="360" <#if pushRule.rule! ==360>selected</#if> >6小时</option>
|
||||
<option value="180" <#if pushRule.rule! ==180>selected</#if> >3小时</option>
|
||||
<option value="120" <#if pushRule.rule! ==120>selected</#if> >2小时</option>
|
||||
<option value="60" <#if pushRule.rule! ==60>selected</#if> >1小时</option>
|
||||
<option value="30" <#if pushRule.rule! ==30>selected</#if> >30分钟</option>
|
||||
<option value="20" <#if pushRule.rule! ==20>selected</#if> >20分钟</option>
|
||||
<option value="10" <#if pushRule.rule! ==10>selected</#if> >10分钟</option>
|
||||
<option value="5" <#if pushRule.rule! ==5>selected</#if> >5分钟</option>
|
||||
<#--<option value="2" <#if pushRule.rule! ==2>selected</#if> >2分钟</option>
|
||||
<option value="1" <#if pushRule.rule! ==1>selected</#if> >1分钟</option>-->
|
||||
</select>
|
||||
<div>
|
||||
例如:规则为24小时,则针对摄像头的告警,24小时内不再重复推送
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="am-margin">
|
||||
<button type="submit" id="submitBtn" class="am-btn am-btn-primary am-btn-xs">提交保存</button>
|
||||
<button type="button" class="am-btn am-btn-warning am-btn-xs"
|
||||
onclick="javascript:history.go(-1);">返回上一级
|
||||
</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</@defaultLayout.layout>
|
|
@ -1,72 +0,0 @@
|
|||
<#assign base=request.contextPath />
|
||||
<#import "../common/defaultLayout.ftl" as defaultLayout>
|
||||
<@defaultLayout.layout>
|
||||
<link rel="stylesheet" href="../assets/css/amazeui.switch.css"/>
|
||||
<script type="text/javascript">
|
||||
var base = '${base}';
|
||||
</script>
|
||||
<div class="admin-content">
|
||||
<div class="admin-content-body">
|
||||
<div class="am-cf am-padding">
|
||||
<div class="am-fl am-cf"><strong class="am-text-primary am-text-lg">系统管理</strong> /
|
||||
<small>定时任务开关</small>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<form method="post" class="am-form" id="tmpForm" action="${base}/scheduled/save">
|
||||
<div class="am-tabs am-margin" data-am-tabs>
|
||||
<div class="am-tabs-bd">
|
||||
<div class="am-tab-panel am-fade am-in am-active" id="tab1">
|
||||
<div class="am-g am-form-group am-margin-top">
|
||||
<div class="am-u-sm-4 am-u-md-2 am-text-right">启用/禁用</div>
|
||||
<input type="hidden" class="am-input-sm" name="id" id="id"
|
||||
value="${scheduledOnOff.id}"/>
|
||||
<div class="am-u-sm-12 am-u-md-4 switch-button" style="height: 25px;">
|
||||
<input id="switch" name="switch" type="checkbox" data-size='xs'
|
||||
data-am-switch data-off-text="禁用" data-on-text="启用"
|
||||
<#if scheduledOnOff.onOrOff==1 >checked</#if>
|
||||
/>
|
||||
<input type="hidden" class="am-input-sm" name="onOrOff" id="onOrOff"
|
||||
value="${scheduledOnOff.onOrOff!1}"/>
|
||||
</div>
|
||||
<div class="am-hide-sm-only am-u-md-1" style="color: red;"></div>
|
||||
<div class="am-u-sm-2 am-u-md-5 input-msg"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!--选项卡(tabs)end-->
|
||||
<div class="am-margin">
|
||||
<button type="submit" id="submitBtn" class="am-btn am-btn-primary am-btn-xs">提交保存</button>
|
||||
<button type="button" class="am-btn am-btn-warning am-btn-xs"
|
||||
onclick="javascript:history.go(-1);">返回上一级
|
||||
</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</@defaultLayout.layout>
|
||||
<script src="${base}/common/jQuery-File-Upload/js/vendor/jquery.ui.widget.js"></script>
|
||||
<script type="text/javascript" src="${base}/common/jQuery-File-Upload/js/jquery.iframe-transport.js"></script>
|
||||
<script type="text/javascript" src="${base}/common/jQuery-File-Upload/js/jquery.fileupload.js"></script>
|
||||
<script src="${base}/common/jQuery-File-Upload/js/jquery.fileupload-process.js"></script>
|
||||
<script src="${base}/common/jQuery-File-Upload/js/jquery.fileupload-validate.js"></script>
|
||||
<script src="../assets/js/amazeui.switch.js"></script>
|
||||
|
||||
<script>
|
||||
var $mycheckbox = $('.switch-button');
|
||||
$mycheckbox.each(function () {
|
||||
$("#switch").on({
|
||||
'switchChange.bootstrapSwitch': function (event, state) {
|
||||
if (state.toString() == "true") {
|
||||
$("#onOrOff").val("1");
|
||||
} else {
|
||||
$("#onOrOff").val("0");
|
||||
}
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
</script>
|
|
@ -1,199 +0,0 @@
|
|||
<#assign base=request.contextPath />
|
||||
<#import "../common/defaultLayout.ftl" as defaultLayout>
|
||||
<@defaultLayout.layout>
|
||||
<link rel="stylesheet" href="../assets/css/amazeui.switch.css"/>
|
||||
<div class="admin-content">
|
||||
<div class="am-cf am-padding" style="padding:1rem 1.6rem 1.6rem 1rem;margin:0px;">
|
||||
<!-- padding:1px 2px 3px 4px;上、右、下,和左 -->
|
||||
<div class="am-fl am-cf"><strong class="am-text-primary am-text-lg">统计报表</strong> /
|
||||
<small>网格员轨迹报表</small>
|
||||
</div>
|
||||
</div>
|
||||
<div class="am-g">
|
||||
<div class="am-u-sm-12">
|
||||
<form class="am-form" id="listForm" action="${base}/trajectory/list" method="POST">
|
||||
<input type="hidden" id="keywords" name="keywords" value='${keywords!""}'/>
|
||||
<table class="am-table am-table-bordered am-table-radius table-main" style="padding:0;">
|
||||
<tbody>
|
||||
<tr>
|
||||
<th class="am-text-middle">网格员姓名</th>
|
||||
<td>
|
||||
<div class="am-u-sm-10">
|
||||
<input type="text" id="managerName" class="am-form-field am-input-sm"
|
||||
value="${managerName!}"/>
|
||||
</div>
|
||||
</td>
|
||||
<th class="am-text-middle">上报时间</th>
|
||||
<td>
|
||||
<div class="am-u-sm-10">
|
||||
<div class="am-form am-form-inline">
|
||||
<div class="am-form-group am-form-icon">
|
||||
<i class="am-icon-calendar"></i>
|
||||
<input type="text" class="am-form-field am-input-sm" id="startTime"
|
||||
value="${startTime!}" placeholder="开始日期" data-am-datepicker>
|
||||
</div>
|
||||
<div class="am-form-group">至</div>
|
||||
<div class="am-form-group am-form-icon">
|
||||
<i class="am-icon-calendar"></i>
|
||||
<input type="text" class="am-form-field am-input-sm" id="endTime"
|
||||
value="${endTime!}"
|
||||
placeholder="结束日期" data-am-datepicker>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="4">
|
||||
<div align='right'>
|
||||
<button type="button" class="am-btn am-btn-default am-btn-sm am-text-secondary"
|
||||
id="submit-btn" onclick="sub_function('query')">搜索
|
||||
</button>
|
||||
<@shiro.hasPermission name="TRAJECTORYEXPORT">
|
||||
<button type="button" class="am-btn am-btn-default am-btn-sm am-text-secondary"
|
||||
id="submit-btn-export" onclick="sub_function('export')">导出
|
||||
</button>
|
||||
</@shiro.hasPermission>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
<div class="am-g">
|
||||
<div class="am-u-sm-12">
|
||||
<div class="am-scrollable-horizontal">
|
||||
<table class="am-table am-table-striped am-table-hover table-main">
|
||||
<thead>
|
||||
<tr class="am-text-nowrap">
|
||||
<th class="table-title">网格员姓名</th>
|
||||
<th class="table-title">经纬度</th>
|
||||
<th class="table-title">位置名称</th>
|
||||
<th class="table-title">上报时间</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<#if (pager.list)?exists && (pager.list?size>0)>
|
||||
<#list pager.list as list>
|
||||
<tr>
|
||||
<td>${list.managerName!}</td>
|
||||
<td>${list.location!}</td>
|
||||
<td>${list.locationName!}</td>
|
||||
<td><#if list.reportTime??>${list.reportTime?datetime}</#if></td>
|
||||
</tr>
|
||||
</#list>
|
||||
</#if>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<div class="am-cf">
|
||||
<!-- 分页 -->
|
||||
<#if (pager.list)?exists && (pager.list?size>0) >
|
||||
<div class="am-fr">
|
||||
<#include "../common/order_list_pager.ftl">
|
||||
</div>
|
||||
<#else>
|
||||
<div class="am-kai" align="center">
|
||||
<h3>没有找到任何记录!</h3>
|
||||
</div>
|
||||
</#if>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</@defaultLayout.layout>
|
||||
|
||||
<script src="../assets/js/amazeui.switch.js"></script>
|
||||
<script type="text/javascript">
|
||||
|
||||
var sub_function = function (type) {
|
||||
$("#pageNumber").val(1);
|
||||
initSearch();
|
||||
if (type == 'export') {
|
||||
$("#listForm").attr("action", "${base}/trajectory/export");
|
||||
} else {
|
||||
$("#listForm").attr("action", "${base}/trajectory/list");
|
||||
var index = layer.load(1, {
|
||||
shade: [0.1, '#fff'] //0.1透明度的白色背景
|
||||
});
|
||||
}
|
||||
$("#listForm").submit();
|
||||
};
|
||||
|
||||
function initSearch() {
|
||||
var keywordsObj = {};
|
||||
if ($("#managerName").val())
|
||||
keywordsObj.managerName = $("#managerName").val();
|
||||
if ($("#startTime").val())
|
||||
keywordsObj.startTime = $("#startTime").val();
|
||||
if ($("#endTime").val())
|
||||
keywordsObj.endTime = $("#endTime").val();
|
||||
var keywords = "";
|
||||
if (!$.isEmptyObject(keywordsObj)) {
|
||||
keywords = JSON.stringify(keywordsObj);
|
||||
}
|
||||
console.log("keywords = " + keywords);
|
||||
$("#keywords").val(keywords);
|
||||
}
|
||||
|
||||
$(function () {
|
||||
$("body").on('click', '.list-item', function () {
|
||||
$(".list-item").removeClass("tr-selected");
|
||||
$(this).addClass('tr-selected');
|
||||
});
|
||||
$("#allCheck").click(function () {
|
||||
$('input[name="ids"]').prop("checked", this.checked);
|
||||
$("#deleteButton").prop("disabled", $("input[name='ids']:checked").length == 0 ? true : false);
|
||||
});
|
||||
var $citySubBox = $("input[name='ids']");
|
||||
$citySubBox.click(function () {
|
||||
$("#allCheckCity").prop("checked", $citySubBox.length == $("input[name='ids']:checked").length ? true : false);
|
||||
$("#deleteButton").prop("disabled", $("input[name='ids']:checked").length == 0 ? true : false);
|
||||
});
|
||||
|
||||
var keywordsObj = {};
|
||||
$("#submit-btn").on("click", function () {
|
||||
$("#pageNumber").val(1);
|
||||
if ($("#managerName").val())
|
||||
keywordsObj.managerName = $("#managerName").val();
|
||||
if ($("#startTime").val())
|
||||
keywordsObj.startTime = $("#startTime").val();
|
||||
if ($("#endTime").val())
|
||||
keywordsObj.endTime = $("#endTime").val();
|
||||
var startTime = $("#startTime").val();
|
||||
var endTime = $("#endTime").val();
|
||||
if(startTime > endTime){
|
||||
window.confirm('开始日期应早于结束日期');
|
||||
}
|
||||
var keywords = "";
|
||||
if (!$.isEmptyObject(keywordsObj)) {
|
||||
keywords = JSON.stringify(keywordsObj);
|
||||
}
|
||||
console.log("keywords = " + keywords);
|
||||
$("#keywords").val(keywords);
|
||||
$("#listForm").submit();
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
</script>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue