'use strict'; /** * 变更令详细页js * * @author EllisRan. * @date 2018/11/22 * @version */ const is_numeric = (value) => { if (typeof(value) === 'object') { return false; } else { return !Number.isNaN(Number(value)) && value.toString().trim() !== ''; } }; $(document).ready(() => { //初始化所有附件列表 getAllList(); const cca = getLocalCache('change-checkbox-account-' + accountId); if (cca !== null && cca !== undefined) { $('#customCheck1').prop('checked', cca !== 'false'); } changeSpreadSheet.setColumnVisible(3,$('#customCheck1').is(':checked'), GC.Spread.Sheets.SheetArea.viewport); // 变更详情展示和隐藏 $('.change-detail-checkbox').on('click', function (e) { if($(e.target).is('label')){ return; } // // 设置用户项目本地记录展示和隐藏情况 setLocalCache('change-checkbox-account-'+ accountId, $(this).is(':checked')); changeSpreadSheet.setColumnVisible(3,$(this).is(':checked'), GC.Spread.Sheets.SheetArea.viewport); }); // 计算最新的变更总额和change的total_price是否一致,不一致则更新 if (changeStatus !== auditConst.status.checked) { let new_tp = 0; for (const c of changeList) { new_tp = ZhCalc.add(new_tp, ZhCalc.round(ZhCalc.mul(ZhCalc.round(c.spamount, findDecimal(c.unit)), ZhCalc.round(c.unit_price, unitPriceUnit)), totalPriceUnit)); } console.log(changeTp, new_tp); if (changeTp !== new_tp) { postData(window.location.pathname + '/save', { type:'update_tp', updateData: new_tp }, function (result) { }); } } //tab change $('a[data-toggle="tab"]').on('shown.bs.tab', function () { const tab = $(this).data('tab'); if (tab === 'bgfujian') { $('#fujian_btn').show(); } else { $('#fujian_btn').hide(); } }); $('#add-bj').on('click', 'input[type="checkbox"]', function () { const isCheck = $(this).prop('checked'); if (isCheck) { $('#add-bj input[type="checkbox"]').each(function () { $(this).prop('checked', false) }); $(this).prop('checked', true) } }); $('#bg-copy').click(function() { const cid = $('#add-bj input:checked').data('id'); postData(window.location.pathname + '/copy', cid, function () { window.location.reload(); }) }); // 上传附件 $('#upload-file-btn').click(function () { const files = $('#upload-file')[0].files; const formData = new FormData(); formData.append('cid', $('#changeId').val()); formData.append('tid', $('#tenderId').val()); for (const file of files) { if (file === undefined) { toastr.error('未选择上传文件!'); return false; } const filesize = file.size; if (filesize > 30 * 1024 * 1024) { toastr.error('文件大小过大!'); return false; } const fileext = '.' + file.name.toLowerCase().split('.').splice(-1)[0]; if (whiteList.indexOf(fileext) === -1) { toastr.error('只能上传指定格式的附件!'); return false; } formData.append('size', filesize); formData.append('file[]', file); } if (auditList.findIndex(item => item.uid === parseInt(accountId)) === -1 && !touristPermission) { return toastr.error('暂无权限上传!'); } postDataWithFile(window.location.pathname + '/file/upload', formData, function (data) { attData = data.concat(attData); // 重新生成List getAllList(); $('#addfujian').modal('hide'); // let html = ''; // let index = $('#attList tr').length + 1; // for (const fileInfo of data) { // html += ' ' + // `` + // '' + index + ' ' + // `${fileInfo.filename}${fileInfo.fileext}`+ // '' + fileInfo.in_time + '
' + fileInfo.filesize + ' ' + // ``+ // ( auditStatus === 4 ? // fileInfo.extra_upload ? `` : '' // : ` `)+ // ``+ // // ' ' + // ''; // ++index; // } // $('#attList').append(html); }, function () { }); $('#upload-file').val(''); }); // 删除附件 $('body').on('click', '.delete-file', function () { let attid = $(this).data('attid'); let self = $(this); const data = {id: attid}; postData(window.location.pathname + '/file/delete', data, function (result) { // self.parents('tr').remove(); // // 重新排序 // let newsort = 1; // $('#attList tr').each(function(){ // $(this).children('td').eq(1).text(newsort); // newsort++; // }); // 删除到attData中 const att_index = attData.findIndex(function (item) { return item.id === parseInt(attid); }); attData.splice(att_index, 1); // 重新生成List if ($('#attList tr').length === 1) { getAllList(parseInt($('#currentPage').text()) - 1); } else { getAllList(parseInt($('#currentPage').text())); } }); }); // /change/download/file/ $('#attList').on('click', '.file-atn', function() { const id = $(this).attr('f-id'); postData(`/change/download/file/${id}`, {}, (data) => { const { filepath } = data; $('#file-upload').attr('href', filepath); $('#file-upload')[0].click(); }) }); $('#attList').on('click', '.check-file', function() { const checkedList = $('#attList').find('input:checked'); const childs = $('#attList').children().length; const checkBox = $('#check-all-file'); if (checkedList.length === childs) { checkBox.prop("checked", true); } else { checkBox.prop("checked", false); } }); $('#check-all-file').click(function() { const isCheck = $(this).is(':checked'); $('#attList').children().each(function() { $(this).find('input:checkbox').prop("checked", isCheck); }) }); $('#bach-download').click(function() { const fileIds = []; $( '#attList .check-file:checked').each(function() { const fileId = $(this).attr('file-id'); fileId && fileIds.push(fileId); }); if (fileIds.length) { // const tid = $('#tenderId').val(); // const cid = $('#changeId').val(); // $('#downloadZip').attr('href', `/tender/${tid}/change/${cid}/download/compresse-file?fileIds=${JSON.stringify(fileIds)}`); // $('#downloadZip')[0].click(); if (fileIds.length > 20) { return toastr.warning(`最大允许20个文件(当前${fileIds.length}个)`); } const tid = $('#tenderId').val(); const cid = $('#changeId').val(); toastr.success('正在进行压缩文件...', '', { timeOut: 0, extendedTimeOut: 0}); $(this).attr('disabled', "true"); const btn = $(this); const fileArr = []; for (const id of fileIds) { const fileInfo = _.find(currPageFileData, { id: parseInt(id) }); fileArr.push({ url: fileInfo.orginpath, //文件的oss存储路径 (必填) name: fileInfo.filename, // 文件名 (可选, 不需要填扩展名) foldPath: '' // (可选, 文件在压缩包中的存储路径) }); } const packageName = `${tenderName}-工程变更-${changeName}-附件.zip`; try { zipOss.downloadFromAliOss(fileArr, packageName, btn); } catch (e) { btn.removeAttr('disabled'); toastr.clear(); toastr.error('批量下载失败'); } // postCompressFile(`/tender/${tid}/change/${cid}/download/compresse-file`, {fileIds}, function(result) { // toastr.clear(); // toastr.success('压缩文件成功'); // btn.removeAttr('disabled'); // const href = window.URL.createObjectURL(result); // $('#zipDown').attr('href', href); // $('#zipDown').attr('download', `${tenderName}-工程变更-${changeName}-附件.zip`); // $("#zipDown")[0].click(); // }, () => { // btn.removeAttr('disabled'); // toastr.clear(); // toastr.error('批量下载失败'); // }); } }); $.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(); changeSpread.refresh(); } }); // 切换页数 $('.page-select').on('click', function () { const totalPageNum = parseInt($('#totalPage').text()); const lastPageNum = parseInt($('#currentPage').text()); const status = $(this).attr('content'); if (status === 'pre' && lastPageNum > 1) { getAllList(lastPageNum-1); $('#showAttachment').hide(); $('#syfujian .check-all-file').prop('checked', false) } else if (status === 'next' && lastPageNum < totalPageNum) { getAllList(lastPageNum+1); $('#showAttachment').hide(); $('#syfujian .check-all-file').prop('checked', false) } }); // 项目节信息获取 const xmjSpreadSetting = { cols: [ {title: '项目节编号', colSpan: '1', rowSpan: '2', field: 'xmj_code', hAlign: 0, width: 80}, // {title: '名称', colSpan: '1', rowSpan: '2', field: 'name', hAlign: 0, width: 120}, {title: '细目', colSpan: '1', rowSpan: '2', field: 'xmj_jldy', hAlign: 0, width: 100}, {title: '单位工程', colSpan: '1', rowSpan: '2', field: 'xmj_dwgc', hAlign: 0, width: 100}, {title: '分部工程', colSpan: '1', rowSpan: '2', field: 'xmj_fbgc', hAlign: 0, width: 100}, {title: '分项工程', colSpan: '1', rowSpan: '2', field: 'xmj_fxgc', hAlign: 0, width: 100}, {title: '计量单元', colSpan: '1', rowSpan: '2', field: 'bwmx', hAlign: 0, width: 100}, {title: '数量', colSpan: '1', rowSpan: '2', field: 'oamount', hAlign: 2, width: 80}, ], emptyRows: 0, headRows: 1, headRowHeight: [25, 25], defaultRowHeight: 21, headerFont: '12px 微软雅黑', font: '12px 微软雅黑', readOnly: true, localCache: { key: 'changes-xmj', colWidth: true, } }; SpreadJsObj.initSheet(xmjSpread.getActiveSheet(), xmjSpreadSetting); }); function findDecimal(unit) { let value = precision.other.value; const changeUnits = precision; for (const d in changeUnits) { if (changeUnits[d].unit !== undefined && changeUnits[d].unit === unit) { value = changeUnits[d].value; break; } } return value; } // 生成附件列表 function getAllList(currPageNum = 1) { // 每页最多几个附件 const pageCount = 20; // 附件总数 const total = attData.length; // 总页数 const pageNum = Math.ceil(total/pageCount); $('#totalPage').text(pageNum); $('#currentPage').text(total === 0 ? 0 : currPageNum); // 当前页附件内容 const currPageAttData = attData.slice((currPageNum-1)*pageCount, currPageNum*pageCount); currPageFileData = currPageAttData; let html = ''; // '/tender/' + tender.id + '/measure/stage/' + stage.order + '/download/file/' + att.id for(const [index,att] of currPageAttData.entries()) { html += ` ${((currPageNum-1)*pageCount)+index+1} ${att.filename}${att.fileext} ${moment(att.in_time * 1000).format('YYYY-MM-DD')}
${bytesToSize(att.filesize)} ` html += (att.uid === accountId && (auditStatus === 4 ? Boolean(att.extra_upload) : true)) ? `` : ''; html += ``; } $('#attList').html(html); $('#attList').on('click', 'tr', function() { $('#attList tr').removeClass('bg-light'); $(this).addClass('bg-light'); }) } function bytesToSize(bytes) { if (parseInt(bytes) === 0) return '0 B'; const k = 1024; const sizes = ['B', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB']; const i = Math.floor(Math.log(bytes) / Math.log(k)); // return (bytes / Math.pow(k, i)) + ' ' + sizes[i]; return (bytes / Math.pow(k, i)).toPrecision(3) + ' ' + sizes[i]; }