$(function () { autoFlashHeight(); const EmptyTenderHtml = [ '
', '

还没有标段及目录数据

', '
' ]; function initTenderTree(folderList, tenderList) { tenderTree = []; const folders = folderList; const tenders = tenderList; function makeTenderTree(parent) { if (parent.is_leaf) { parent.children = _.filter(tenders, { folder_id: parent.id }); if (parent.children.length > 0) { parent.is_tender = true; parent.children.forEach((value, index) => { value.level = parent.level + 1; }); } } else { const children = _.filter(folders, { parent_id: parent.id }); parent.children = children; if (children.length > 0) { for (const c of children) { makeTenderTree(c); } } } } const level0Folders = _.filter(folders, { level: 1 }); for (const l of level0Folders) { makeTenderTree(l); tenderTree.push(l); } console.log(tenderTree); } function recursiveGetTenderNodeHtml (node, arr, pid) { const html = []; html.push(''); // 名称 html.push(''); if (node.parent_id !== undefined) { // html.push(' ', node.name); html.push(' ', node.name); } else { html.push(''); html.push(arr.indexOf(node) === arr.length - 1 ? '└' : '├'); html.push(''); //html.push('', node[c.field], ''); html.push('', node.name, ''); if (node.have_notice){ html.push(''); } } html.push(''); // 创建人 html.push('', node.user_name ? node.user_name : '', ''); // 创建时间 html.push('', node.in_time && node.parent_id === undefined ? moment(node.in_time).format('YYYY-MM-DD HH:mm:ss') : '', ''); // 审批流程 html.push(''); if (node.parent_id === undefined && auditPermission.admin && (node.uid === uid || is_admin)) { html.push('设置'); } html.push(''); // 操作 html.push(''); if (auditPermission.admin && (node.uid === uid || is_admin || node.parent_id !== undefined)) { html.push(''); } html.push(''); html.push(''); if (node.children) { for (const c of node.children) { html.push(recursiveGetTenderNodeHtml(c, node.children, node.sort_id)); } } return html.join(''); } // 根据TenderTree数据获取Html代码 function getTenderTreeHtml () { if (tenderTree.length > 0) { const html = []; html.push(''); html.push('', ''); html.push(''); html.push(''); html.push(''); html.push(''); html.push(''); html.push('', ''); parentId = 0; for (const t of tenderTree) { html.push(recursiveGetTenderNodeHtml(t, tenderTree, '')); } html.push('
', '名称', '', '创建人', '', '创建时间', '', '标段设置', '', '操作', '
'); return html.join(''); } else { return EmptyTenderHtml.join(''); } } function makeList(folderList, tenderList) { initTenderTree(folderList, tenderList); $('.c-body').html(getTenderTreeHtml()); setTopTr(); $('[data-toggle="tooltip"]').tooltip() } // 首次加载展示目录 postData('/payment/list/load', {}, function (result) { allFolders = result.folderList; allTenders = result.tenderList; makeList(result.folderList, result.tenderList); }); $('body').on('click', '.show_new_folder_btn', function () { if (parseInt($(this).attr('data-parentId')) === 0) { $('#parent_folder').hide(); $('#parent_folder_name').val(''); $('#add-folder').find('.modal-title').text('新建目录'); $('#new_folder_name').siblings('label').text('目录名称'); $('#parent_id').val(0); } else { $('#parent_folder').show(); $('#parent_folder_name').val($(this).attr('data-parentName')); $('#add-folder').find('.modal-title').text('新建子目录'); $('#new_folder_name').siblings('label').text('子目录名称'); $('#parent_id').val($(this).attr('data-parentId')); } }); function checkNameValid(_this) { const name = _.trim(_this.val()); if(name === '') { _this.addClass('is-invalid'); _this.siblings('.invalid-feedback').text('请输入名称'); return false; } if(name.length > 100) { _this.addClass('is-invalid'); _this.siblings('.invalid-feedback').text('名称超过100个字,请缩减名称'); return false; } _this.removeClass('is-invalid'); _this.siblings('.invalid-feedback').text(''); return name; } $('#new_folder_btn').click(function () { const name = checkNameValid($('#new_folder_name')); if (name === false) { return; } postData('/payment/save', { type: 'add-folder', parentId: parseInt($('#parent_id').val()), name }, function (result) { allFolders = result.folderList; allTenders = result.tenderList; makeList(result.folderList, result.tenderList); $('#add-folder').modal('hide'); }) }); $('body').on('click', '.edit_name_btn', function () { const type = $(this).attr('data-type'); const id = parseInt($(this).attr('data-id')); const info = type === 'tender' ? _.find(allTenders, { id }) : _.find(allFolders, { id }); if (!info) { toastr.error('目录或标段不存在'); return; } $('#edit_name_input').val(info.name); $('#edit-name').find('.modal-title').text(type === 'tender' ? '修改标段' : '修改目录'); $('#edit_name_id').val(info.id); $('#edit_name_type').val(type); $('#edit-name').modal('show'); }); $('#edit_name_btn').click(function () { const name = checkNameValid($('#edit_name_input')); if (name === false) { return; } const data = { type: $('#edit_name_type').val(), id: $('#edit_name_id').val(), name, }; postData('/payment/save', { type: 'edit-name', postData: data }, function (result) { allFolders = result.folderList; allTenders = result.tenderList; makeList(result.folderList, result.tenderList); $('#edit-name').modal('hide'); }); }); // 选中行并标记色 $('body').on('click', '.c-body table tr', function () { $('.c-body table tr').removeClass('table-warning'); $(this).addClass('table-warning'); const fid = parseInt($(this).attr('fid')); const folderInfo = _.find(allFolders, { id: fid }); if (auditPermission.admin && folderInfo && folderInfo.is_leaf) { $('#show_new_tender_btn').show(); $('#add_tender_folder_id').val(fid); $('#add_tender_folder_name').val(folderInfo.name); $('#add_tender_name').removeClass('is-invalid'); $('#add_tender_name').siblings('.invalid-feedback').text(''); } else { $('#show_new_tender_btn').hide(); } }); $('body').on('click', '.show_new_tender_btn', function () { const fid = $('.c-body table').find('.table-warning').attr('fid'); if (!fid) { toastr.error('请选中目录'); return; } const folderInfo = _.find(allFolders, { id: parseInt(fid) }); if (!folderInfo || folderInfo.is_leaf === 0) { toastr.error('目录不存在或存在子目录不能新建标段'); return; } $('#add-tender').modal('show'); }); $('#new_tender_btn').click(function () { const name = checkNameValid($('#add_tender_name')); if (name === false) { return; } postData('/payment/save', { type: 'add-tender', folderId: parseInt($('#add_tender_folder_id').val()), name }, function (result) { allFolders = result.folderList; allTenders = result.tenderList; makeList(result.folderList, result.tenderList); $('#add-tender').modal('hide'); }); }); $('body').on('click', '.show_del_btn', function () { const type = $(this).attr('data-type'); const id = parseInt($(this).attr('data-id')); const info = type === 'tender' ? _.find(allTenders, { id }) : _.find(allFolders, { id }); if (!info) { toastr.error('目录或标段不存在'); return; } $('#edit_name_input').val(info.name); $('#del-project').find('.modal-title').text(type === 'tender' ? '删除标段' : '删除目录'); $('#del-project').find('h6 span').text(info.name); $('#del_id').val(info.id); $('#del_type').val(type); $('#del-project').modal('show'); }); $('#del_btn').click(function () { const data = { type: $('#del_type').val(), id: $('#del_id').val(), }; postData('/payment/save', { type: 'del', postData: data }, function (result) { allFolders = result.folderList; allTenders = result.tenderList; makeList(result.folderList, result.tenderList); $('#del-project').modal('hide'); }); }); $(window).resize(setTopTr); // 设置表头固定并动态调整宽度高度 function setTopTr() { for(let item = 0; item < $(".c-body table>thead>tr>th").length; item ++) { $(".c-body table>thead>tr>th").eq(item).outerWidth($(".c-body table>tbody>tr:first").children('td').eq(item).outerWidth()); } $('.c-body table').css('margin-top', $(".c-body table>thead").height() - 4); // $('.c-body table').css('margin-top', -2); } });