|
@@ -204,7 +204,7 @@
|
|
|
</div>
|
|
|
<div class="modal-footer">
|
|
|
<% if ( stg_id > 0 && pageShow !== null && parseInt(pageShow.openSign) === 1) { %>
|
|
|
- <button type="button" id="btn_cross_tender" class="btn btn-sm btn-link float-left" data-dismiss="modal" data-toggle="modal" data-target="#batch-eSignature" id="batch-setupProjSignature" onclick="rptSignatureHelper.resetESignature(zTreeOprObj.currentRptPageRst, 'batch-eSignatureBodyDiv'); buildTendersTree();">批量设置其他标段</button>
|
|
|
+ <button type="button" id="btn_cross_tender" class="btn btn-sm btn-link float-left" data-dismiss="modal" data-toggle="modal" data-target="#batch-eSignature" id="batch-setupProjSignature" onclick="rptSignatureHelper.resetESignature(zTreeOprObj.currentRptPageRst, 'batch-eSignatureBodyDiv'); buildTendersTree_Ex();">批量设置其他标段</button>
|
|
|
<% } %>
|
|
|
<% if (stg_id === -300) { %>
|
|
|
<button type="button" id="btn_cross_tender" class="btn btn-sm btn-link float-left" data-dismiss="modal" data-toggle="modal" data-target="#batch-eSignature" id="batch-setupChangeSignature" onclick="rptSignatureHelper.resetESignature(zTreeOprObj.currentRptPageRst, 'batch-eSignatureBodyDiv', true); buildChangeTree();">批量设置其他变更令</button>
|
|
@@ -778,16 +778,165 @@
|
|
|
|
|
|
let SELECTED_TENDERS = [];
|
|
|
|
|
|
+ function buildTendersTree_Ex() {
|
|
|
+ // 这里直接从 TENDER_SOURCE_TREE 对象获取数据,无需绕大弯(从category那里重复整理)
|
|
|
+ const treeCache = [];
|
|
|
+ const tmpCacheArr = [];
|
|
|
+ const _getTenderByTid = (tid) => {
|
|
|
+ let rst = null;
|
|
|
+ for (const tender of tenders) {
|
|
|
+ if (tender.id === tid) {
|
|
|
+ rst = tender;
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return rst;
|
|
|
+ };
|
|
|
+ const _createTenderItem = (tid) => {
|
|
|
+ const tender = _getTenderByTid(tid);
|
|
|
+ let rst = {
|
|
|
+ name: tender.name,
|
|
|
+ id : -1,
|
|
|
+ cid : -1,
|
|
|
+ tender_id: tender.id,
|
|
|
+ last_stage: tender.lastStage?.order || -1,
|
|
|
+ last_stage_id: tender.lastStage?.id || -1,
|
|
|
+ report_id: zTreeOprObj.currentNode.refId,
|
|
|
+ signature: '',
|
|
|
+ items: [],
|
|
|
+ isParent: false
|
|
|
+ }
|
|
|
+ return rst;
|
|
|
+ };
|
|
|
+ const _createItems = function (parentItems, parentNode, node) {
|
|
|
+ if (node.cid) {
|
|
|
+ // node是category目录
|
|
|
+ let item = {
|
|
|
+ name: node.name,
|
|
|
+ id : node.tmt_id,
|
|
|
+ cid : node.cid,
|
|
|
+ items: [],
|
|
|
+ isParent: true
|
|
|
+ };
|
|
|
+ parentItems.push(item);
|
|
|
+ if (node.children && node.children.length > 0) {
|
|
|
+ node.children.forEach(subNode => {
|
|
|
+ _createItems(item.items, item, subNode);
|
|
|
+ });
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ // node是tender数据
|
|
|
+ let tdItem = _createTenderItem(node.tid); //标段节点
|
|
|
+ tmpCacheArr.push([parentNode, tdItem]);
|
|
|
+ }
|
|
|
+ };
|
|
|
+ TENDER_SOURCE_TREE.children.forEach(tdNode => {
|
|
|
+ _createItems(treeCache, null, tdNode); // 因TENDER_SOURCE_TREE是完整的,可以一次性处理所有相关数据
|
|
|
+ });
|
|
|
+ // 无需判断是否有用户已设置的分类
|
|
|
+ for (const pairItem of tmpCacheArr) {
|
|
|
+ pairItem[0].items.push(pairItem[1]);
|
|
|
+ }
|
|
|
+ //4. 剔除空items的项
|
|
|
+ const _removeEmptyItems = function (parentItem) {
|
|
|
+ let rst = false;
|
|
|
+ if (parentItem.items.length === 0) {
|
|
|
+ if (parentItem.isParent) {
|
|
|
+ rst = true;
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ for (let idx = parentItem.items.length - 1; idx >= 0; idx--) {
|
|
|
+ if (_removeEmptyItems(parentItem.items[idx])) {
|
|
|
+ parentItem.items.splice(idx, 1);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ rst = parentItem.items.length === 0;
|
|
|
+ }
|
|
|
+ return rst;
|
|
|
+ }
|
|
|
+ for (let idx = treeCache.length - 1; idx >= 0; idx--) {
|
|
|
+ if (_removeEmptyItems(treeCache[idx])) {
|
|
|
+ treeCache.splice(idx, 1);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //还要请求各标段的原签名数据
|
|
|
+ const params = {};
|
|
|
+ params.selectedTenders = [];
|
|
|
+ const _getTenderRelatedInfos = (parentItem, rstArr) => {
|
|
|
+ if (parentItem.items.length === 0) {
|
|
|
+ if (!parentItem.isParent) {
|
|
|
+ rstArr.push([parentItem.tender_id, parentItem.last_stage_id, parentItem.report_id]);
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ for (let idx = parentItem.items.length - 1; idx >= 0; idx--) {
|
|
|
+ _getTenderRelatedInfos(parentItem.items[idx], rstArr);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ };
|
|
|
+ const _addHint = (parentItem, relArr) => {
|
|
|
+ if (parentItem.items.length === 0) {
|
|
|
+ if (!parentItem.isParent) {
|
|
|
+ for (const rel of relArr) {
|
|
|
+ if (rel.tender_id === parentItem.tender_id && rel.sid === parentItem.last_stage_id && rel.rpt_id === parentItem.report_id) {
|
|
|
+ let hintStr = '';
|
|
|
+ if (rel.rel_content instanceof Array) {
|
|
|
+ for (let idx = 0; idx < rel.rel_content.length; idx++) {
|
|
|
+ const dtlRel = rel.rel_content[idx];
|
|
|
+ if (idx > 0) {
|
|
|
+ hintStr = hintStr + '、';
|
|
|
+ }
|
|
|
+ hintStr = hintStr + '(' + dtlRel.signature_name + ')' + dtlRel.user_name;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ parentItem.signature = hintStr;
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ for (let idx = parentItem.items.length - 1; idx >= 0; idx--) {
|
|
|
+ _addHint(parentItem.items[idx], relArr);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ };
|
|
|
+ for (let idx = treeCache.length - 1; idx >= 0; idx--) {
|
|
|
+ _getTenderRelatedInfos(treeCache[idx], params.selectedTenders);
|
|
|
+ }
|
|
|
+ $.bootstrapLoading.start();
|
|
|
+ CommonAjax.postXsrfEx("/tender/report_api/getMultiRoleRelationships", params, 30000, true, getCookie('csrfToken_j'),
|
|
|
+ function(result){
|
|
|
+ $.bootstrapLoading.end();
|
|
|
+ let relArr = result.data;
|
|
|
+ for (const rel of relArr) {
|
|
|
+ rel.rel_content = JSON.parse(rel.rel_content);
|
|
|
+ }
|
|
|
+ console.log(relArr);
|
|
|
+ //5. 加hint
|
|
|
+ for (let idx = treeCache.length - 1; idx >= 0; idx--) {
|
|
|
+ _addHint(treeCache[idx], relArr);
|
|
|
+ }
|
|
|
+ //6. 建树
|
|
|
+ _buildTenderTree('batch_tenders_individual', treeCache);
|
|
|
+ }, function(err){
|
|
|
+ $.bootstrapLoading.end();
|
|
|
+ }, function(ex){
|
|
|
+ $.bootstrapLoading.end();
|
|
|
+ }
|
|
|
+ );
|
|
|
+ }
|
|
|
+
|
|
|
function buildTendersTree() {
|
|
|
+ // return false; // 暂时跳出
|
|
|
let sortedCat = [];
|
|
|
SELECTED_TENDERS = [];
|
|
|
for (const cat of category) {
|
|
|
- if (cat.level > 0) {
|
|
|
+ if (cat.level > 0) { // 临时加true条件
|
|
|
sortedCat.push(cat);
|
|
|
}
|
|
|
}
|
|
|
for (const tender of tenders) {
|
|
|
if (tender.lastStage !== undefined && tender.lastStage !== null && tender.category && tender.category.length === sortedCat.length) {
|
|
|
+ // if (tender.lastStage !== undefined && tender.lastStage !== null && tender.category && tender.category.length > 0) {
|
|
|
for (let cat of tender.category) {
|
|
|
for (let cIdx = 0; cIdx < sortedCat.length; cIdx++) {
|
|
|
if (cat.cid === sortedCat[cIdx].id) {
|
|
@@ -801,7 +950,7 @@
|
|
|
});
|
|
|
}
|
|
|
}
|
|
|
- let treeCache = [];
|
|
|
+ const treeCache = [];
|
|
|
//1. 选择用户已设置的分类
|
|
|
if (sortedCat.length > 0) {
|
|
|
sortedCat.sort(function(i1, i2){
|