Merge remote-tracking branch 'origin/master'

This commit is contained in:
fl 2025-04-01 19:09:17 +08:00
commit 1f468bfb95
13 changed files with 495 additions and 43 deletions

View File

@ -122,15 +122,27 @@ body {
background-color: #fff;
}
.img-info2 {
width: 19%;
height: 150px;
margin: 0 1% 1% 0;
background-color: #fff;
}
.imgData {
width: 100%;
height: 70%;
}
.imgData img {
.img-viewer {
width: 100%;
height: 100%;
object-fit: contain; /* 或 contain */
}
.imgData img, .info-img img,.img-viewer img {
width: 100%;
height: 100%;
/*object-fit: contain; !* 或 contain *!*/
}
.imgData2 {
@ -192,7 +204,52 @@ body {
padding: 2px 10px;
}
.hidden-actions {
.list-info {
width: 100%;
margin: 0 1% 1% 0;
background-color: #fff;
padding: 0 2%;
box-sizing: border-box;
}
.info-data, .info-data2 {
justify-content: space-between;
margin: 1% 0;
}
.info-data2 {
justify-content: start;
}
.info-data > p:nth-child(1) {
color: #999;
font-weight: bold;
}
.info-data2 > p:nth-child(1) {
width: 5%;
color: #333;
font-weight: bold;
}
.info-data2 > p:nth-child(2) {
width: 95%;
color: #333;
}
.info-img {
width: 100%;
display: flex;
flex-wrap: wrap
}
.info-img > div {
width: 19%;
height: 150px;
margin: 0 0.8% 1% 0;
}
.hidden-actions,.hidden-actions2,.hidden-actions3 {
width: auto;
height: 250px;
display: none;
@ -202,6 +259,10 @@ body {
border-radius: 4px;
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
}
.hidden-actions2,.hidden-actions3{
top: -150px;
height: 150px;
}
.hidden-btn {
width: 100%;

Binary file not shown.

After

Width:  |  Height:  |  Size: 446 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 432 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 605 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 583 B

View File

@ -20,7 +20,6 @@ layui.define(["layer"], function (exports) {
}
});
let op_width = $(".layui-anim-rl").outerWidth();
alert(op_width)
$(".layui-layer-shade")
.off("click")
.on("click", function () {

View File

@ -0,0 +1,163 @@
let form, laydate, flow,layer,rightPopup;
let pageNum = 1, pageSize = 20; // 定义分页
function setParams(obj){
layui.config({
base: "../../js/layui-v2.9.14/layui/", //此处路径请自行处理, 可以使用绝对路径
}).extend({
rightPopup: "rightPopup",
}).use(["form", 'laydate', 'flow','layer','rightPopup'], function () {
form = layui.form;
laydate = layui.laydate;
flow = layui.flow;
layer = layui.layer;
rightPopup = layui.rightPopup;
dataFlow();
});
}
/**数据流加载*/
function dataFlow() {
flow.load({
elem: '#ID-flow-demo', // 流加载容器
scrollElem: '#ID-flow-demo', // 滚动条所在元素,一般不用填,此处只是演示需要。
end: '数据加载完毕',
direction: 'bottom',
done: function (page, next) { // 执行下一页的回调
console.error(page);
pageNum = page;
let lis = [];
let returnData = loadData();
if (returnData != null) {
lis = initImgData(returnData.data.list)
next(lis.join(''), page < returnData.data.total / 15);
$('.img-info2').on('mouseenter', function () {
this.querySelector('.hidden-actions3').style.display = 'block';
});
$('.img-info2').on('mouseleave', function () {
this.querySelector('.hidden-actions3').style.display = 'none';
});
}
}
});
}
/**加载图片数据*/
function loadData() {
let returnData = null;
let url = dataUrl + "/backstage/synthesisQuery/getImgList"
let obj = {
pageNum: pageNum,
pageSize: pageSize,
}
let params = {
encryptedData: encryptCBC(JSON.stringify(obj))
}
ajaxRequest(url, "POST", params, false, function () {
}, function (result) {
if (result.status === 200) {
console.log(result)
returnData = result;
} else {
layer.msg(result.msg, {icon: 2})
}
}, function (xhr) {
error(xhr)
});
return returnData;
}
/**渲染图片*/
function initImgData(list) {
let htmlArr = [];
if (list && list.length > 0) {
$.each(list, function (index, item) {
htmlArr.push("<div class='img-info2'>" +
" <div class='img-viewer layout'>\n" +
" <img src='" + item.compressFilePath + "'>" +
" </div>" +
" <div class='hidden-actions3'><div class='hidden-btn layout'>" +
" <div class='layout' onclick='viewImg(" + JSON.stringify(item) + ")'><div class='img-view' title='放大'></div></div>" +
" <div class='layout' onclick='imgDownLoad(" + JSON.stringify(item) + ")'><div title='原图下载' class='img-download'></div></div>" +
" <div class='layout' onclick='waterImgDownLoad(" + JSON.stringify(item) + ")'><div title='水印下载' class='img-water'></div></div>" +
setCollectImg(item) +
" </div></div>" +
" </div>");
})
}
return htmlArr;
// 设置收藏按钮
function setCollectImg(item) {
if (item.collectStatus === '0') {
return "<div class='layout' onclick='collectImg(this," + JSON.stringify(item) + ",0)'><div title='收藏' class='img-collect'></div></div>" +
"<div style='display: none;' class='layout' onclick='collectImg(this," + JSON.stringify(item) + ",1)'><div title='取消收藏' class='img-collect-check'></div></div>";
} else {
return "<div style='display: none;' class='layout' onclick='collectImg(this," + JSON.stringify(item) + ",0)'><div title='收藏' class='img-collect'></div></div>" +
"<div class='layout' onclick='collectImg(this," + JSON.stringify(item) + ",1)'><div title='取消收藏' class='img-collect-check'></div></div>";
}
}
// 设置收藏图标
function setCollectData(item) {
if (item.collectStatus === '1') {
return "<img src='../../img/synthesisQuery/collect_check.png'>";
}
return "<img style='display:none;' src='../../img/synthesisQuery/collect_check.png'>";
}
}
/**放大*/
function viewImg(item) {
layer.photos({
shade: 0.5,
footer: false,
photos: {
"title": "图片预览",
"start": 0,
"data": [
{
"pid": 1,
"src": "../../img/synthesisQuery/7.jpg",
}
]
},
});
}
/**放大*/
function imgDownLoad(item) {
alert(item.id)
}
/**水印下载*/
function waterImgDownLoad(item) {
alert(item.id)
}
/**收藏*/
function collectImg(that, item, type) {
if (type === 0) { // 收藏
$(that).next().removeAttr("style");
$(that).css({'display': 'none'})
$(that).parent().parent().prev().find('img').eq(0).removeAttr('style')
} else if (type === 1) { // 取消收藏
$(that).prev().removeAttr("style");
$(that).css({'display': 'none'});
$(that).parent().parent().prev().find('img').eq(0).css({'display': 'none'})
}
}
/**高级筛选*/
function highSearch(){
rightPopup.rightPopupLayer("../../pages/synthesisQuery/highSearchForm.html", JSON.stringify({}),["45%", "100%"]);
}
/*图片类型查询*/
function queryByType(that,type){
$('.type-num').each(function(){
$(this).removeClass('type-num-check');
})
$(that).addClass('type-num-check');
}

View File

@ -59,7 +59,6 @@ function initTable(dataList, limit, page) {
limit: limit,
cols: [
[
//表头 return '<span style="color:#19BE6B"> ● </span>已派车';
{
title: "序号", width: "5%", unresize: true, align: "center",
templet: function (d) {
@ -70,37 +69,37 @@ function initTable(dataList, limit, page) {
{
field: "username", title: "总照片数量", width: "8%", unresize: true, align: "center",
templet: function (d) {
return '<span style="color:#409EFF;font-weight: bold;">0</span>';
return "<div class='num-btn' onclick='viewImg("+JSON.stringify(d)+",0)'><span style='color:#409EFF;'>0</span></div>";
}
},
{
field: "username", title: "安全违章", width: "8%", unresize: true, align: "center",
templet: function (d) {
return '<span style="color:#F56C6C;font-weight: bold;">0</span>';
return "<div class='num-btn' onclick='viewImg("+JSON.stringify(d)+",1)'><span style='color:#F56C6C;'>0</span></div>";
}
},
{
field: "username", title: "质量检查", width: "8%", unresize: true, align: "center",
templet: function (d) {
return '<span style="color:#80E1BB;font-weight: bold;">0</span>';
return "<div class='num-btn' onclick='viewImg("+JSON.stringify(d)+",2)'><span style='color:#80E1BB;'>0</span></div>";
}
},
{
field: "username", title: "安全措施落实", width: "10%", unresize: true, align: "center",
templet: function (d) {
return '<span style="color:#FFC328;font-weight: bold;">0</span>';
return "<div class='num-btn' onclick='viewImg("+JSON.stringify(d)+",3)'><span style='color:#FFC328;'>0</span></div>";
}
},
{
field: "username", title: "协调照片 ", width: "8%", unresize: true, align: "center",
templet: function (d) {
return '<span style="color:#F56CCF;font-weight: bold;">0</span>';
return "<div class='num-btn' onclick='viewImg("+JSON.stringify(d)+",4)'><span style='color:#F56CCF;'>0</span></div>";
}
},
{
field: "username", title: "重要事项及宣传 ", width: "10%", unresize: true, align: "center",
templet: function (d) {
return '<span style="color:#06B6D4;font-weight: bold;">0</span>';
return "<div class='num-btn' onclick='viewImg("+JSON.stringify(d)+",5)'><span style='color:#06B6D4;'>0</span></div>";
}
},
{
@ -167,3 +166,9 @@ function reset() {
function viewData(obj){
openIframeByParamObj("viewData", "详情", "./proClassifyStatisticsDetail.html", "92%", "95%", obj);
}
/**图片预览*/
function viewImg(obj,type){
obj.type = type;
openIframeByParamObj("viewImg", "图片详情", "./photoView.html", "92%", "85%", obj);
}

View File

@ -1,12 +1,13 @@
let form, laydate, flow,layer,rightPopup;
let pageNum = 1, pageSize = 15; // 定义分页
let queryType = 2; // 默认最近上传
function setParams(obj){
let form, laydate, flow, layer, rightPopup;
let pageNum = 1, pageSize = 15; // 图片定义分页
let pageNum2 = 1, pageSize2 = 2; // 列表定义分页
let queryType = 1; // 默认图片
function setParams(obj) {
layui.config({
base: "../../js/layui-v2.9.14/layui/", //此处路径请自行处理, 可以使用绝对路径
}).extend({
rightPopup: "rightPopup2",
}).use(["form", 'laydate', 'flow','layer','rightPopup'], function () {
}).use(["form", 'laydate', 'flow', 'layer', 'rightPopup'], function () {
form = layui.form;
laydate = layui.laydate;
flow = layui.flow;
@ -24,19 +25,32 @@ function dataFlow() {
end: '数据加载完毕',
direction: 'bottom',
done: function (page, next) { // 执行下一页的回调
console.error(page);
pageNum = page;
let lis = [];
let returnData = loadData();
if (returnData != null) {
lis = initImgData(returnData.data.list)
next(lis.join(''), page < returnData.data.total / 15);
$('.img-info').on('mouseenter', function () {
this.querySelector('.hidden-actions').style.display = 'block';
});
$('.img-info').on('mouseleave', function () {
this.querySelector('.hidden-actions').style.display = 'none';
});
if (queryType === 1) { // 图片
lis = initImgData(returnData.data.list)
} else { // 列表
lis = initListData(returnData.data.list)
}
next(lis.join(''), page < returnData.data.total / (queryType === 1 ? pageSize : pageSize2));
if (queryType === 1) {
$('.img-info').on('mouseenter', function () {
this.querySelector('.hidden-actions').style.display = 'block';
});
$('.img-info').on('mouseleave', function () {
this.querySelector('.hidden-actions').style.display = 'none';
});
} else {
$('.img-data').on('mouseenter', function () {
this.querySelector('.hidden-actions2').style.display = 'block';
});
$('.img-data').on('mouseleave', function () {
this.querySelector('.hidden-actions2').style.display = 'none';
});
}
}
}
});
@ -46,10 +60,19 @@ function dataFlow() {
function loadData() {
let returnData = null;
let url = dataUrl + "/backstage/synthesisQuery/getImgList"
let obj = {
pageNum: pageNum,
pageSize: pageSize,
queryType: queryType
let obj = {}
if (queryType === 1) { // 图片
obj = {
pageNum: pageNum,
pageSize: pageSize,
queryType: queryType
}
} else { // 列表
obj = {
pageNum: pageNum2,
pageSize: pageSize2,
queryType: queryType
}
}
let params = {
encryptedData: encryptCBC(JSON.stringify(obj))
@ -118,6 +141,176 @@ function initImgData(list) {
}
/**1.图片 2.列表*/
function changeType(that, type) {
if (type === 1) {
$(that).attr('src', '../../img/synthesisQuery/photo_check.png');
$(that).next().attr('src', '../../img/synthesisQuery/list.png');
} else {
$(that).attr('src', '../../img/synthesisQuery/list_check.png');
$(that).prev().attr('src', '../../img/synthesisQuery/photo.png');
}
queryType = type;
pageNum = 1;
pageNum2 = 1;
$('#ID-flow-demo').empty();
dataFlow();
}
/*图片类型查询*/
function queryByType(that, type) {
$('.type-num').each(function () {
$(this).removeClass('type-num-check');
})
$(that).addClass('type-num-check');
}
/**渲染列表图片*/
function initListData(list) {
let htmlArr = [];
if (list && list.length > 0) {
$.each(list, function (index, item) {
let html = "<div class='list-info'>" +
" <div class='info-data layout'>" +
" <p>" + item.uploadTime + "</p>" +
" <p class='img-color" + (item.uploadType) + "'>" + item.uploadTypeName + "</p>" +
" </div>" +
setBasicInfo(item) +
" </div>"
console.log(html)
htmlArr.push(html);
})
}
return htmlArr;
/**设置安全违章\质量检测\安全措施落实\协调照片\重要事项及宣传类*/
function setBasicInfo(item) {
let html = '';
if (item.uploadType === '1') { // 安全违章
html += "<div class='info-data2 layout'>" +
"<p>违章地点:</p>" +
"<p>" + item.id + "</p>" +
"</div>" +
"<div class='info-data2 layout'>" +
"<p>违章描述:</p>" +
"<p>施工人员未正确佩戴安全帽,存在安全隐患</p>" +
"</div>" +
"<div class='info-img'>" +
setImgData() +
"</div>" +
setRectData(item);
} else if (item.uploadType === '2') { // 质量检测
html += "<div class='info-data2 layout'>" +
"<p>检查地点</p>" +
"<p>工地 A 区施工现场 3 号楼</p>" +
"</div>" +
"<div class='info-data2 layout'>" +
"<p>检查描述:</p>" +
"<p>施工人员未正确佩戴安全帽,存在安全隐患</p>" +
"</div>" +
"<div class='info-img'>" +
setImgData() +
"</div>" +
setRectData(item);
} else if (item.uploadType === '3') { // 安全措施落实
html += "<div class='info-data2 layout'>" +
"<p>检查地点</p>" +
"<p>工地 A 区施工现场 3 号楼</p>" +
"</div>" +
"<div class='info-data2 layout'>" +
"<p>检查描述:</p>" +
"<p>施工人员未正确佩戴安全帽,存在安全隐患</p>" +
"</div>" +
"<div class='info-img'>" +
setImgData() +
"</div>";
} else if (item.uploadType === '4') { // 协调照片
html += "<div class='info-data2 layout'>" +
"<p>建设前描述</p>" +
"<p>工地 A 区施工现场 3 号楼</p>" +
"</div>" +
"<div class='info-img'>" +
setImgData() +
"</div>" +
"<div class='info-data2 layout'>" +
"<p>建设中描述:</p>" +
"<p>施工人员未正确佩戴安全帽,存在安全隐患</p>" +
"</div>" +
"<div class='info-img'>" +
setImgData() +
"</div>" +
"<div class='info-data2 layout'>" +
"<p>恢复后描述:</p>" +
"<p>施工人员未正确佩戴安全帽,存在安全隐患</p>" +
"</div>" +
"<div class='info-img'>" +
setImgData() +
"</div>";
} else if (item.uploadType === '5') { // 重要事项及宣传类
html += "<div class='info-data2 layout'>" +
"<p>标题</p>" +
"<p>工地 A 区施工现场 3 号楼</p>" +
"</div>" +
"<div class='info-data2 layout'>" +
"<p>内容:</p>" +
"<p>施工人员未正确佩戴安全帽,存在安全隐患</p>" +
"</div>" +
"<div class='info-img'>" +
setImgData() +
"</div>";
}
return html;
function setImgData() {
let list = [{compressFilePath: '../../img/synthesisQuery/7.jpg'}, {compressFilePath: '../../img/synthesisQuery/7.jpg'}, {compressFilePath: '../../img/synthesisQuery/7.jpg'}, {compressFilePath: '../../img/synthesisQuery/7.jpg'}, {compressFilePath: '../../img/synthesisQuery/7.jpg'}, {compressFilePath: '../../img/synthesisQuery/7.jpg'}];
let cent = '';
$.each(list, function (index, item) {
cent += "<div class='img-data'>" +
"<img src=" + item.compressFilePath + ">" +
"<div class='hidden-actions2'><div class='hidden-btn layout'>" +
"<div class='layout' onclick='viewImg(" + JSON.stringify(item) + ")'><div class='img-view' title='放大'></div></div>" +
"<div class='layout' onclick='imgDownLoad(" + JSON.stringify(item) + ")'><div title='原图下载' class='img-download'></div></div>" +
"<div class='layout' onclick='waterImgDownLoad(" + JSON.stringify(item) + ")'><div title='水印下载' class='img-water'></div></div>" +
setCollectImg(item) +
"</div></div>" +
"</div>";
})
return cent;
}
/**设置整改数据*/
function setRectData(item) {
let cent2 = '';
if (item.rectStatus === '1') { // 已整改
cent2 += "<div class='info-data2 layout'>" +
"<p>整改说明:</p>" +
"<p>施工人员已进行安全教育</p>" +
"</div>" +
"<div class='info-img'>" +
setImgData() +
"</div>";
}
return cent2;
}
}
// 设置收藏按钮
function setCollectImg(item) {
if (item.collectStatus === '0') {
return "<div class='layout' onclick='collectImg(this," + JSON.stringify(item) + ",0)'><div title='收藏' class='img-collect'></div></div>" +
"<div style='display: none;' class='layout' onclick='collectImg(this," + JSON.stringify(item) + ",1)'><div title='取消收藏' class='img-collect-check'></div></div>";
} else {
return "<div style='display: none;' class='layout' onclick='collectImg(this," + JSON.stringify(item) + ",0)'><div title='收藏' class='img-collect'></div></div>" +
"<div class='layout' onclick='collectImg(this," + JSON.stringify(item) + ",1)'><div title='取消收藏' class='img-collect-check'></div></div>";
}
}
}
/**放大*/
function viewImg(item) {
layer.photos({
@ -160,14 +353,6 @@ function collectImg(that, item, type) {
}
/**高级筛选*/
function highSearch(){
rightPopup.rightPopupLayer("../../pages/synthesisQuery/highSearchForm.html", JSON.stringify({}),["50%", "100%"]);
}
/*图片类型查询*/
function queryByType(that,type){
$('.type-num').each(function(){
$(this).removeClass('type-num-check');
})
$(that).addClass('type-num-check');
function highSearch() {
rightPopup.rightPopupLayer("../../pages/synthesisQuery/highSearchForm.html", JSON.stringify({}), ["50%", "100%"]);
}

View File

@ -119,11 +119,11 @@ function initImgData(list) {
// 设置收藏按钮
function setCollectImg(item) {
if (item.collectStatus === '0') {
return "<div collectStatus=" + item.collectStatus + " class='layout' onclick='collectImg(this," + JSON.stringify(item) + ",0)'><div title='收藏' class='img-collect'></div></div>" +
"<div style='display: none;' collectStatus=" + item.collectStatus + " class='layout' onclick='collectImg(this," + JSON.stringify(item) + ",1)'><div title='取消收藏' class='img-collect-check'></div></div>";
return "<div class='layout' onclick='collectImg(this," + JSON.stringify(item) + ",0)'><div title='收藏' class='img-collect'></div></div>" +
"<div style='display: none;' class='layout' onclick='collectImg(this," + JSON.stringify(item) + ",1)'><div title='取消收藏' class='img-collect-check'></div></div>";
} else {
return "<div style='display: none;' collectStatus=" + item.collectStatus + " class='layout' onclick='collectImg(this," + JSON.stringify(item) + ",0)'><div title='收藏' class='img-collect'></div></div>" +
"<div collectStatus=" + item.collectStatus + " class='layout' onclick='collectImg(this," + JSON.stringify(item) + ",1)'><div title='取消收藏' class='img-collect-check'></div></div>";
return "<div style='display: none;' class='layout' onclick='collectImg(this," + JSON.stringify(item) + ",0)'><div title='收藏' class='img-collect'></div></div>" +
"<div class='layout' onclick='collectImg(this," + JSON.stringify(item) + ",1)'><div title='取消收藏' class='img-collect-check'></div></div>";
}
}

View File

@ -0,0 +1,25 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>图片预览</title>
<link rel="stylesheet" href="../../js/layui-v2.9.14/layui/css/layui.css">
<link rel="stylesheet" href="../../css/synthesisQuery/synthesisQuery.css">
<link rel="stylesheet" href="../../css/font.css">
<script src="../../js/libs/jquery-3.7.0.min.js" charset="UTF-8" type="text/javascript"></script>
<script src="../../js/layui-v2.9.14/layui/layui.js" charset="UTF-8" type="text/javascript"></script>
<script src="../../js/publicJs.js"></script>
<script src="../../js/commonUtils.js"></script>
<script src="../../js/openIframe.js"></script>
<script src="../../js/my/aes.js"></script>
<script src="../../js/ajaxRequest.js"></script>
</head>
<body>
<div id="main-box">
<div class="flow-demo layout" id="ID-flow-demo">
</div>
</div>
</body>
<script src="../../js/synthesisQuery/photoView.js" charset="UTF-8" type="text/javascript"></script>
</html>

View File

@ -50,6 +50,16 @@
.layui-table-init {
background-color: transparent !important;
}
.num-btn {
width: 50px;
height: 100%;
cursor: pointer;
}
.num-btn > span {
font-weight: bold;
}
</style>
<script src="../../js/synthesisQuery/proClassifyStatistics.js" charset="UTF-8" type="text/javascript"></script>
</html>

View File

@ -31,6 +31,10 @@
<img src="../../img/synthesisQuery/high_search.png" alt="高级筛选">
<p>高级筛选</p>
</div>
<div class="layui-inline layout" style="width: 100px;justify-content: space-evenly;">
<img style="cursor: pointer;" title="按照图片类型统计" onclick="changeType(this,1)" src="../../img/synthesisQuery/photo_check.png">
<img style="cursor: pointer;" title="按照列表统计" onclick="changeType(this,2)" src="../../img/synthesisQuery/list.png">
</div>
</div>
</form>
</div>