|
@@ -317,14 +317,135 @@
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
+<!--管理通用报表-->
|
|
|
|
+<div class="modal fade" id="man-c" data-backdrop="static">
|
|
|
|
+ <div class="modal-dialog" role="document">
|
|
|
|
+ <div class="modal-content">
|
|
|
|
+ <div class="modal-header">
|
|
|
|
+ <h5 class="modal-title">管理通用报表</h5>
|
|
|
|
+ </div>
|
|
|
|
+ <div class="modal-body">
|
|
|
|
+ <div class="modal-height-500" style="overflow: auto;">
|
|
|
|
+ <table class="table table-sm table-bordered" id="report_cust_group_common">
|
|
|
|
+ </table>
|
|
|
|
+ </div>
|
|
|
|
+ </div>
|
|
|
|
+ <div class="modal-footer">
|
|
|
|
+ <button type="button" class="btn btn-secondary" data-dismiss="modal" onclick="revertCustRptCfg();">关闭</button>
|
|
|
|
+ <!--有结果出现添加-->
|
|
|
|
+ <button type="button" class="btn btn-primary" data-dismiss="modal" onclick="updateCustRptCfg()">确认</button>
|
|
|
|
+ </div>
|
|
|
|
+ </div>
|
|
|
|
+ </div>
|
|
|
|
+</div>
|
|
|
|
|
|
<script>
|
|
<script>
|
|
zTreeOprObj.getCustomerCfg();
|
|
zTreeOprObj.getCustomerCfg();
|
|
zTreeOprObj.iniFontCfgDom(CUST_CFG);
|
|
zTreeOprObj.iniFontCfgDom(CUST_CFG);
|
|
|
|
+ buildCommonCustRpt();
|
|
|
|
|
|
function searchAccount() {
|
|
function searchAccount() {
|
|
if (event.keyCode == 13) {
|
|
if (event.keyCode == 13) {
|
|
rptSignatureHelper.buildSelectableAccount(this);
|
|
rptSignatureHelper.buildSelectableAccount(this);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+ function buildCommonCustRpt() {
|
|
|
|
+ //CUST_TREE_NODES
|
|
|
|
+ let tbDom = $("#report_cust_group_common");
|
|
|
|
+ tbDom.empty();
|
|
|
|
+ tbDom.append('<tr><th>类别</th><th>包含报表</th><th>显示</th></tr>');
|
|
|
|
+ let _countAvailableTpls = function (tItem) {
|
|
|
|
+ let rst = 0;
|
|
|
|
+ if (tItem.nodeType === 1 && tItem.items && tItem.items.length > 0) {
|
|
|
|
+ for (const dItem of tItem.items) {
|
|
|
|
+ if (dItem.nodeType === 2) {
|
|
|
|
+ if (dItem.released) rst++;
|
|
|
|
+ } else {
|
|
|
|
+ rst += _countAvailableTpls(dItem);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ return rst;
|
|
|
|
+ };
|
|
|
|
+ let _pushRptLine = function (rptItem, level) {
|
|
|
|
+ if (rptItem.nodeType === 1) {
|
|
|
|
+ let amt = _countAvailableTpls(rptItem);
|
|
|
|
+ let classStr = '';
|
|
|
|
+ if (level > 0) {
|
|
|
|
+ classStr = 'pl-' + (level + 3);
|
|
|
|
+ }
|
|
|
|
+ tbDom.append('<tr><td class="' + classStr + '">' + rptItem.name + '</td><td>' + amt + '</td><td></td></tr>');
|
|
|
|
+ if (rptItem.items && rptItem.items.length > 0) {
|
|
|
|
+ for (const subItem of rptItem.items) {
|
|
|
|
+ _pushRptLine(subItem, level + 1);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ let TplAmts = [];
|
|
|
|
+ for (const topItem of ORG_TOP_TREE_NODES[1].items) {
|
|
|
|
+ TplAmts.push(_countAvailableTpls(topItem));
|
|
|
|
+ let checkedStr = (CUST_TREE_NODES.common.indexOf(topItem.name) >= 0) ? ' checked' : '';
|
|
|
|
+ //let checkedStr = (CUST_TREE_NODES.length > 0) ? ' checked' : '';
|
|
|
|
+ tbDom.append('<tr><td>' + topItem.name + '</td><td>' + TplAmts[TplAmts.length - 1] + '</td><td><input onchange="changeFolder(this, true)" hiddenval="' + topItem.name + '" type="checkbox"' + checkedStr + '></td></tr>');
|
|
|
|
+ if (topItem.items && topItem.items.length > 0) {
|
|
|
|
+ for (const subItem of topItem.items) {
|
|
|
|
+ _pushRptLine(subItem, 1);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ function updateCustRptCfg(){
|
|
|
|
+ let params = {};
|
|
|
|
+ params.nodeItems = CUST_TREE_NODES;
|
|
|
|
+ CommonAjax.postXsrfEx("/tender/report_api/updateCustNode", params, 60000, true, getCookie('csrfToken'),
|
|
|
|
+ function(result){
|
|
|
|
+ try {
|
|
|
|
+ // console.log(result);
|
|
|
|
+ ORG_CUST_TREE_NODES.common = JSON.parse(JSON.stringify(CUST_TREE_NODES.common));
|
|
|
|
+ //刷新报表模板树
|
|
|
|
+ TOP_TREE_NODES = JSON.parse(JSON.stringify(ORG_TOP_TREE_NODES));
|
|
|
|
+ // 移除未被选择的模板
|
|
|
|
+ for (let rIdx = TOP_TREE_NODES[1].items.length - 1; rIdx >= 0; rIdx--) {
|
|
|
|
+ if (CUST_TREE_NODES.common.indexOf(TOP_TREE_NODES[1].items[rIdx].name) < 0) {
|
|
|
|
+ TOP_TREE_NODES[1].items.splice(rIdx, 1);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ zTreeOprObj.getReportTemplateTree();
|
|
|
|
+ } catch(err) {
|
|
|
|
+ }
|
|
|
|
+ }, function(err){
|
|
|
|
+ // hintBox.unWaitBox();
|
|
|
|
+ }, function(ex){
|
|
|
|
+ // hintBox.unWaitBox();
|
|
|
|
+ }
|
|
|
|
+ );
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ function revertCustRptCfg(){
|
|
|
|
+ CUST_TREE_NODES.common = JSON.parse(JSON.stringify(ORG_CUST_TREE_NODES.common));
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ function changeFolder(dom, isCommon) {
|
|
|
|
+ let idx = CUST_TREE_NODES.common.indexOf(dom.attributes['hiddenval'].value);
|
|
|
|
+ if (dom.checked) {
|
|
|
|
+ if (isCommon) {
|
|
|
|
+ if (idx < 0) {
|
|
|
|
+ CUST_TREE_NODES.common.push(dom.attributes['hiddenval'].value);
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ //保留定制报表分支
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ if (isCommon) {
|
|
|
|
+ if (idx >= 0) {
|
|
|
|
+ CUST_TREE_NODES.common.splice(idx, 1);
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ //保留定制报表分支
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
</script>
|
|
</script>
|