'use strict'; /** * * * @author Ellisran * @date 2020/10/09 * @version */ const tenderTree = []; let parentId = 0; let selects; // 查询方法 function findNode (key, value, arr) { for (const a of arr) { if (a[key] && a[key] === value) { return a; } } } // 初始化TenderTree数据 function initTenderTree () { const levelCategory = category.filter(function (c) { return c.level && c.level > 0; }); function findCategoryNode(cid, value, array) { for (const a of array) { if (a.cid === cid && a.vid === value) { return a; } } } function getCategoryNode(category, value, parent, i = null) { const array = parent ? parent.children : tenderTree; let cate = findCategoryNode(category.id, value, array); if (!cate) { const cateValue = findNode('id', value, category.value); if (!cateValue) return null; cate = { cid: category.id, vid: value, name: cateValue.value, children: [], level: i ? i : category.level, sort_id: ++parentId, sort: cateValue.sort, }; array.push(cate); } return cate; } function loadTenderCategory (tender) { let tenderCategory = null; for (const [index,lc] of levelCategory.entries()) { const tenderCate = findNode('cid', lc.id, tender.category); if (tenderCate) { tenderCategory = getCategoryNode(lc, tenderCate.value, tenderCategory); } else { if (index === 0 && tender.category) { for (const [i,c] of tender.category.entries()) { const cate = findNode('id', c.cid, category); tenderCategory = getCategoryNode(cate, c.value, tenderCategory, i+1); } } return tenderCategory; } } return tenderCategory; } function calculateTender(tender) { if (tender.lastStage) { tender.gather_tp = ZhCalc.add(tender.lastStage.contract_tp, tender.lastStage.qc_tp); tender.end_contract_tp = ZhCalc.add(tender.lastStage.pre_contract_tp, tender.lastStage.contract_tp); tender.end_qc_tp = ZhCalc.add(tender.lastStage.pre_qc_tp, tender.lastStage.qc_tp); tender.end_gather_tp = ZhCalc.add(tender.end_contract_tp, tender.end_qc_tp); tender.pre_gather_tp = ZhCalc.add(tender.lastStage.pre_contract_tp, tender.lastStage.pre_qc_tp); tender.yf_tp = ZhCalc.add(tender.lastStage.yf_tp); tender.end_yf_tp = ZhCalc.add(tender.lastStage.pre_yf_tp, tender.yf_tp); } } tenderTree.splice(0, tenderTree.length); for (const t of tenders) { calculateTender(t); t.valid = true; delete t.level; if (t.category && levelCategory.length > 0) { const parent = loadTenderCategory(t); if (parent) { t.level = parent.level + 1; parent.children.push(t); } else { tenderTree.push(t); } } else { tenderTree.push(t); } } sortTenderTree(); } function recursiveGetTenderNodeHtml (node, arr, pid, this_code, this_status, aidList = []) { const html = []; html.push(''); // 名称 html.push(''); if (node.cid) { 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, ''); } html.push(''); // 创建人 // html.push('', sp_status_list[node.shenpiInfo[shenpi_type]].name, ''); html.push(''); if (!node.cid) { if(cur_tenderid === node.id) { html.push(sp_status_list[this_status].name); } else { html.push(sp_status_list[node.shenpiInfo[this_code]].name); } } html.push(''); html.push(''); if (!node.cid) { let auditList = []; let tender_status = 1; if(cur_tenderid === node.id) { auditList = aidList; tender_status = this_status; } else { auditList = node.shenpiauditList[this_code]; tender_status = node.shenpiInfo[this_code]; } if(tender_status === sp_status.gdspl || tender_status === sp_status.gdzs) { const nameList = []; if(auditList) { for (const uid of auditList) { const user = _.find(accountList, { id: uid }); nameList.push(user.name); } } // html.push(''); html.push(nameList.length > 0 ? nameList.join('-') : ''); } } html.push(''); html.push(''); if (!node.cid) { html.push(''); } html.push(''); html.push(''); if (node.children) { for (const c of node.children) { html.push(recursiveGetTenderNodeHtml(c, node.children, node.sort_id, this_code, this_status, aidList)); } } return html.join(''); } // 根据TenderTree数据获取Html代码 function getTenderTreeHtml (this_code, this_status, aidList = []) { if (tenderTree.length > 0) { const html = []; 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, '', this_code, this_status, aidList)); } html.push('
名称流程模式详细流程选择
'); return html.join(''); } else { return EmptyTenderHtml.join(''); } } function getShenpiHtml (this_code) { const html = []; html.push(''); html.push('', ''); html.push(''); html.push(''); html.push(''); html.push('', ''); for (const sp of sp_lc) { html.push(''); html.push(''); html.push(''); html.push(''); html.push(''); } html.push('
名称审批流程选择
', sp.name, ''); const this_status = parseInt($('.' + sp.code + '_div').children('.lc-show').siblings('.form-group').find('input:checked').val()); html.push(sp_status_list[this_status].name); if(this_status !== sp_status.sqspr) { const nameList = []; const aid_num = $('.' + sp.code + '_div').children('.lc-show').children('ul').find('.remove-audit').length; const aidList = []; for (let i = 0; i < aid_num; i++) { const aid = parseInt($('.' + sp.code + '_div').children('.lc-show').children('ul').find('.remove-audit').eq(i).data('id')); aidList.push(aid); } if(aidList.length > 0) { for (const uid of aidList) { const user = _.find(accountList, { id: uid }); nameList.push(user.name); } } html.push(''); } html.push('', this_code !== sp.code ? '' : '', '
'); return html.join(''); } $(document).ready(function () { let timer = null; let oldSearchVal = null; const needYB = ['ledger', 'revise', 'change']; $('body').on('input propertychange', '.gr-search', function(e) { oldSearchVal = e.target.value; timer && clearTimeout(timer); timer = setTimeout(() => { const newVal = $(this).val(); const code = $(this).attr('data-code'); let html = ''; if (newVal && newVal === oldSearchVal) { accountList.filter(item => item && (item.id !== cur_uid || (item.id === cur_uid && needYB.indexOf(code) !== -1)) && (item.name.indexOf(newVal) !== -1 || (item.mobile && item.mobile.indexOf(newVal) !== -1))).forEach(item => { html += `

${item.name}${item.mobile || ''}

${item.role || ''}
` }); $('#' + code + '_dropdownMenu .book-list').empty(); $('#' + code + '_dropdownMenu .book-list').append(html); } else { if (!$('#' + code + '_dropdownMenu .acc-btn').length) { accountGroup.forEach((group, idx) => { if (!group) return; html += `
${group.groupName}
`; group.groupList.forEach(item => { if ((item.id !== cur_uid || (item.id === cur_uid && needYB.indexOf(code) !== -1))) { html += `

${item.name}${item.mobile || ''}

${item.role || ''}
`; } }); html += '
'; }); $('#' + code + '_dropdownMenu .book-list').empty(); $('#' + code + '_dropdownMenu .book-list').append(html); } } }, 400); }); // 添加审批流程按钮逻辑 $('body').on('click', '.book-list dt', function () { const idx = $(this).find('.acc-btn').attr('data-groupid'); const type = $(this).find('.acc-btn').attr('data-type'); if (type === 'hide') { $(this).parent().find(`div[data-toggleid="${idx}"]`).show(() => { $(this).children().find('i').removeClass('fa-plus-square').addClass('fa-minus-square-o'); $(this).find('.acc-btn').attr('data-type', 'show'); }) } else { $(this).parent().find(`div[data-toggleid="${idx}"]`).hide(() => { $(this).children().find('i').removeClass('fa-minus-square-o').addClass('fa-plus-square'); $(this).find('.acc-btn').attr('data-type', 'hide'); }) } return false; }); // 更改审批流程状态 $('.form-check input').on('change', function () { // 获取所有审批的checked值并更新 const this_status = parseInt($(this).val()); const this_code = $(this).data('code'); const spt = sp_status_list[this_status]; $(this).parents('.form-group').siblings('.alert-warning').text(spt.name + ':' + spt.msg); // 拼接post json const prop = { code: this_code, status: this_status }; const _self = $(this); postData('/tender/' + cur_tenderid + '/shenpi/save', prop, function (data) { if (this_status === sp_status.sqspr) { _self.parents('.form-group').siblings('.lc-show').html(''); } else if (this_status === sp_status.gdspl) { let addhtml = '\n'; _self.parents('.form-group').siblings('.lc-show').html(addhtml); } else if (this_status === sp_status.gdzs) { let addhtml = '\n'; _self.parents('.form-group').siblings('.lc-show').html(addhtml); } if(this_code === 'stage') { if(this_status === sp_status.gdspl) { $('#stage_cooperation').show(); } else { $('#stage_cooperation').hide(); } } }); }); // 选中审批人 $('body').on('click', 'dl dd', function () { const id = parseInt($(this).data('id')); if (id) { const user = _.find(accountList, function (item) { return item.id === id; }); const this_status = parseInt($(this).parents('.lc-show').siblings('.form-group').find('input:checked').val()); const this_code = $(this).parents('.lc-show').siblings('.form-group').find('input:checked').data('code'); if (this_status === sp_status.gdspl) { // 判断是否已存在审批人 const aid_num = $(this).parents('ul').find('.remove-audit').length; for (let i = 0; i < aid_num; i++) { const aid = parseInt($(this).parents('ul').find('.remove-audit').eq(i).data('id')); if (aid === id) { toastr.warning('该审核人已存在,请勿重复添加'); return; } } } const prop = { status: this_status, code: sp_type[this_code], audit_id: id, type: 'add', }; const _self = $(this); postData('/tender/' + cur_tenderid + '/shenpi/audit/save', prop, function (data) { if (this_status === sp_status.gdspl) { _self.parents('ul').append('
  • 添加流程
  • '); } _self.parents('.spr-span').html('\n' + ''+ user.name +' \n' + ' \n' + ' \n' + ' ' + ' \n'); // '); }); } }); // 移除审批人 $('body').on('click', '.remove-audit', function () { const id = parseInt($(this).data('id')); const this_status = parseInt($(this).parents('.lc-show').siblings('.form-group').find('input:checked').val()); const this_code = $(this).parents('.lc-show').siblings('.form-group').find('input:checked').data('code'); const prop = { status: this_status, code: sp_type[this_code], audit_id: id, type: 'del', }; const _self = $(this); postData('/tender/' + cur_tenderid + '/shenpi/audit/save', prop, function (data) { if (this_status === sp_status.gdspl) { const _selflc = _self.parents('.lc-show'); _self.parents('li').remove(); const aid_num = parseInt(_selflc.children('ul').find('li.d-flex').length); if (aid_num === 0) { let addhtml = '\n'; _selflc.html(addhtml); } else { for (let i = 0; i < aid_num; i++) { _selflc.find('li.d-flex').eq(i).find('.col-auto').text(transFormToChinese(i+1) + '审'); } } } else if (this_status === sp_status.gdzs) { let addhtml = '\n'; _self.parents('.lc-show').html(addhtml); } }) }); // 固定审批流-添加流程 $('body').on('click', '.add-audit', function () { const num = $(this).parents('ul').children('li').length; const this_code = $(this).parents('.lc-show').siblings('.form-group').find('input:checked').data('code'); const addhtml = makeSelectAudit(this_code, transFormToChinese(num)); $(this).parents('ul').append(addhtml); $(this).parents('li').remove(); }); // 审批流程-审批人html 生成 function makeAudit(audit, i = '终') { return '
  • \n' + ' '+ i +'审\n' + ' \n' + ' \n' + ' '+ audit.name +' \n' + ' \n' + ' \n' + ' ' + // ' \n' + ' \n' + '
  • '; } // 审批流程-选择审批人html 生成 function makeSelectAudit(code, i = '终') { let divhtml = ''; accountGroup.forEach((group, idx) => { let didivhtml = ''; if(group) { group.groupList.forEach(item => { didivhtml += (item.id !== cur_uid || (item.id === cur_uid && needYB.indexOf(code) !== -1)) ? '
    \n' + '

    ' + item.name + '' + item.mobile + '

    \n' + ' ' + item.role + '\n' + '
    \n' : ''; }); divhtml += '
    ' + group.groupName + '
    \n' + '
    \n' + didivhtml + '
    \n'; } }); let html = '
  • \n' + ' ' + i + '审\n' + ' \n' + ' \n' + ' \n' + ' \n' + ' \n' + '
  • '; return html; } initTenderTree(); $('.set-otherTender').on('click', function () { const this_code = $(this).data('code'); const this_status = parseInt($(this).siblings('.lc-show').siblings('.form-group').find('input:checked').val()); const aid_num = $(this).siblings('.lc-show').children('ul').find('.remove-audit').length; const aidList = []; for (let i = 0; i < aid_num; i++) { const aid = parseInt($(this).siblings('.lc-show').children('ul').find('.remove-audit').eq(i).data('id')); aidList.push(aid); } const html = getTenderTreeHtml(this_code, this_status, aidList); $('#shenpi-name').text($(this).data('name')); $('#shenpi_code').val(this_code); $('#shenpi_status').val(this_status); $('#shenpi_auditors').val(aidList.join(',')); $('#tender-list').html(html); $('#search-audit').val(''); $('#search-result').text('0/0'); $('#up-search').attr('disabled', true); $('#down-search').attr('disabled', true); setTimeout(function () { $("#tender-list [data-toggle='tooltip']").tooltip(); },800); }); $('#save-other-tender').click(function () { $(this).attr('disabled', true); const num = $('#tender-list input:checked').length; if (num < 2) { toastr.warning('请选择需要设置审批同步的标段'); return; } const data = { type: 'copy2ot', status: parseInt($('#shenpi_status').val()), code: $('#shenpi_code').val(), }; if(data.status !== shenpi_status.gdspl) { data.aidList = $('#shenpi_auditors').val(); } // 获取已选中的标段 const tenderList = []; for (let i = 0; i < num; i++) { const tid = parseInt($('#tender-list input:checked').eq(i).data('tid')); if (tid !== cur_tenderid) { tenderList.push(tid); } } data.tidList = tenderList.join(','); postData('/tender/' + cur_tenderid + '/shenpi/audit/save', data, function () { toastr.success('设置成功'); setTimeout(function () { window.location.reload(); }, 1000) }) }); $('.set-otherShenpi').on('click', function () { const this_code = $(this).data('code'); const this_status = parseInt($(this).siblings('.lc-show').siblings('.form-group').find('input:checked').val()); const aid_num = $(this).siblings('.lc-show').children('ul').find('.remove-audit').length; const aidList = []; for (let i = 0; i < aid_num; i++) { const aid = parseInt($(this).siblings('.lc-show').children('ul').find('.remove-audit').eq(i).data('id')); aidList.push(aid); } const html = getShenpiHtml(this_code); $('#shenpi-name2').text($(this).data('name')); $('#shenpi_code2').val(this_code); $('#shenpi_status2').val(this_status); $('#shenpi_auditors2').val(aidList.join(',')); $('#shenpi-list').html(html); setTimeout(function () { $("#shenpi-list [data-toggle='tooltip']").tooltip(); },800); }); $('#save-other-shenpi').click(function () { $(this).attr('disabled', true); const num = $('#shenpi-list input:checked').length; if (num < 1) { toastr.warning('请选择需要设置审批同步的流程'); return; } const data = { type: 'copy2os', status: parseInt($('#shenpi_status2').val()), code: $('#shenpi_code2').val(), }; if(data.status !== shenpi_status.gdspl) { data.aidList = $('#shenpi_auditors2').val(); } // 获取已选中的标段 const shenpiList = []; for (let i = 0; i < num; i++) { const code = $('#shenpi-list input:checked').eq(i).data('code'); shenpiList.push(code); } data.shenpiList = shenpiList.join(','); postData('/tender/' + cur_tenderid + '/shenpi/audit/save', data, function () { toastr.success('设置成功'); setTimeout(function () { window.location.reload(); }, 1000) }) }); const ledgerSpread = SpreadJsObj.createNewSpread($('#ledger-spread')[0]); const treeSetting = { id: 'ledger_id', pid: 'ledger_pid', order: 'order', level: 'level', rootId: -1, fullPath: 'full_path', }; const ledgerTree = createNewPathTree('base', treeSetting); const ledgerSpreadSetting = { cols: [ {title: '编号', colSpan: '1', rowSpan: '2', field: 'code', hAlign: 0, width: 165, formatter: '@', readOnly: true, cellType: 'tree'}, {title: '名称', colSpan: '1', rowSpan: '2', field: 'name', hAlign: 0, width: 185, formatter: '@', readOnly: true}, {title: '密码', colSpan: '1', rowSpan: '2', field: 'pwd', hAlign: 0, width: 100, formatter: '@', getValue:'getValue.pwd', readOnly: 'readOnly.pwd'}, ], emptyRows: 0, headRows: 1, headRowHeight: [25, 25], defaultRowHeight: 21, headerFont: '12px 微软雅黑', font: '12px 微软雅黑', // readOnly: true, localCache: { key: 'ledger-cooperation', colWidth: true, } }; const ledgerCol = { getValue: { pwd: function (data) { let txt = ''; // console.log(data); // if (data.is_leaf) { if (data.pwd && data.pwd !== '' && data.pwd !== null) { txt = data.pwd; } else if(data.can_edit) { txt = '请输入密码'; } // } return txt; } }, readOnly: { pwd: function (data) { return !data.can_edit; }, }, }; const ledgerSpreadObj = { setFontColor: function(row = null) { if(row) { const value = ledgerSpread.getActiveSheet().getValue(row, 2); if (value === '请输入密码') { ledgerSpread.getActiveSheet().getCell(row, 2).foreColor('#007bff'); } else { ledgerSpread.getActiveSheet().getCell(row, 2).foreColor('#000'); } } else { const rowCount = ledgerSpread.getActiveSheet().getRowCount(); for(let i = 0; i < rowCount; i++){ const value = ledgerSpread.getActiveSheet().getValue(i, 2); if (value === '请输入密码') { ledgerSpread.getActiveSheet().getCell(i, 2).foreColor('#007bff'); } else { ledgerSpread.getActiveSheet().getCell(i, 2).foreColor('#000'); } } } }, setAllRightPwd: function(uid) { selects = []; for (const l of ledgerTree.nodes) { const coo = _.find(ledger_cooperation_list, { 'ledger_id': l.ledger_id, 'user_id': parseInt(uid) }); if (l.pwd && !coo) { delete l.pwd; l.can_edit = true; selects.push(l); } else if(coo) { l.pwd = coo.pwd; l.can_edit = true; selects.push(l); } else if (l.can_edit === false) { l.can_edit = true; selects.push(l); } } if(selects.length > 0) { // updateByCanEdit(ledgerTree.nodes, _.filter(ledger_cooperation_list, { user_id: parseInt(uid) }), false); const refreshNode = ledgerTree.loadPostData({update: selects}); ledgerSpreadObj.refreshTree(ledgerSpread.getActiveSheet(), refreshNode); ledgerSpreadObj.setFontColor(); } }, refreshTree: function (sheet, data) { SpreadJsObj.massOperationSheet(sheet, function () { const tree = sheet.zh_tree; // 处理删除 if (data.delete) { data.delete.sort(function (x, y) { return y.deleteIndex - x.deleteIndex; }); for (const d of data.delete) { sheet.deleteRows(d.deleteIndex, 1); } } // 处理新增 if (data.create) { const newNodes = data.create; if (newNodes) { newNodes.sort(function (a, b) { return a.index - b.index; }); for (const node of newNodes) { sheet.addRows(node.index, 1); SpreadJsObj.reLoadRowData(sheet, tree.nodes.indexOf(node), 1); } } } // 处理更新 if (data.update) { const rows = []; for (const u of data.update) { rows.push(tree.nodes.indexOf(u)); } SpreadJsObj.reLoadRowsData(sheet, rows); } // 处理展开 if (data.expand) { const expanded = []; for (const e of data.expand) { if (expanded.indexOf(e) === -1) { const posterity = tree.getPosterity(e); for (const p of posterity) { sheet.setRowVisible(tree.nodes.indexOf(p), p.visible); expanded.push(p); } } } } }); }, enterCell: function(e, info) { if (info.sheet.zh_setting && info.col === 2) { if (ledgerSpread.getActiveSheet().getValue(info.row, info.col) !== '') { const col = info.sheet.zh_setting.cols[info.col]; info.sheet.setActiveCell(info.row, 2); info.sheet.startEdit(true); } } }, editStarting: function (e, info) { if (info.sheet.zh_setting) { const select = SpreadJsObj.getSelectObject(info.sheet); const col = info.sheet.zh_setting.cols[info.col]; ledgerSpread.getActiveSheet().getCell(info.row, 2).foreColor('#000'); if(col.getValue(select) === '请输入密码') { ledgerSpread.getActiveSheet().setValue(info.row, 2, ''); } } }, editEnded: function (e, info) { if (info.sheet.zh_setting) { const select = SpreadJsObj.getSelectObject(info.sheet); const col = info.sheet.zh_setting.cols[info.col]; const validText = trimInvalidChar(info.editingText); const user_id = parseInt($('#stage_audits').val()); const orgValue = select[col.field]; const reg = /^[0-9a-zA-Z]+$/; if(validText !== '' && !reg.test(validText)) { toastr.error('不能输入非数字和字母的字符'); SpreadJsObj.reLoadRowData(info.sheet, info.row); ledgerSpreadObj.setFontColor(info.row); return; } if((validText === '' && orgValue === undefined) || validText == orgValue) { SpreadJsObj.reLoadRowData(info.sheet, info.row); ledgerSpreadObj.setFontColor(info.row); return; } // const num = _.filter(ledger_cooperation_list, { pwd: validText, status: 1, user_id }); // console.log(num, ledger_cooperation_list); // if(num.length > 0) { // toastr.error('同一个审批人密码不能相同'); // SpreadJsObj.reLoadRowData(info.sheet, info.row); // ledgerSpreadObj.setFontColor(info.row); // return; // } select.pwd = validText; const data = { type: 'pwd', ledger_id: select.ledger_id, user_id, pwd: validText, }; info.sheet.setSelection(info.row, 0, 1, 1); postData('/tender/' + cur_tenderid + '/shenpi/audit/save', data, function (result) { const lcindex = _.findIndex(ledger_cooperation_list, { ledger_id: select.ledger_id, user_id }); let flag = false; if(lcindex !== -1) { validText === '' ? ledger_cooperation_list.splice(lcindex, 1) : ledger_cooperation_list.splice(lcindex, 1, result); flag = validText === ''; } else { ledger_cooperation_list.push(result); flag = false; } $('#cooperation-num').text(ledger_cooperation_list.length); setLeftTable(ledgerTree.nodes, ledger_cooperation_list, user_id, $('#stage_audits option:selected').text()); selects = [select]; // if(select) { // setAllChildrenCanEdit(select, flag); // setParentCanEdit(ledgerTree.nodes, select.ledger_pid, flag); // } const refreshNode = ledgerTree.loadPostData({update: selects}); ledgerSpreadObj.refreshTree(info.sheet, refreshNode); ledgerSpreadObj.setFontColor(); }); } }, deletePress: function (sheet) { return; }, clipboardPasted(e, info) { // 禁止复制粘贴 SpreadJsObj.reLoadSheetHeader(ledgerSpread.getActiveSheet()); SpreadJsObj.reLoadSheetData(ledgerSpread.getActiveSheet()); return; } }; sjsSettingObj.setFxTreeStyle(ledgerSpreadSetting, sjsSettingObj.FxTreeStyle.jz); if (thousandth) sjsSettingObj.setTpThousandthFormat(ledgerSpreadSetting); SpreadJsObj.initSpreadSettingEvents(ledgerSpreadSetting, ledgerCol); SpreadJsObj.initSheet(ledgerSpread.getActiveSheet(), ledgerSpreadSetting); SpreadJsObj.selChangedRefreshBackColor(ledgerSpread.getActiveSheet()); ledgerSpread.bind(spreadNS.Events.EditStarting, ledgerSpreadObj.editStarting); ledgerSpread.bind(spreadNS.Events.EditEnded, ledgerSpreadObj.editEnded); SpreadJsObj.addDeleteBind(ledgerSpread, ledgerSpreadObj.deletePress); ledgerSpread.bind(spreadNS.Events.ClipboardPasted, ledgerSpreadObj.clipboardPasted); ledgerSpread.bind(spreadNS.Events.EnterCell, ledgerSpreadObj.enterCell); let ledger_data, ledger_cooperation_list = []; // 多人协同 $('#cooperation').on('shown.bs.modal', function () { // 执行一些动作... // 更新新的多人协同表格信息 const newUidList = []; $('.stage_div ul li').each(function (k, v) { const uid = $(v).find('button').eq(0).data('id'); if(uid) newUidList.push(uid); }); const oldUidList = []; $('#stage_audits option').each(function (k, v) { const uid = parseInt($(v).val()); if(k !== 0) oldUidList.push(uid); }); if (!_.isEqual(oldUidList, newUidList)) { const yb = _.find(accountList, { 'id': cur_uid }); let newhtml = ''; if(newUidList.length > 0) { for (const [i,id] of newUidList.entries()) { const audit = _.find(accountList, { 'id': id }); newhtml += ''; } } $('#stage_audits').html(newhtml); if(ledger_data) { setLeftTable(ledgerTree.nodes, ledger_cooperation_list, cur_uid, yb.name + '(原报)'); ledgerSpreadObj.setAllRightPwd(cur_uid); } } if(!ledger_data) { postData('/tender/' + cur_tenderid + '/shenpi/ledger/load', {}, function (data) { ledger_data = true; const ledgerList = setRightData(data.ledgerList, data.ledgerCooperationList); ledgerTree.loadDatas(ledgerList); // treeCalc.calculateAll(ledgerTree); selects = []; // updateByCanEdit(ledgerTree.nodes, _.filter(ledger_cooperation_list, { user_id: cur_uid }), false); ledgerTree.loadPostData({update: selects}); console.log(ledgerTree); ledger_cooperation_list = data.ledgerCooperationList; const yb = _.find(accountList, { 'id': cur_uid }); setLeftTable(ledgerTree.nodes, ledger_cooperation_list, cur_uid, yb.name + '(原报)'); SpreadJsObj.loadSheetData(ledgerSpread.getActiveSheet(), SpreadJsObj.DataType.Tree, ledgerTree); ledgerSpreadObj.setFontColor(); }, null, true); } ledgerSpread.refresh(); }); $('#stage_audits').change(function () { const uid = $(this).val(); const title = $("#stage_audits option:selected").text(); setLeftTable(ledgerTree.nodes, ledger_cooperation_list, uid, title); ledgerSpreadObj.setAllRightPwd(uid); }); $('body').on('click', '.del-pwd', function () { const ledger_id = parseInt($(this).data('lid')); const user_id = parseInt($(this).data('uid')); const data = { type: 'pwd', user_id, ledger_id, pwd: '', }; postData('/tender/' + cur_tenderid + '/shenpi/audit/save', data, function (result) { const lcindex = _.findIndex(ledger_cooperation_list, { ledger_id, user_id }); ledger_cooperation_list.splice(lcindex, 1); setLeftTable(ledgerTree.nodes, ledger_cooperation_list, user_id, $('#stage_audits option:selected').text()); const select = _.find(ledgerTree.nodes, { ledger_id }); delete select.pwd; // const refreshNode = ledgerTree.loadPostData({update: select}); selects = [select]; // if(select) { // setAllChildrenCanEdit(select, true); // setParentCanEdit(ledgerTree.nodes, select.ledger_pid, true); // } const refreshNode = ledgerTree.loadPostData({update: selects}); ledgerSpreadObj.refreshTree(ledgerSpread.getActiveSheet(), refreshNode); ledgerSpreadObj.setFontColor(); $('#cooperation-num').text(ledger_cooperation_list.length); }); }); $('body').on('click', '.edit-pwd', function () { const pwd = $(this).data('pwd'); const html = `
    `; $(this).parents('td').html(html); }); $('body').on('click', '.cancel-btn', function () { const html = `

    ${$(this).data('pwd')}

    修改 移除`; $(this).parents('td').html(html); }); $('body').on('click', '.confirm-btn', function () { const validText = $(this).parents('td').find('input').val(); const orgValue = $(this).data('pwd'); const ledger_id = parseInt($(this).data('lid')); const user_id = parseInt($(this).data('uid')); const reg = /^[0-9a-zA-Z]+$/; if(!reg.test(validText)) { toastr.error('不能输入非数字和字母的字符'); return; } if(validText == orgValue) { const html = `

    ${$(this).data('pwd')}

    修改 移除`; $(this).parents('td').html(html); return; } // const num = _.filter(ledger_cooperation_list, { pwd: validText, status: 1, user_id }); // if(num.length > 0) { // toastr.error('同一个审批人密码不能相同'); // return; // } const data = { type: 'pwd', ledger_id, user_id, pwd: validText, }; postData('/tender/' + cur_tenderid + '/shenpi/audit/save', data, function (result) { const lcindex = _.findIndex(ledger_cooperation_list, { ledger_id, user_id }); ledger_cooperation_list.splice(lcindex, 1, result); setLeftTable(ledgerTree.nodes, ledger_cooperation_list, user_id, $('#stage_audits option:selected').text()); const select = _.find(ledgerTree.nodes, { ledger_id }); select.pwd = validText; const refreshNode = ledgerTree.loadPostData({update: select}); ledgerSpreadObj.refreshTree(ledgerSpread.getActiveSheet(), refreshNode); ledgerSpreadObj.setFontColor(); }); }); // 上传图片 $('body').on('click', '.upload-img', function () { $(this).siblings('input').trigger('click'); // $('.upload-img-file').trigger('click'); }); $('body').on('change', '.upload-img-file', function () { const file = this.files[0]; const ext = file.name.toLowerCase().split('.').splice(-1)[0]; const imgStr = /(png|PNG)$/; if (!imgStr.test(ext)) { toastr.error('请上传签名大小为600x300,格式PNG透明背景。'); return } if ($(this).val()) { var _self = $(this); const formData = new FormData(); formData.append('id', $(this).data('id')); formData.append('file', this.files[0]); postDataWithFile(window.location.pathname + '/save-sign', formData, function (result) { _self.siblings('img').attr('src', '/' + result); _self.siblings('img').show(); _self.siblings('a').removeClass('btn btn-outline-primary btn-sm').addClass('d-inline-flex').text('更改'); _self.val(''); const lcindex = _.findIndex(ledger_cooperation_list, { id: _self.data('id') }); ledger_cooperation_list[lcindex].sign_path = result; ledger_cooperation_list.splice(lcindex, 1, ledger_cooperation_list[lcindex]); }); } }); $.subMenu({ menu: '#sub-menu', miniMenu: '#sub-mini-menu', miniMenuList: '#mini-menu-list', toMenu: '#to-menu', toMiniMenu: '#to-mini-menu', key: 'menu.1.0.0', miniHint: '#sub-mini-hint', hintKey: 'menu.hint.1.0.1', callback: function (info) { if (info.mini) { $('.panel-title').addClass('fluid'); $('#sub-menu').removeClass('panel-sidebar'); } else { $('.panel-title').removeClass('fluid'); $('#sub-menu').addClass('panel-sidebar'); } autoFlashHeight(); } }); let timer2 = null; let oldSearchVal2 = null; $('body').on('input propertychange', '#batch input[name="audit-name"]', function(e) { oldSearchVal2 = e.target.value; timer2 && clearTimeout(timer2); timer2 = setTimeout(() => { const newVal = $(this).val(); const resultLength = $('#tender-list').find('.result').length; if (resultLength > 0) { let content = $('#tender-list').html(); const replaceStr = $('#tender-list').find('.result').eq(0).html(); const regExp2 = new RegExp('' + replaceStr + '', 'g'); content = content.replace(regExp2, replaceStr); const regExp3 = new RegExp('' + replaceStr + '', 'g'); content = content.replace(regExp3, replaceStr); $('#tender-list').html(content); } $('#search-result').text('0/0'); $('#up-search').attr('disabled', true); $('#down-search').attr('disabled', true); if (newVal && newVal === oldSearchVal2) { const regExp = new RegExp(newVal, 'g'); for (let i = 0; i < $('#tender-list tr').length; i++) { if (_.includes($('#tender-list tr').eq(i).children('td').eq(2).html(), newVal)) { $('#tender-list tr').eq(i).children('td').eq(2).html($('#tender-list tr').eq(i).children('td').eq(2).html().replace(regExp, '' + newVal + '')) } } const resultLength2 = $('#tender-list').find('.result').length; if (resultLength2 > 0) { $('#tender-list').find('.result').eq(0).css('background', 'orange'); $('#search-result').text('1/' + resultLength2); $('#up-search').attr('disabled', false); $('#down-search').attr('disabled', false); } } if($('#tender-list').find('.result').length > 0) { const X = $('#tender-list').find('.result').eq(0).offset().top; $('#tender-list').scrollTop(X - $('#tender-list').offset().top + $('#tender-list').scrollTop() - 30); } }, 400); }); $('#up-search').on('click', function () { const cur = parseInt($('#search-result').text().split('/')[0]); const total = parseInt($('#search-result').text().split('/')[1]); const now = cur - 1 !== 0 ? cur - 1: total; $('#tender-list').find('.result').eq(cur-1).css('background', 'yellow'); $('#tender-list').find('.result').eq(now-1).css('background', 'orange'); // $('#tender-list tr').eq(searchUser[cur-1]).children('td').eq(2).html($('#tender-list tr').eq(searchUser[cur-1]).children('td').eq(2).html().replace('', '')) // $('#tender-list tr').eq(searchUser[now-1]).children('td').eq(2).html($('#tender-list tr').eq(searchUser[now-1]).children('td').eq(2).html().replace('', '')) $('#search-result').text(now + '/' + total); const X = $('#tender-list').find('.result').eq(now-1).offset().top; $('#tender-list').scrollTop(X - $('#tender-list').offset().top + $('#tender-list').scrollTop() - 30); }); $('#down-search').on('click', function () { const cur = parseInt($('#search-result').text().split('/')[0]); const total = parseInt($('#search-result').text().split('/')[1]); const now = cur + 1 > total ? 1: cur + 1; $('#tender-list').find('.result').eq(cur-1).css('background', 'yellow'); $('#tender-list').find('.result').eq(now-1).css('background', 'orange'); // $('#tender-list tr').eq(searchUser[cur-1]).children('td').eq(2).html($('#tender-list tr').eq(searchUser[cur-1]).children('td').eq(2).html().replace('', '')) // $('#tender-list tr').eq(searchUser[now-1]).children('td').eq(2).html($('#tender-list tr').eq(searchUser[now-1]).children('td').eq(2).html().replace('', '')) $('#search-result').text(now + '/' + total); const X = $('#tender-list').find('.result').eq(now-1).offset().top; $('#tender-list').scrollTop(X - $('#tender-list').offset().top + $('#tender-list').scrollTop() -30); }); $('body').on('blur', '#coo_table .edit-company', function () { const id = $(this).data('id'); const newVal = $(this).val(); const cooInfo = _.find(ledger_cooperation_list, { id: id }); if(cooInfo && cooInfo.company !== newVal) { const data = { type: 'company', id, company: newVal, }; postData('/tender/' + cur_tenderid + '/shenpi/audit/save', data, function (result) { const lcindex = _.findIndex(ledger_cooperation_list, { id: id }); cooInfo.company = newVal; ledger_cooperation_list.splice(lcindex, 1, cooInfo); }); } }) }); function setRightData(datas, coolist) { const newdatas = []; const reg = /(^GD([0-9\-]+))|(^([0-9\-]+)$)/; for (const l of datas) { // if (reg.test(l.code) && l.level <= 4) { if (reg.test(l.code)) { // if(l.level === 4 && l.is_leaf === false) { // l.is_leaf = true; // } const coo = _.find(coolist, { 'ledger_id': l.ledger_id, 'user_id': cur_uid }); if(coo) { l.pwd = coo.pwd; } l.can_edit = true; newdatas.push(l); } } // for (const nd of newdatas) { // const child = _.find(newdatas, { 'ledger_pid': nd.ledger_id }); // if (!child && !nd.is_leaf) { // nd.is_leaf = true; // } // } return newdatas; } function updateByCanEdit(datas, coolist, flag) { for (const coo of coolist) { const ledgerInfo = _.find(datas, { 'ledger_id': coo.ledger_id }); if(ledgerInfo) { setAllChildrenCanEdit(ledgerInfo, flag); // setParentCanEdit(datas, ledgerInfo.ledger_pid, flag); } } } function setParentCanEdit(datas, id, flag) { if(id !== -1) { const pl = _.find(datas, { 'ledger_id': id }); // 判断父节点下所有子节点有无pwd,有则为false if (pl) { const existfalse = _.find(pl.children, function (item) { return item.can_edit === false || (item.pwd && item.pwd !== '' && item.pwd !== null); }); pl.can_edit = existfalse ? false : flag; selects.push(pl); setParentCanEdit(datas, pl.ledger_pid, flag); } } } function setAllChildrenCanEdit(ledgerInfo, flag) { if (ledgerInfo.children && ledgerInfo.children.length > 0) { for(const li of ledgerInfo.children) { if (li.pwd === undefined || li.pwd === null || li.pwd === '') { li.can_edit = flag; selects.push(li); setAllChildrenCanEdit(li, flag); } } } } function setLeftTable(ledgerList, coolist, uid, title) { $('#stage_audit').text(title); const showCooList = _.filter(coolist, { 'user_id': parseInt(uid) }); const removeList = []; for (const sc of showCooList) { const info = _.find(ledgerList, { 'ledger_id': sc.ledger_id }); if (info) { sc.code = info.code; sc.name = info.name; } else { removeList.push(sc); } } if (removeList.length > 0) { // 移除 _.pull(showCooList, ...removeList); console.log(removeList); } let html = ''; // showCooList 需要根据右边台账顺序进行排序 showCooList.sort(function (a, b) { return _.findIndex(ledgerList, { ledger_id: a.ledger_id }) - _.findIndex(ledgerList, { ledger_id: b.ledger_id }); }); for (const sc of showCooList) { const pichtml = sc.sign_path ? `更改` : `上传签名`; html += `` + `${sc.code} ${sc.name}` + `

    ${sc.pwd}

    修改 移除` + `${pichtml}` + ``; } $('#coo_table').html(html); }