项目分类统计详情

This commit is contained in:
cwchen 2025-04-03 18:06:51 +08:00
parent ecf81be077
commit 2a32e2ba57
8 changed files with 160 additions and 86 deletions

View File

@ -91,6 +91,9 @@
#{proId} #{proId}
</foreach> </foreach>
</if> </if>
<if test="id!=null">
AND tcq.pro_id = #{id}
</if>
GROUP BY tcq.upload_type GROUP BY tcq.upload_type
</select> </select>
@ -137,9 +140,9 @@
</if> </if>
<if test="searchType == 3"> <if test="searchType == 3">
<if test="keyWord!=null and keyWord!=''"> <if test="keyWord!=null and keyWord!=''">
AND( AND (
SUBSTRING(sfr.source_type_name, LOCATE('-', sfr.source_type_name) + 1) = #{keyWord} OR SUBSTRING(sfr.source_type_name, LOCATE('-', sfr.source_type_name) + 1) = #{keyWord} OR
INSTR(tcq.title,#{keyWord}) > 0 INSTR(tcq.title,#{keyWord}) > 0
) )
</if> </if>
<if test="proId!=null"> <if test="proId!=null">
@ -206,6 +209,9 @@
#{proId} #{proId}
</foreach> </foreach>
</if> </if>
<if test="id!=null">
AND tcq.pro_id = #{id}
</if>
AND tcq.is_active = '1' AND tcq.is_active = '1'
</where> </where>
ORDER BY sfr.create_time DESC ORDER BY sfr.create_time DESC
@ -236,6 +242,9 @@
#{proId} #{proId}
</foreach> </foreach>
</if> </if>
<if test="id!=null">
AND tcq.pro_id = #{id}
</if>
AND tcq.is_active = '1' AND tcq.is_active = '1'
</where> </where>
GROUP BY tcq.upload_type, tcq.pro_id GROUP BY tcq.upload_type, tcq.pro_id

View File

@ -2,6 +2,10 @@ let form, laydate, layer, highSearchData = {};
function setParams(obj) { function setParams(obj) {
highSearchData = JSON.parse(obj); highSearchData = JSON.parse(obj);
let type = highSearchData.type;
if(type){
$('#pro-item').remove();
}
layui.use(["form", 'laydate', 'layer'], function () { layui.use(["form", 'laydate', 'layer'], function () {
form = layui.form; form = layui.form;
laydate = layui.laydate; laydate = layui.laydate;

View File

@ -82,7 +82,7 @@ function initImgData(list) {
" <div class='hidden-actions3'><div class='hidden-btn layout'>" + " <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='viewImg(" + JSON.stringify(item) + ")'><div class='img-view' title='放大'></div></div>" +
" <div class='layout' onclick='imgDownLoad(" + JSON.stringify(item) + ",1)'><div title='原图下载' class='img-download'></div></div>" + " <div class='layout' onclick='imgDownLoad(" + JSON.stringify(item) + ",1)'><div title='原图下载' class='img-download'></div></div>" +
" <div class='layout' onclick='waterImgDownLoad(" + JSON.stringify(item) + ")'><div title='水印下载' class='img-water'></div></div>" + " <div class='layout' onclick='generateWatermark(" + JSON.stringify(item) + ")'><div title='水印下载' class='img-water'></div></div>" +
setCollectImg(item) + setCollectImg(item) +
" </div></div>" + " </div></div>" +
" </div>"); " </div>");

View File

@ -1,24 +1,32 @@
let form, laydate, flow, layer, rightPopup; let form, laydate, flow, layer, rightPopup;
let pageNum = 1, pageSize = 15; // 图片定义分页 let pageNum = 1, pageSize = 15; // 图片定义分页
let pageNum2 = 1, pageSize2 = 2; // 列表定义分页 let pageNum2 = 1, pageSize2 = 2; // 列表定义分页
let queryType = 1; // 默认图片 let queryType = 2; // 默认图片
let objParams = {},highSearchData = {};
function setParams(obj) { function setParams(obj) {
objParams = JSON.parse(obj);
layui.config({ layui.config({
base: "../../js/layui-v2.9.14/layui/", //此处路径请自行处理, 可以使用绝对路径 base: "../../js/layui-v2.9.14/layui/", //此处路径请自行处理, 可以使用绝对路径
}).extend({ }).extend({
rightPopup: "rightPopup2", rightPopup: "rightPopup",
}).use(["form", 'laydate', 'flow', 'layer', 'rightPopup'], function () { }).use(["form", 'laydate', 'flow', 'layer', 'rightPopup'], function () {
form = layui.form; form = layui.form;
laydate = layui.laydate; laydate = layui.laydate;
flow = layui.flow; flow = layui.flow;
layer = layui.layer; layer = layui.layer;
rightPopup = layui.rightPopup; rightPopup = layui.rightPopup;
dataFlow(); initImgNum(objParams.proId);
dataFlow({
pageNum: pageNum,
pageSize: pageSize,
queryType: queryType,
id:objParams.proId
});
}); });
} }
/**数据流加载*/ /**数据流加载*/
function dataFlow() { function dataFlow(queryParams) {
flow.load({ flow.load({
elem: '#ID-flow-demo', // 流加载容器 elem: '#ID-flow-demo', // 流加载容器
scrollElem: '#ID-flow-demo', // 滚动条所在元素,一般不用填,此处只是演示需要。 scrollElem: '#ID-flow-demo', // 滚动条所在元素,一般不用填,此处只是演示需要。
@ -27,16 +35,15 @@ function dataFlow() {
done: function (page, next) { // 执行下一页的回调 done: function (page, next) { // 执行下一页的回调
pageNum = page; pageNum = page;
let lis = []; let lis = [];
let returnData = loadData(); let returnData = loadData(queryParams);
if (returnData != null) { if (returnData != null) {
if (queryType === 1) { // 图片 if (queryType === 2) { // 图片
lis = initImgData(returnData.data.list) lis = initImgData(returnData.data.list)
} else { // 列表 } else { // 列表
lis = initListData(returnData.data.list) lis = initListData(returnData.data.list)
} }
next(lis.join(''), page < returnData.data.total / (queryType === 1 ? pageSize : pageSize2)); next(lis.join(''), page < returnData.data.total / (queryType === 2 ? pageSize : pageSize2));
if (queryType === 1) { if (queryType === 2) {
$('.img-info').on('mouseenter', function () { $('.img-info').on('mouseenter', function () {
this.querySelector('.hidden-actions').style.display = 'block'; this.querySelector('.hidden-actions').style.display = 'block';
}); });
@ -57,17 +64,15 @@ function dataFlow() {
} }
/**加载图片数据*/ /**加载图片数据*/
function loadData() { function loadData(queryParams) {
let returnData = null; let returnData = null;
let url = dataUrl + "/backstage/synthesisQuery/getImgList" let url = null;
let obj = {} let obj = {}
if (queryType === 1) { // 图片 if (queryType === 2) { // 图片
obj = { url = dataUrl + "/backstage/synthesisQuery/getImgList";
pageNum: pageNum, obj = queryParams
pageSize: pageSize,
queryType: queryType
}
} else { // 列表 } else { // 列表
url = dataUrl + "/backstage/synthesisQuery/getImgList";
obj = { obj = {
pageNum: pageNum2, pageNum: pageNum2,
pageSize: pageSize2, pageSize: pageSize2,
@ -96,22 +101,23 @@ function initImgData(list) {
let htmlArr = []; let htmlArr = [];
if (list && list.length > 0) { if (list && list.length > 0) {
$.each(list, function (index, item) { $.each(list, function (index, item) {
let filePath = imgUrl + item.compressFilePath + "?token=" + tokens
htmlArr.push("<div class='img-info'>" + htmlArr.push("<div class='img-info'>" +
" <div class='imgData layout'>\n" + " <div class='imgData layout'>\n" +
" <img src='" + item.compressFilePath + "'>" + " <img src='" + filePath + "'>" +
" </div>" + " </div>" +
" <div class='imgData2 layout'>" + " <div class='imgData2 layout'>" +
" <p>" + item.uploadTime + "</p>" + " <p>" + item.uploadTime + "</p>" +
" <p class='img-color" + (item.uploadType) + "'>" + item.uploadTypeName + "</p>" + " <p class='img-color" + (item.uploadType) + "'>" + item.uploadTypeName + "</p>" +
" </div>" + " </div>" +
" <div class='imgData3 layout'>" + " <div class='imgData3 layout'>" +
" <p>" + item.sourceTypeName + "</p>" + " <p>" + setSourceTypeName(item) + "</p>" +
setCollectData(item) + setCollectData(item) +
" </div>" + " </div>" +
" <div class='hidden-actions'><div class='hidden-btn layout'>" + " <div class='hidden-actions'><div class='hidden-btn layout'>" +
" <div class='layout' onclick='viewImg(" + JSON.stringify(item) + ")'><div class='img-view' title='放大'></div></div>" + " <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='imgDownLoad(" + JSON.stringify(item) + ",1)'><div title='原图下载' class='img-download'></div></div>" +
" <div class='layout' onclick='waterImgDownLoad(" + JSON.stringify(item) + ")'><div title='水印下载' class='img-water'></div></div>" + " <div class='layout' onclick='generateWatermark(" + JSON.stringify(item) + ")'><div title='水印下载' class='img-water'></div></div>" +
setCollectImg(item) + setCollectImg(item) +
" </div></div>" + " </div></div>" +
" </div>"); " </div>");
@ -139,6 +145,15 @@ function initImgData(list) {
return "<img style='display:none;' src='../../img/synthesisQuery/collect_check.png'>"; return "<img style='display:none;' src='../../img/synthesisQuery/collect_check.png'>";
} }
// 设置标题
function setSourceTypeName(item) {
if (item.sourceType === '9') {
return item.title;
} else {
return item.sourceTypeName.split('-')[1];
}
}
} }
/**1.图片 2.列表*/ /**1.图片 2.列表*/
@ -156,16 +171,6 @@ function changeType(that, type) {
$('#ID-flow-demo').empty(); $('#ID-flow-demo').empty();
dataFlow(); dataFlow();
} }
/*图片类型查询*/
function queryByType(that, type) {
$('.type-num').each(function () {
$(this).removeClass('type-num-check');
})
$(that).addClass('type-num-check');
}
/**渲染列表图片*/ /**渲染列表图片*/
function initListData(list) { function initListData(list) {
let htmlArr = []; let htmlArr = [];
@ -271,8 +276,8 @@ function initListData(list) {
"<img src=" + item.compressFilePath + ">" + "<img src=" + item.compressFilePath + ">" +
"<div class='hidden-actions2'><div class='hidden-btn layout'>" + "<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='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='imgDownLoad(" + JSON.stringify(item) + ",1)'><div title='原图下载' class='img-download'></div></div>" +
"<div class='layout' onclick='waterImgDownLoad(" + JSON.stringify(item) + ")'><div title='水印下载' class='img-water'></div></div>" + "<div class='layout' onclick='generateWatermark(" + JSON.stringify(item) + ")'><div title='水印下载' class='img-water'></div></div>" +
setCollectImg(item) + setCollectImg(item) +
"</div></div>" + "</div></div>" +
"</div>"; "</div>";
@ -310,49 +315,101 @@ function initListData(list) {
} }
/**放大*/
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) { function collectImg(that, item, type) {
if (type === 0) { // 收藏 if (type === 0) { // 收藏
$(that).next().removeAttr("style"); let flag = collectData({
$(that).css({'display': 'none'}) collectType: 1,
$(that).parent().parent().prev().find('img').eq(0).removeAttr('style') id: item.id
});
if (flag) {
$(that).next().removeAttr("style");
$(that).css({'display': 'none'})
$(that).parent().parent().prev().find('img').eq(0).removeAttr('style')
layer.msg("收藏成功",{icon:1})
}else{
layer.msg("收藏失败",{icon:2})
}
} else if (type === 1) { // 取消收藏 } else if (type === 1) { // 取消收藏
$(that).prev().removeAttr("style"); let flag = collectData({
$(that).css({'display': 'none'}); collectType: 2,
$(that).parent().parent().prev().find('img').eq(0).css({'display': 'none'}) id: item.id
});
if (flag) {
$(that).prev().removeAttr("style");
$(that).css({'display': 'none'});
$(that).parent().parent().prev().find('img').eq(0).css({'display': 'none'})
layer.msg("取消收藏成功",{icon:1})
}else{
layer.msg("取消收藏失败",{icon:2})
}
} }
} }
/**高级筛选*/ /**高级筛选*/
function highSearch() { function highSearch() {
rightPopup.rightPopupLayer("../../pages/synthesisQuery/highSearchForm.html", JSON.stringify({}), ["50%", "100%"]); highSearchData.type = 1;
rightPopup.rightPopupLayer("../../pages/synthesisQuery/highSearchForm.html", JSON.stringify(highSearchData), ["50%", "100%"]);
}
/**标题查询*/
function titleSearch() {
highSearchData = {};
resetData();
let queryParams = {
pageNum: pageNum,
pageSize: pageSize,
queryType: queryType,
searchType: 1,
keyWord: $('#keyWord').val(),
id:objParams.proId
}
searchData(queryParams);
}
/*图片类型查询*/
function queryByType(that, type) {
resetData();
if(queryType === 2){
highSearchData = {};
$(that).addClass('type-num-check');
let queryParams = {
pageNum: pageNum,
pageSize: pageSize,
queryType: queryType,
searchType: 2,
uploadType: type,
id:objParams.proId
}
searchData(queryParams);
}
}
/**高级筛选数据*/
function highSearchValue(obj) {
resetData();
highSearchData = JSON.parse(obj);
let queryParams = Object.assign(highSearchData, {})
queryParams.pageNum = pageNum;
queryParams.pageSize = pageSize;
queryParams.queryType = queryType;
queryParams.searchType = 3;
queryParams.id = objParams.proId;
dataFlow(queryParams);
}
// 查询数据
function searchData(queryParams) {
$('#ID-flow-demo').empty();
dataFlow(queryParams);
}
/**重置基本数据*/
function resetData() {
pageNum = 1;
$('.type-num').each(function () {
$(this).removeClass('type-num-check');
})
} }

View File

@ -1,7 +1,9 @@
// 获取图片数量 // 获取图片数量
function initImgNum() { function initImgNum(objParams) {
let url = dataUrl + "/backstage/synthesisQuery/getImgNum" let url = dataUrl + "/backstage/synthesisQuery/getImgNum"
let obj = {} let obj = {
id: objParams || null
}
let params = { let params = {
encryptedData: encryptCBC(JSON.stringify(obj)) encryptedData: encryptCBC(JSON.stringify(obj))
} }

View File

@ -38,7 +38,7 @@
</div> </div>
</div> </div>
</div> </div>
<div class="layui-form-item"> <div class="layui-form-item" id="pro-item">
<div class="layui-inline"> <div class="layui-inline">
<label class="layui-form-label">工程</label> <label class="layui-form-label">工程</label>
<div class="layui-input-inline" style="width: 575px !important;"> <div class="layui-input-inline" style="width: 575px !important;">

View File

@ -21,10 +21,10 @@
<form class="layui-form"> <form class="layui-form">
<div class="layui-form-item layout"> <div class="layui-form-item layout">
<div class="layui-input-group"> <div class="layui-input-group">
<input style="width: 600px;" type="text" id="title" name="title" placeholder="搜索标题" <input style="width: 600px;" type="text" id="keyWord" name="keyWord" placeholder="搜索标题"
autocomplete="off" class="layui-input" lay-affix="clear"> autocomplete="off" class="layui-input" lay-affix="clear" maxlength="30">
<div class="layui-input-split layui-input-suffix" style="cursor: pointer;background-color: #fff;"> <div class="layui-input-split layui-input-suffix" style="cursor: pointer;background-color: #fff;">
<i class="layui-icon layui-icon-search"></i> <i class="layui-icon layui-icon-search" onclick="titleSearch()"></i>
</div> </div>
</div> </div>
<div class="layui-inline layout" style="margin-bottom: 0;cursor: pointer;" onclick="highSearch()"> <div class="layui-inline layout" style="margin-bottom: 0;cursor: pointer;" onclick="highSearch()">
@ -43,7 +43,7 @@
<div class="type-num layout" onclick="queryByType(this,0)"> <div class="type-num layout" onclick="queryByType(this,0)">
<div class="layout"> <div class="layout">
<p>总照片数</p> <p>总照片数</p>
<p>1250</p> <p id="totalNum">0</p>
</div> </div>
<div class="layout"> <div class="layout">
<img src="../../img/synthesisQuery/1.png"> <img src="../../img/synthesisQuery/1.png">
@ -52,7 +52,7 @@
<div class="type-num layout" onclick="queryByType(this,1)"> <div class="type-num layout" onclick="queryByType(this,1)">
<div class="layout"> <div class="layout">
<p>安全违章</p> <p>安全违章</p>
<p>1250</p> <p id="safetyVioNum">0</p>
</div> </div>
<div class="layout"> <div class="layout">
<img src="../../img/synthesisQuery/2.png"> <img src="../../img/synthesisQuery/2.png">
@ -61,7 +61,7 @@
<div class="type-num layout" onclick="queryByType(this,2)"> <div class="type-num layout" onclick="queryByType(this,2)">
<div class="layout"> <div class="layout">
<p>质量检查</p> <p>质量检查</p>
<p>1250</p> <p id="qualityInsNum">0</p>
</div> </div>
<div class="layout"> <div class="layout">
<img src="../../img/synthesisQuery/3.png"> <img src="../../img/synthesisQuery/3.png">
@ -70,7 +70,7 @@
<div class="type-num layout" onclick="queryByType(this,3)"> <div class="type-num layout" onclick="queryByType(this,3)">
<div class="layout"> <div class="layout">
<p>安全措施落实</p> <p>安全措施落实</p>
<p>1250</p> <p id="safetyMeasNum">0</p>
</div> </div>
<div class="layout"> <div class="layout">
<img src="../../img/synthesisQuery/4.png"> <img src="../../img/synthesisQuery/4.png">
@ -79,7 +79,7 @@
<div class="type-num layout" onclick="queryByType(this,4)"> <div class="type-num layout" onclick="queryByType(this,4)">
<div class="layout"> <div class="layout">
<p>协调照片</p> <p>协调照片</p>
<p>1250</p> <p id="coordinatedPhotoNum">0</p>
</div> </div>
<div class="layout"> <div class="layout">
<img src="../../img/synthesisQuery/5.png"> <img src="../../img/synthesisQuery/5.png">
@ -88,7 +88,7 @@
<div class="type-num layout" onclick="queryByType(this,5)"> <div class="type-num layout" onclick="queryByType(this,5)">
<div class="layout"> <div class="layout">
<p>重要事项及宣传类</p> <p>重要事项及宣传类</p>
<p>1250</p> <p id="importIssuesAndPublicityNum">0</p>
</div> </div>
<div class="layout"> <div class="layout">
<img src="../../img/synthesisQuery/6.png"> <img src="../../img/synthesisQuery/6.png">
@ -107,4 +107,6 @@
</div> </div>
</body> </body>
<script src="../../js/synthesisQuery/proClassifyStatisticsDetail.js" charset="UTF-8" type="text/javascript"></script> <script src="../../js/synthesisQuery/proClassifyStatisticsDetail.js" charset="UTF-8" type="text/javascript"></script>
<script src="../../js/synthesisQuery/synthesisQueryCommon.js" charset="UTF-8" type="text/javascript"></script>
<script src="../../js/synthesisQuery/synthesisQueryAjax.js" charset="UTF-8" type="text/javascript"></script>
</html> </html>

View File

@ -22,7 +22,7 @@
<div class="layui-form-item layout"> <div class="layui-form-item layout">
<div class="layui-input-group"> <div class="layui-input-group">
<input style="width: 600px;" type="text" id="keyWord" name="keyWord" placeholder="搜索标题" <input style="width: 600px;" type="text" id="keyWord" name="keyWord" placeholder="搜索标题"
autocomplete="off" class="layui-input" lay-affix="clear"> autocomplete="off" class="layui-input" lay-affix="clear" maxlength="30">
<div class="layui-input-split layui-input-suffix" style="cursor: pointer;background-color: #fff;"> <div class="layui-input-split layui-input-suffix" style="cursor: pointer;background-color: #fff;">
<i class="layui-icon layui-icon-search" onclick="titleSearch()"></i> <i class="layui-icon layui-icon-search" onclick="titleSearch()"></i>
</div> </div>