From 67a1d9c58a5a927d544e0cfbfa8ca14fbd78c49d Mon Sep 17 00:00:00 2001 From: 18516761980 <4761516tqsxp> Date: 星期一, 30 五月 2022 07:45:54 +0800 Subject: [PATCH] Merge branch 'jkasrs' of http://47.97.1.152:5880/r/zy-asrs into jkasrs --- src/main/java/com/zy/asrs/mapper/ReportQueryMapper.java | 8 src/main/webapp/static/js/report/workCountOut.js | 219 +++++++++++++++++++ src/main/webapp/views/report/viewWorkCountOut.html | 61 +++++ src/main/resources/mapper/ViewStockUseMapper.xml | 27 ++ src/main/java/com/zy/common/web/WcsController.java | 2 src/main/java/com/zy/asrs/entity/ViewWorkCountInView.java | 11 + src/main/webapp/static/js/report/workCountIn.js | 218 +++++++++++++++++++ src/main/java/com/zy/common/CodeBuilder.java | 2 src/main/webapp/views/report/viewWorkCountIn.html | 61 +++++ src/main/java/com/zy/asrs/controller/ReportQueryController.java | 31 ++ 10 files changed, 638 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/zy/asrs/controller/ReportQueryController.java b/src/main/java/com/zy/asrs/controller/ReportQueryController.java index 2ef4733..f2ecc1e 100644 --- a/src/main/java/com/zy/asrs/controller/ReportQueryController.java +++ b/src/main/java/com/zy/asrs/controller/ReportQueryController.java @@ -156,6 +156,37 @@ return R.ok(page); } + /** + * 鏃ュ叆搴撴眹鎬绘煡璇� + * @return + */ + @RequestMapping("/viewWorkCountInList.action") + public R viewWorkCountInList(@RequestParam(defaultValue = "1")Integer curr, + @RequestParam(defaultValue = "10")Integer limit, + @RequestParam Map<String, Object> param){ + List<ViewWorkCountInView> allCountIn = reportQueryMapper.selectWorkCountIn(Integer.valueOf((String) param.get("pageNumber")), Integer.valueOf((String) param.get("pageSize"))); + Integer total = reportQueryMapper.selectWorkCountInTotal(); + Page<ViewWorkCountInView> page = new Page<>(); + page.setRecords(allCountIn); + page.setTotal(total); + return R.ok(page); + } + + /** + * 鏃ュ嚭搴撴眹鎬� + */ + @RequestMapping("/viewWorkCountOutList.action") + public R viewWorkCountOutList(@RequestParam(defaultValue = "1")Integer curr, + @RequestParam(defaultValue = "10")Integer limit, + @RequestParam Map<String, Object> param){ + List<ViewWorkCountInView> allCountIn = reportQueryMapper.selectWorkCountOut(Integer.valueOf((String) param.get("pageNumber")), Integer.valueOf((String) param.get("pageSize"))); + Integer total = reportQueryMapper.selectWorkCountOutTotal(); + Page<ViewWorkCountInView> page = new Page<>(); + page.setRecords(allCountIn); + page.setTotal(total); + return R.ok(page); + } + //excel瀵煎嚭 @RequestMapping("/viewWorkInExport.action") @ManagerAuth(memo = "鏃ュ叆搴撴槑缁嗙粺璁″鍑�") diff --git a/src/main/java/com/zy/asrs/entity/ViewWorkCountInView.java b/src/main/java/com/zy/asrs/entity/ViewWorkCountInView.java new file mode 100644 index 0000000..8a8fd87 --- /dev/null +++ b/src/main/java/com/zy/asrs/entity/ViewWorkCountInView.java @@ -0,0 +1,11 @@ +package com.zy.asrs.entity; + +import lombok.Data; + +@Data +public class ViewWorkCountInView { + private String oneday; + private String matnr; + private String maktx; + private String anfme; +} diff --git a/src/main/java/com/zy/asrs/mapper/ReportQueryMapper.java b/src/main/java/com/zy/asrs/mapper/ReportQueryMapper.java index cff29c5..d3dce46 100644 --- a/src/main/java/com/zy/asrs/mapper/ReportQueryMapper.java +++ b/src/main/java/com/zy/asrs/mapper/ReportQueryMapper.java @@ -68,4 +68,12 @@ @Select("select ymd,SUM(sto_qty) inqty,SUM(ret_qty) outqty from asr_sta_inout_view " + "where ymd>CONVERT(char(10), DATEADD(DAY,-12,GETDATE()), 120) group by ymd order by ymd") public List<WorkChartAxis> getChartAxis(); + + List<ViewWorkCountInView> selectWorkCountIn(@Param("curr") Integer curr, @Param("limit") Integer limit); + + Integer selectWorkCountInTotal(); + + List<ViewWorkCountInView> selectWorkCountOut(@Param("curr") Integer pageNumber, @Param("limit") Integer pageSize); + + Integer selectWorkCountOutTotal(); } diff --git a/src/main/java/com/zy/common/CodeBuilder.java b/src/main/java/com/zy/common/CodeBuilder.java index 4f7de5f..1e67a86 100644 --- a/src/main/java/com/zy/common/CodeBuilder.java +++ b/src/main/java/com/zy/common/CodeBuilder.java @@ -20,7 +20,7 @@ generator.url="localhost:1433;databasename=jkasrs"; generator.username="sa"; generator.password="sa@123"; - generator.table="man_api_log"; + generator.table="asr_wrkin_count_view"; generator.packagePath="com.zy.asrs"; generator.build(); } diff --git a/src/main/java/com/zy/common/web/WcsController.java b/src/main/java/com/zy/common/web/WcsController.java index e0724b0..de97aac 100644 --- a/src/main/java/com/zy/common/web/WcsController.java +++ b/src/main/java/com/zy/common/web/WcsController.java @@ -93,7 +93,7 @@ default: break; } - + log.info("/pakin/loc/v1:"+dto + "======鎵樼洏鐮�:"+param.getBarcode()); return R.ok().add(dto); } diff --git a/src/main/resources/mapper/ViewStockUseMapper.xml b/src/main/resources/mapper/ViewStockUseMapper.xml index 5cfb94c..7f04cf5 100644 --- a/src/main/resources/mapper/ViewStockUseMapper.xml +++ b/src/main/resources/mapper/ViewStockUseMapper.xml @@ -50,5 +50,32 @@ ]]> </where> </select> + <select id="selectWorkCountIn" resultType="com.zy.asrs.entity.ViewWorkCountInView"> + SELECT * + FROM ( + select + ROW_NUMBER() OVER(Order by a.oneday desc) as row + , * + FROM( + SELECT * FROM asr_wrkin_count_view) a ) b + WHERE 1=1 and b.row between ((#{curr}-1)*#{limit}+1) and (#{curr}*#{limit}) + + </select> + <select id="selectWorkCountInTotal" resultType="java.lang.Integer"> + SELECT COUNT(*) FROM asr_wrkin_count_view + </select> + <select id="selectWorkCountOut" resultType="com.zy.asrs.entity.ViewWorkCountInView"> + SELECT * + FROM ( + select + ROW_NUMBER() OVER(Order by a.oneday desc) as row + , * + FROM( + SELECT * FROM asr_wrkout_count_view) a ) b + WHERE 1=1 and b.row between ((#{curr}-1)*#{limit}+1) and (#{curr}*#{limit}) + </select> + <select id="selectWorkCountOutTotal" resultType="java.lang.Integer"> + SELECT COUNT(*) FROM asr_wrkout_count_view + </select> </mapper> \ No newline at end of file diff --git a/src/main/webapp/static/js/report/workCountIn.js b/src/main/webapp/static/js/report/workCountIn.js new file mode 100644 index 0000000..d3fa391 --- /dev/null +++ b/src/main/webapp/static/js/report/workCountIn.js @@ -0,0 +1,218 @@ +var pageCurr; +function getCol() { + var cols = [ + {field: 'oneday', align: 'center', title: '鍏ュ簱鏃ユ湡', width: 200} + ,{field: 'matnr', align: 'center',title: '鍟嗗搧缂栧彿'} + ,{field: 'maktx', align: 'center',title: '鍟嗗搧鍚嶇О'} + ,{field: 'anfme', align: 'center',title: '鏁伴噺'} + ]; + + return cols; +} + +layui.use(['table','laydate', 'form'], function(){ + var table = layui.table; + var $ = layui.jquery; + var layer = layui.layer; + var layDate = layui.laydate; + var form = layui.form; + + + // 鏁版嵁娓叉煋 + tableIns = table.render({ + elem: '#workIn', + headers: {token: localStorage.getItem('token')}, + url: baseUrl+'/report/viewWorkCountInList.action', + page: true, + limit: 16, + limits: [16, 30, 50, 100, 200, 500], + toolbar: '#toolbar', + cellMinWidth: 50, + cols: [getCol()], + request: { + pageName: 'pageNumber', + limitName: 'pageSize' + }, + parseData: function (res) { + console.log(res); + return { + 'code': res.code, + 'msg': res.msg, + 'count': res.data.total, + 'data': res.data.records + } + }, + response: { + statusCode: 200 + }, + done: function(res, curr, count) { + if (res.code === 403) { + top.location.href = baseUrl+"/"; + } + pageCurr=curr; + limit(); + } + }); + + // 鐩戝惉鎺掑簭浜嬩欢 + table.on('sort(workIn)', function (obj) { + var searchData = {}; + $.each($('#search-box [name]').serializeArray(), function() { + searchData[this.name] = this.value; + }); + searchData['orderByField'] = obj.field; + searchData['orderByType'] = obj.type; + tableIns.reload({ + where: searchData, + page: { + curr: 1 + }, + done: function (res, curr, count) { + if (res.code === 403) { + top.location.href = baseUrl+"/"; + } + pageCurr=curr; + limit(); + } + }); + }); + + // 鐩戝惉澶村伐鍏锋爮浜嬩欢 + table.on('toolbar(workIn)', function (obj) { + var checkStatus = table.checkStatus(obj.config.id); + switch(obj.event) { + case 'exportData': + layer.confirm('纭畾瀵煎嚭Excel鍚�', {shadeClose: true}, function(){ + var titles=[]; + var fields=[]; + obj.config.cols[0].map(function (col) { + if (col.type === 'normal' && col.hide === false && col.toolbar == null) { + titles.push(col.title); + fields.push(col.field); + } + }); + var exportData = {}; + $.each($('#search-box [name]').serializeArray(), function() { + exportData[this.name] = this.value; + }); + var param = { + fields: fields, + exportData: exportData + }; + $.ajax({ + url: baseUrl+"/report/viewWorkInExport.action", + headers: {'token': localStorage.getItem('token')}, + data: JSON.stringify(param), + dataType:'json', + contentType:'application/json;charset=UTF-8', + method: 'POST', + success: function (res) { + layer.closeAll(); + if (res.code === 200) { + table.exportFile(titles,res.data,'xls'); + } else if (res.code === 403) { + top.location.href = baseUrl+"/"; + } else { + layer.msg(res.msg) + } + } + }); + }); + break; + } + }); + + // 鎼滅储鏍忔悳绱簨浠� + form.on('submit(search)', function (data) { + pageCurr = 1; + tableReload(false); + }); + // 鎼滅储鏍忛噸缃簨浠� + form.on('submit(reset)', function (data) { + pageCurr = 1; + clearFormVal($('#search-box')); + tableReload(false); + }); + layDate.render({ + elem: '.layui-laydate-range' + ,type: 'datetime' + ,range: true + }); +}); + +// 鍏抽棴鍔ㄤ綔 +$(document).on('click','#data-detail-close', function () { + parent.layer.closeAll(); +}); + +function tableReload(child) { + var searchData = {}; + $.each($('#search-box [name]').serializeArray(), function() { + searchData[this.name] = this.value; + }); + (child ? parent.tableIns : tableIns).reload({ + where: searchData, + page: { + curr: pageCurr + }, + done: function (res, curr, count) { + if (res.code === 403) { + top.location.href = baseUrl+"/"; + } + pageCurr=curr; + if (res.data.length === 0 && count !== 0) { + tableIns.reload({ + where: searchData, + page: { + curr: pageCurr-1 + } + }); + pageCurr -= 1; + } + limit(child); + } + }); +} + +function setFormVal(el, data, showImg) { + for (var val in data) { + var find = el.find(":input[id='" + val + "']"); + find.val(data[val]); + if (showImg){ + var next = find.next(); + if (next.get(0)){ + if (next.get(0).localName === "img") { + find.hide(); + next.attr("src", data[val]); + next.show(); + } + } + } + } +} + +function clearFormVal(el) { + $(':input', el) + .val('') + .removeAttr('checked') + .removeAttr('selected'); +} + +function detailScreen(index) { + var detail = layer.getChildFrame('#data-detail', index); + var height = detail.height()+60; + if (height > ($(window).height()*0.9)) { + height = ($(window).height()*0.9); + } + layer.style(index, { + top: (($(window).height()-height)/3)+"px", + height: height+'px' + }); + $(".layui-layer-shade").remove(); +} + +$('body').keydown(function () { + if (event.keyCode === 13) { + $("#search").click(); + } +}); diff --git a/src/main/webapp/static/js/report/workCountOut.js b/src/main/webapp/static/js/report/workCountOut.js new file mode 100644 index 0000000..1603a81 --- /dev/null +++ b/src/main/webapp/static/js/report/workCountOut.js @@ -0,0 +1,219 @@ +var pageCurr; +function getCol() { + var cols = [ + {field: 'oneday', align: 'center', title: '鍏ュ簱鏃ユ湡', width: 200} + ,{field: 'matnr', align: 'center',title: '鍟嗗搧缂栧彿'} + ,{field: 'maktx', align: 'center',title: '鍟嗗搧鍚嶇О'} + ,{field: 'anfme', align: 'center',title: '鏁伴噺'} + ]; + + return cols; +} + +layui.use(['table','laydate', 'form'], function(){ + var table = layui.table; + var $ = layui.jquery; + var layer = layui.layer; + var layDate = layui.laydate; + var form = layui.form; + + + // 鏁版嵁娓叉煋 + tableIns = table.render({ + elem: '#workOut', + headers: {token: localStorage.getItem('token')}, + url: baseUrl+'/report/viewWorkCountOutList.action', + page: true, + limit: 16, + limits: [16, 30, 50, 100, 200, 500], + toolbar: '#toolbar', + cellMinWidth: 50, + cols: [getCol()], + request: { + pageName: 'pageNumber', + limitName: 'pageSize' + }, + parseData: function (res) { + return { + 'code': res.code, + 'msg': res.msg, + 'count': res.data.total, + 'data': res.data.records + } + }, + response: { + statusCode: 200 + }, + done: function(res, curr, count) { + if (res.code === 403) { + top.location.href = baseUrl+"/"; + } + pageCurr=curr; + limit(); + } + }); + + // 鐩戝惉鎺掑簭浜嬩欢 + table.on('sort(workOut)', function (obj) { + var searchData = {}; + $.each($('#search-box [name]').serializeArray(), function() { + searchData[this.name] = this.value; + }); + searchData['orderByField'] = obj.field; + searchData['orderByType'] = obj.type; + tableIns.reload({ + where: searchData, + page: { + curr: 1 + }, + done: function (res, curr, count) { + if (res.code === 403) { + top.location.href = baseUrl+"/"; + } + pageCurr=curr; + limit(); + } + }); + }); + + // 鐩戝惉澶村伐鍏锋爮浜嬩欢 + table.on('toolbar(workOut)', function (obj) { + var checkStatus = table.checkStatus(obj.config.id); + switch(obj.event) { + case 'exportData': + layer.confirm('纭畾瀵煎嚭Excel鍚�', {shadeClose: true}, function(){ + var titles=[]; + var fields=[]; + obj.config.cols[0].map(function (col) { + if (col.type === 'normal' && col.hide === false && col.toolbar == null) { + titles.push(col.title); + fields.push(col.field); + } + }); + var exportData = {}; + $.each($('#search-box [name]').serializeArray(), function() { + exportData[this.name] = this.value; + }); + var param = { + fields: fields, + exportData: exportData + }; + $.ajax({ + url: baseUrl+"/report/viewWorkOutExport.action", + headers: {'token': localStorage.getItem('token')}, + data: JSON.stringify(param), + dataType:'json', + contentType:'application/json;charset=UTF-8', + method: 'POST', + success: function (res) { + layer.closeAll(); + if (res.code === 200) { + table.exportFile(titles,res.data,'xls'); + } else if (res.code === 403) { + top.location.href = baseUrl+"/"; + } else { + layer.msg(res.msg) + } + } + }); + }); + break; + } + }); + + // 鎼滅储鏍忔悳绱簨浠� + form.on('submit(search)', function (data) { + pageCurr = 1; + tableReload(false); + }); + + // 鎼滅储鏍忛噸缃簨浠� + form.on('submit(reset)', function (data) { + pageCurr = 1; + clearFormVal($('#search-box')); + tableReload(false); + }); + layDate.render({ + elem: '.layui-laydate-range' + ,type: 'datetime' + ,range: true + }); + +}); + +// 鍏抽棴鍔ㄤ綔 +$(document).on('click','#data-detail-close', function () { + parent.layer.closeAll(); +}); + +function tableReload(child) { + var searchData = {}; + $.each($('#search-box [name]').serializeArray(), function() { + searchData[this.name] = this.value; + }); + (child ? parent.tableIns : tableIns).reload({ + where: searchData, + page: { + curr: pageCurr + }, + done: function (res, curr, count) { + if (res.code === 403) { + top.location.href = baseUrl+"/"; + } + pageCurr=curr; + if (res.data.length === 0 && count !== 0) { + tableIns.reload({ + where: searchData, + page: { + curr: pageCurr-1 + } + }); + pageCurr -= 1; + } + limit(child); + } + }); +} + +function setFormVal(el, data, showImg) { + for (var val in data) { + var find = el.find(":input[id='" + val + "']"); + find.val(data[val]); + if (showImg){ + var next = find.next(); + if (next.get(0)){ + if (next.get(0).localName === "img") { + find.hide(); + next.attr("src", data[val]); + next.show(); + } + } + } + } +} + +function clearFormVal(el) { + $(':input', el) + .val('') + .removeAttr('checked') + .removeAttr('selected'); +} + +function detailScreen(index) { + var detail = layer.getChildFrame('#data-detail', index); + var height = detail.height()+60; + if (height > ($(window).height()*0.9)) { + height = ($(window).height()*0.9); + } + layer.style(index, { + top: (($(window).height()-height)/3)+"px", + height: height+'px' + }); + $(".layui-layer-shade").remove(); +} + +$('body').keydown(function () { + if (event.keyCode === 13) { + $("#search").click(); + } +}); diff --git a/src/main/webapp/views/report/viewWorkCountIn.html b/src/main/webapp/views/report/viewWorkCountIn.html new file mode 100644 index 0000000..0c6c7d8 --- /dev/null +++ b/src/main/webapp/views/report/viewWorkCountIn.html @@ -0,0 +1,61 @@ +<!DOCTYPE html> +<html lang="en"> +<head> + <meta charset="utf-8"> + <title></title> + <meta name="renderer" content="webkit"> + <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> + <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1"> + <link rel="stylesheet" href="../../static/layui/css/layui.css" media="all"> + <link rel="stylesheet" href="../../static/css/cool.css" media="all"> + <link rel="stylesheet" href="../../static/css/common.css" media="all"> + <style> + #btn-export { + margin-top: 10px; + } + </style> +</head> +<body> + +<!-- 鎼滅储鏍� --> +<!--<div id="search-box" class="layui-form layui-card-header">--> +<!-- <div class="layui-inline">--> +<!-- <div class="layui-input-inline">--> +<!-- <input class="layui-input" type="text" name="loc_no" placeholder="搴撲綅鍙�" autocomplete="off">--> +<!-- </div>--> +<!-- </div>--> +<!-- <div class="layui-inline">--> +<!-- <div class="layui-input-inline">--> +<!-- <input class="layui-input" type="text" name="matnr" placeholder="鍟嗗搧缂栧彿" autocomplete="off">--> +<!-- </div>--> +<!-- </div>--> +<!-- <div class="layui-inline" style="width: 300px">--> +<!-- <div class="layui-input-inline">--> +<!-- <input class="layui-input layui-laydate-range" name="query_date" type="text" placeholder="鍏ュ簱璧峰鏃堕棿 - 鍏ュ簱缁堟鏃堕棿" autocomplete="off" style="width: 300px">--> +<!-- </div>--> +<!-- </div>--> +<!-- <div id="data-search-btn" class="layui-btn-container layui-form-item">--> +<!-- <button id="search" class="layui-btn layui-btn-primary layui-btn-radius" lay-submit lay-filter="search">鎼滅储</button>--> +<!-- <button id="reset" class="layui-btn layui-btn-primary layui-btn-radius" lay-submit lay-filter="reset">閲嶇疆</button>--> +<!-- </div>--> +<!--</div>--> + +<!-- 琛ㄦ牸 --> +<table class="layui-hide" id="workIn" lay-filter="workIn"></table> +<script type="text/html" id="toolbar"> + <div class="layui-btn-container"> +<!-- <button class="layui-btn layui-btn-primary layui-btn-sm" id="btn-export" lay-event="exportData" >瀵煎嚭</button>--> + </div> +</script> + +<script type="text/html" id="operate"> +</script> + +<script type="text/javascript" src="../../static/js/jquery/jquery-3.3.1.min.js"></script> +<script type="text/javascript" src="../../static/layui/layui.js" charset="utf-8"></script> +<script type="text/javascript" src="../../static/js/common.js" charset="utf-8"></script> +<script type="text/javascript" src="../../static/js/cool.js" charset="utf-8"></script> +<script type="text/javascript" src="../../static/js/report/workCountIn.js" charset="utf-8"></script> +</body> +</html> + diff --git a/src/main/webapp/views/report/viewWorkCountOut.html b/src/main/webapp/views/report/viewWorkCountOut.html new file mode 100644 index 0000000..65a7ff8 --- /dev/null +++ b/src/main/webapp/views/report/viewWorkCountOut.html @@ -0,0 +1,61 @@ +<!DOCTYPE html> +<html lang="en"> +<head> + <meta charset="utf-8"> + <title></title> + <meta name="renderer" content="webkit"> + <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> + <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1"> + <link rel="stylesheet" href="../../static/layui/css/layui.css" media="all"> + <link rel="stylesheet" href="../../static/css/cool.css" media="all"> + <link rel="stylesheet" href="../../static/css/common.css" media="all"> + <style> + #btn-export { + margin-top: 10px; + } + </style> +</head> +<body> + +<!-- 鎼滅储鏍� --> +<!--<div id="search-box" class="layui-form layui-card-header">--> +<!-- <div class="layui-inline">--> +<!-- <div class="layui-input-inline">--> +<!-- <input class="layui-input" type="text" name="loc_no" placeholder="搴撲綅鍙�" autocomplete="off">--> +<!-- </div>--> +<!-- </div>--> +<!-- <div class="layui-inline">--> +<!-- <div class="layui-input-inline">--> +<!-- <input class="layui-input" type="text" name="matnr" placeholder="鍟嗗搧缂栧彿" autocomplete="off">--> +<!-- </div>--> +<!-- </div>--> +<!-- <div class="layui-inline" style="width: 300px">--> +<!-- <div class="layui-input-inline">--> +<!-- <input class="layui-input layui-laydate-range" name="query_date" type="text" placeholder="璧峰鏃堕棿 - 缁堟鏃堕棿" autocomplete="off" style="width: 300px">--> +<!-- </div>--> +<!-- </div>--> +<!-- <div id="data-search-btn" class="layui-btn-container layui-form-item">--> +<!-- <button id="search" class="layui-btn layui-btn-primary layui-btn-radius" lay-submit lay-filter="search">鎼滅储</button>--> +<!-- <button id="reset" class="layui-btn layui-btn-primary layui-btn-radius" lay-submit lay-filter="reset">閲嶇疆</button>--> +<!-- </div>--> +<!--</div>--> + +<!-- 琛ㄦ牸 --> +<table class="layui-hide" id="workOut" lay-filter="workOut"></table> +<script type="text/html" id="toolbar"> + <div class="layui-btn-container"> +<!-- <button class="layui-btn layui-btn-primary layui-btn-sm" id="btn-export" lay-event="exportData" >瀵煎嚭</button>--> + </div> +</script> + +<script type="text/html" id="operate"> +</script> + +<script type="text/javascript" src="../../static/js/jquery/jquery-3.3.1.min.js"></script> +<script type="text/javascript" src="../../static/layui/layui.js" charset="utf-8"></script> +<script type="text/javascript" src="../../static/js/common.js" charset="utf-8"></script> +<script type="text/javascript" src="../../static/js/cool.js" charset="utf-8"></script> +<script type="text/javascript" src="../../static/js/report/workCountOut.js" charset="utf-8"></script> +</body> +</html> + -- Gitblit v1.9.1