删除无用的

master
xxssyyyyssxx 2021-10-29 18:15:13 +08:00
parent 6fbad28ca4
commit 4052497f21
37 changed files with 0 additions and 7621 deletions

View File

@ -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>
<!--选项卡tabsend-->
<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>

View File

@ -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>

View File

@ -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>

View File

@ -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>

View File

@ -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>

View File

@ -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>
<!--选项卡tabsend-->
<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>

View File

@ -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">
<!-- 分页 &ndash;&gt;
<#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>

View File

@ -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>

View File

@ -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>

View File

@ -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="请输入类型ICON20字符以内"
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>
<!--选项卡tabsend-->
<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>

View File

@ -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>

View File

@ -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">
<!--选项卡tabsbegin-->
<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>
<!--选项卡tabsend-->
<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>

View File

@ -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>

View File

@ -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">
<!--选项卡tabsbegin-->
<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">&nbsp;</i>
<#else>
<i class="am-icon-folder-open">&nbsp;</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>
<!--选项卡tabsend-->
<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 >
&nbsp;&nbsp;
<#elseif node.level==3 >
&nbsp;&nbsp;&nbsp;&nbsp;
<#elseif node.level==4 >
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<#else>
</#if>
<#if node.hasLeafNode >
<i class="am-icon-file-text">&nbsp;</i>
<#else>
<i class="am-icon-folder-open">&nbsp;</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>&nbsp;
</#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>

View File

@ -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>
<!--选项卡tabsend-->
<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>

View File

@ -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>

View File

@ -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>

View File

@ -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>

View File

@ -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>
<!--选项卡tabsend-->
<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>

View File

@ -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>

View File

@ -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" >用户名称:&nbsp;&nbsp;<span style="color:#5eb95e">${Session["realsName"]!""}</span></td>
<td class="am-primary">上次登录时间:&nbsp;&nbsp;<span style="color:#5eb95e">${Session["lastLoginTime"]!""}</span></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<script type="text/javascript">
$(function(){
})
</script>
</@defaultLayout.layout>

View File

@ -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>

View File

@ -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}">
&lt;#&ndash;播放器&ndash;&gt;
<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>

View File

@ -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}">
&lt;#&ndash;播放器&ndash;&gt;
<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>

View File

@ -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>

View File

@ -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">
<!--选项卡tabsbegin-->
<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>
<!--选项卡tabsend-->
<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>

View File

@ -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>

View File

@ -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>

View File

@ -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">
<!--选项卡tabsbegin-->
<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>
<!--选项卡tabsend-->
<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>

View File

@ -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>

View File

@ -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>

View File

@ -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>

View File

@ -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>
<!--选项卡tabsend-->
<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>

View File

@ -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>

View File

@ -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>

View File

@ -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>
<!--选项卡tabsend-->
<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>

View File

@ -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>