/** * Created by Administrator on 2019/3/1 0001. */ taxDocumentManageModule.controller('taxDocumentListController', ['$log', '$http', '$q', '$scope', '$translate', '$timeout', 'SweetAlert', '$compile', 'taxDocumentListService', '$filter', 'apiInterceptor', function ($log, $http, $q, $scope, $translate, $timeout, SweetAlert, $compile, taxDocumentListService, $filter, apiInterceptor) { $scope.queryFieldModel = {}; $scope.editFieldModel = {}; //分页的设置 $scope.pagingOptions = { pageIndex: 1, //当前页码 totalItems: 0, //总数据 pageSize: 10, //每页多少条数据 pageSizeString: '10', }; $scope.localData = null; $scope.loadMainData = function () { checkReminder(); $scope.queryFieldModel.currentPage = $scope.pagingOptions.pageIndex; $scope.queryFieldModel.pageSize = $scope.pagingOptions.pageSize; var params = angular.copy($scope.queryFieldModel); params.fileBeginTime = getQueryDate(params.fileBeginTime, "-"); params.fileEndTTime = getQueryDate(params.fileEndTTime, "-"); // params.ownBeginTime = getQueryDate(params.ownBeginTime,"-"); // params.ownEndTime = getQueryDate(params.ownEndTime,"-"); params.effectiveBeginTime = getQueryDate(params.effectiveBeginTime, "-"); params.effectiveEndTime = getQueryDate(params.effectiveEndTime, "-"); params.uploadBeginTime = getQueryDate(params.uploadBeginTime, "-"); params.uploadEndTime = getQueryDate(params.uploadEndTime, "-"); function getQueryDate(time, mark) { if (!time) return ""; var theDate = new Date(time); var year = theDate.getFullYear(); var mm = theDate.getMonth() + 1; var dd = theDate.getDate(); mm = (mm + "").length < 2 ? "0" + mm : mm; dd = (dd + "").length < 2 ? "0" + dd : dd; return year + mark + mm + mark + dd; } taxDocumentListService.fetchMainList(params).then(function (data, status, headers) { if (status == 204) { SweetAlert.warning($translate.instant("NoData")); return; } // console.log("taxDocList:", data); $scope.dataGridUpdate(data); }) }; function checkReminder() { var items=$scope.queryFieldModel; var message=""; if (!PWC.isNullOrEmpty(items.fileBeginTime) && !PWC.isNullOrEmpty(items.fileEndTTime) && items.fileBeginTime > items.fileEndTTime) { message+=$translate.instant('Effective_Date')+","; } if (!PWC.isNullOrEmpty(items.ownBeginTime) && !PWC.isNullOrEmpty(items.ownEndTime) && items.ownBeginTime > items.ownEndTime) { message+=$translate.instant('Duration')+","; } if (!PWC.isNullOrEmpty(items.effectiveBeginTime) && !PWC.isNullOrEmpty(items.effectiveEndTime) && items.effectiveBeginTime > items.effectiveEndTime) { message+=$translate.instant('Due Date')+","; } if (!PWC.isNullOrEmpty(items.uploadBeginTime) && !PWC.isNullOrEmpty(items.uploadEndTime) && items.uploadBeginTime > items.uploadEndTime) { message+=$translate.instant('Upload Date')+","; } if(message){ message = (message.substring(message.length - 1) == ',') ? message.substring(0, message.length - 1) : message; message+="-"+$translate.instant('DateWarningSearch'); window.swal(message); return; } } $scope.dataGridUpdate = function (_data) { $scope.localData = _data.list; $scope.pagingOptions.pageIndex = _data.pageNo; $scope.pagingOptions.totalItems = _data.total; $scope.dataGridOptions = { bindingOptions: { dataSource: 'localData', }, showBorders: true, paging: { enable: true, pageIndex: 1, pageSize: 100 }, pager: { showInfo: false, showNavigationButtons: false, showPageSizeSelector: false, visible: false, }, sorting: {//排序 ascendingText: "Sort Ascending", clearText: "Clear Sorting", descendingText: "Sort Descending", mode: "single" }, // 'export': { // allowExportSelectedData: false,//允许选择导出 // customizeExcelCell: null, // enabled: true,//允许导出 // excelFilterEnabled: false, // excelWrapTextEnabled: false, // fileName: "taxDocList",//名字 // ignoreExcelErrors: true, // // }, showRowLines: true, columnAutoWidth: true, allowColumnReordering: true, columns: [ { dataField: "", caption: "", width: 40, cellTemplate: function (container, options) { var target = $('<input name="dataGridCheckBox" type="checkbox" ' + 'data-id="' + options.data.id + '" ' + 'data-url="' + options.data.filePositionUrl + '"/>'); target.off('click').on('click', function () { $scope.sniffCheckbox(); }); container.append(target); if($("input[name='dataGridCheckBoxALL']").length==0){ var func = function () { var targetall = $('<input name="dataGridCheckBoxALL" type="checkbox" data-id=""data-url=""/>'); targetall.off('click').on('click', function () { $scope.sniffCheckboxAll(); }); $("tr td:first[role='columnheader']").append(targetall); func= function(){}; }; func(); } } }, { dataField: "id", caption: "", visible: false }, { dataField: "", caption: $translate.instant('Operation'), cellTemplate: function (container, options) { var prevTarget = $('<a style="color:#506bf7;margin-right:1rem;" href="javascript:void(0)"><span>' + $translate.instant('Preview') + '</span></a>'); prevTarget.off('click').on('click', function () { $scope.viewRemoteFile(options.data.fileName, options.data.filePositionUrl); }); var editTarget = $('<a style="color:#506bf7;" href="javascript:void(0)"><span>' + $translate.instant('Edit') + '</span></a>'); editTarget.off('click').on('click', function () { $scope.openSimpleUploadPop(options.data.id); }); container.append(prevTarget).append(editTarget); } }, { dataField: "fileAttr", caption: $translate.instant('Document Attribute'), }, { dataField: "fileType", caption: $translate.instant('Document Type'), }, { dataField: "fileName", caption: $translate.instant('Document Name'), }, { dataField: "businessLine", caption: $translate.instant('Business Line'), }, { dataField: "companyName", caption: $translate.instant('Company Name'), }, { dataField: "taxType", caption: $translate.instant('Tax Type'), }, { dataField: "fileTime", caption: $translate.instant('Effective_Date'), cellTemplate: function (container, options) { try { if (options.data.fileTime) { options.data.fileTime = $filter('date')(options.data.fileTime, 'yyyy/MM/dd'); $('<span>').text(options.data.fileTime).appendTo(container); } else { $('<span>').text('').appendTo(container); } } catch (e) { $log.error(e); } } }, { dataField: "ownTime", caption: $translate.instant('Period'), cellTemplate: function (container, options) { try { if (options.data.ownTime) { // 这是所属时间返回的是int类型 // var ownTimeString = options.data.ownTime + ""; // var year = ownTimeString.substr(0, 4); // var mon = ownTimeString.substr(4, 2); // // $scope.editFieldModel.ownTime = $scope.queryOwnTime(params.ownTime,"/"); $('<span>').text($scope.queryOwnTime(options.data.ownTime, "/")).appendTo(container); } else { $('<span>').text('').appendTo(container); } } catch (e) { $log.error(e); } } }, { dataField: "effectiveTime", caption: $translate.instant('Due Date'), cellTemplate: function (container, options) { try { if (options.data.effectiveTime) { options.data.effectiveTime = $filter('date')(options.data.effectiveTime, 'yyyy/MM/dd'); $('<span>').text(options.data.effectiveTime).appendTo(container); } else { $('<span>').text('').appendTo(container); } } catch (e) { $log.error(e); } } }, { dataField: "auditStatus", caption: $translate.instant('Approval Status'), cellTemplate: function (container, options) { try { var content = $scope.transformAuditStatusToView(options.data.auditStatus); $('<span>') .text(options.data.auditStatus = content) .appendTo(container); } catch (e) { $log.error(e); } } }, { dataField: "physicalIndexNumber", caption: $translate.instant('Storage Index'), }, { dataField: "storageArea", caption: $translate.instant('Storage Location'), }, { dataField: "keeper", caption: $translate.instant('Custodian'), }, { dataField: "uploadTime", caption: $translate.instant('Upload Date'), cellTemplate: function (container, options) { try { if (options.data.uploadTime) { options.data.uploadTime = $filter('date')(options.data.uploadTime, 'yyyy/MM/dd'); $('<span>').text(options.data.uploadTime).appendTo(container); } else { $('<span>').text('').appendTo(container); } } catch (e) { $log.error(e); } } }, { dataField: "creator", caption: $translate.instant('Creator'), }, { dataField: "remark", caption: $translate.instant('Remarks'), } ], onCellClick: function (e) { //单元格点击— e.columnIndex=0 排除复选框列 if (e.columnIndex > 0 && e.data) { $("input[name='dataGridCheckBox']").each(function (index, item) { if ((item.dataset) && (item.dataset.id == e.data.id)) { if (item.checked) { item.checked = false; } else { item.checked = true; } } }); } } }; $scope.getTableHeight = function () { var row_height = $("table").find("tr").height(); if (row_height) { return { height:(row_height*12+18)+"px" } } }; }; $scope.changeDateRangeError=function(flag){ var items=$scope.queryFieldModel; if (!PWC.isNullOrEmpty(items.fileBeginTime) && !PWC.isNullOrEmpty(items.fileEndTTime) && items.fileBeginTime > items.fileEndTTime) { SweetAlert.warning($translate.instant('DateWarningSearch')); if(flag==1){ items.fileBeginTime=""; }else{ items.fileEndTTime=""; } } if (!PWC.isNullOrEmpty(items.ownBeginTime) && !PWC.isNullOrEmpty(items.ownEndTime) && items.ownBeginTime > items.ownEndTime) { SweetAlert.warning($translate.instant('DateWarningSearch')); if(flag==1){ items.ownBeginTime=""; }else{ items.ownEndTime=""; } } if (!PWC.isNullOrEmpty(items.effectiveBeginTime) && !PWC.isNullOrEmpty(items.effectiveEndTime) && items.effectiveBeginTime > items.effectiveEndTime) { SweetAlert.warning($translate.instant('DateWarningSearch')); if(flag==1){ items.effectiveBeginTime=""; }else{ items.effectiveEndTime=""; } } if (!PWC.isNullOrEmpty(items.uploadBeginTime) && !PWC.isNullOrEmpty(items.uploadEndTime) && items.uploadBeginTime > items.uploadEndTime) { SweetAlert.warning($translate.instant('DateWarningSearch')); if(flag==1){ items.uploadBeginTime=""; }else{ items.uploadEndTime=""; } } }; $scope.changeFieldModel=function(flag){ //新建记录 var items=$scope.editFieldModel; if (!PWC.isNullOrEmpty(items.fileTime) && !PWC.isNullOrEmpty(items.effectiveTime) && items.fileTime > items.effectiveTime) { SweetAlert.warning($translate.instant('FileTimeDateRangeError')); if(flag==1){ items.fileTime=""; }else{ items.effectiveTime=""; } } }; $scope.changeFieldItem = function (flag) { //批量上传 if($scope.multiUploadErrorItems){ for (var i = 0; i < $scope.multiUploadErrorItems.length; i++) { var modelItem = $scope.multiUploadErrorItems[i]; if (!PWC.isNullOrEmpty(modelItem.fileTime) && !PWC.isNullOrEmpty(modelItem.effectiveTime) && modelItem.fileTime > modelItem.effectiveTime) { SweetAlert.warning($translate.instant("Document") + (i + 1) + "," +$translate.instant('FileTimeDateRangeError')); if(flag==1){ modelItem.fileTime=""; }else{ modelItem.effectiveTime=""; } break; } } } }; //查询条件-根据文件属性来匹配出 文件类型 $scope.queryFileAttr = function (curAttr) { if(curAttr){ $scope.fileTypeOptions.length=0; Object.keys($scope.typeAndAttrMap).forEach(function (key) { if (curAttr === $scope.typeAndAttrMap[key]) { $scope.fileTypeOptions.push(key); } }); }else{ Object.keys($scope.typeAndAttrMap).forEach(function (key) { $scope.fileTypeOptions.push(key); }); } $scope.queryFieldModel.fileType=""; }; //弹出框 $scope.isCreatePop = false; var openSimpleUploadPop = function (rowId) { //清空标红* if($scope.requiredField && $scope.requiredField.length>0){ for (var x in $scope.requiredField) { $scope.requiredField[x]=""; } } $scope.uploader.clearQueue(); $("#uploadFilePlugin").val(null); // 带ID的就是编辑窗口 if (rowId) { $scope.isCreatePop = false; $scope.simpleUploadSubmit = editDocFileRecord; $scope.localData.forEach(function (item) { if (item.id == rowId) { $scope.editFieldModel = angular.copy(item); // var ownTimeString = item.ownTime + ""; // var year = ownTimeString.substr(0, 4); // var mon = ownTimeString.substr(4, 2); // $scope.editFieldModel.ownTime = year + "/" + mon; $scope.editFieldModel.ownTime = $scope.queryOwnTime(item.ownTime, "-"); $scope.editFieldModel.fileTime = $scope.getQueryDate(item.fileTime, "-"); $scope.editFieldModel.effectiveTime = $scope.getQueryDate(item.effectiveTime, "-"); $scope.syncFileType($scope.editFieldModel.fileAttr); $scope.matchFieldTypeId($scope.editFieldModel); } }); } else { $scope.curFileTypeOptions.length = 0; $scope.isCreatePop = true; $scope.simpleUploadSubmit = simpleUploadSubmit; $scope.editFieldModel = {}; } $('#simpleUploadPopDialog').modal('show'); }; $scope.isCoverOperation = false; //新建档案 var simpleUploadSubmit = function () { $scope.matchCompanyId($scope.editFieldModel); var params = angular.copy($scope.editFieldModel); if (!PWC.isNullOrEmpty(params.fileTime) && !PWC.isNullOrEmpty(params.effectiveTime) && params.fileTime > params.effectiveTime) { window.swal($translate.instant('FileTimeDateRangeError')); return; } // params.ownTime = params.ownTime ? params.ownTime : ""; // var splitMark = params.ownTime.indexOf("-") > -1 ? "-" : "/"; // params.ownTime = parseInt(params.ownTime.split(splitMark).join("")); params.ownTime = $scope.queryOwnTime(params.ownTime, "int"); params.fileTime = $scope.getQueryDate(params.fileTime, "-"); params.effectiveTime = $scope.getQueryDate(params.effectiveTime, "-"); params.filePositionUrl = encodeURIComponent(params.filePositionUrl); taxDocumentListService.verifyDuplicate(params).then(function (data) { // 先设置上传参数 var uploadItem = $scope.uploader.queue[0]; var fileName = uploadItem._file ? uploadItem._file.name : uploadItem.name; uploadItem.formData = [ {originFileName: fileName}, ]; Object.keys(params).forEach(function (key) { var fields = {}; var curItemValue = params[key] ? params[key] : ""; if (/ownTime/.test(key)) { // var splitMark = curItemValue.indexOf("-") > -1 ? "-" : "/"; // fields[key] = parseInt(curItemValue.split(splitMark).join("")); fields[key] = $scope.queryOwnTime(curItemValue, "int"); } else { if (/(createTime|updateTime|uploadTime|effectiveTime|fileTime)/.test(key)) { fields[key] = $scope.getQueryDate(curItemValue, "-"); } else fields[key] = curItemValue; } uploadItem.formData.push(fields); }); // data == true,代表可以直接上传,否则属于覆盖行为 //data.id===null|| data.id===undefined,代表可以直接上传,否则属于覆盖行为 if (data.id === null || data.id === undefined) { $scope.uploader.queue[0].url = apiInterceptor.webApiHostUrl + "/taxDoc/add"; $scope.uploader.uploadItem(0); $scope.isCoverOperation = false; // $('#busy-indicator-container').show(); // addLogicAfterUploadFile($scope.editFieldModel,'simple'); } else { //覆盖行为-需上传参数 uploadItem.formData.push({id: data.id}); SweetAlert.swal({ title: '提示', text: $translate.instant("CoverConfirm"), type: "warning", showCancelButton: true, confirmButtonColor: "#DD6B55", confirmButtonText: $translate.instant('Confirm'), cancelButtonText: $translate.instant('Cancel4Tax'), closeOnConfirm: true, closeOnCancel: true }, function (isConfirm) { if (isConfirm) { $scope.uploader.queue[0].url = apiInterceptor.webApiHostUrl + "/taxDoc/edit"; $scope.uploader.uploadItem(0); $scope.isCoverOperation = true; } }) } }); }; var addLogicAfterUploadFile = function (editFieldModel, type) { $scope.matchCompanyId(editFieldModel); var params = angular.copy(editFieldModel); // params.ownTime = params.ownTime ? params.ownTime : ""; // var splitMark = params.ownTime.indexOf("-") > -1 ? "-" : "/"; // params.ownTime = parseInt(params.ownTime.split(splitMark).join("")); params.ownTime = $scope.queryOwnTime(params.ownTime, "int"); taxDocumentListService.addNewRecord(params).then(function (data) { if (data == true) { if (type == 'simp') { SweetAlert.swal({ title: $translate.instant("Created"), type: "success", confirmButtonText: $translate.instant('Confirm'), closeOnConfirm: true }, function (isConfirm) { if (isConfirm) $scope.loadMainData(); }); } else { if ($scope.multiUploadSuccessItems.length == 0) { SweetAlert.swal({ title: $translate.instant("Uploaded"), type: "success", confirmButtonText: $translate.instant('Confirm'), closeOnConfirm: true }, function (isConfirm) { if (isConfirm) $scope.loadMainData(); }); } } } else { SweetAlert.warning($translate.instant('SaveFail')); } $('#simpleUploadPopDialog').modal('hide'); $('#multiUploadPopDialog').modal('hide'); }); }; var editDocFileRecord = function (fieldModel, type) { var params = angular.copy(fieldModel); delete params.auditStatus; params.ownTime = $scope.queryOwnTime(params.ownTime, "int"); params.effectiveTime ? params.effectiveTime = $scope.getQueryDate(params.effectiveTime, "-") : delete params.effectiveTime; params.createTime ? params.createTime = $scope.getQueryDate(params.createTime, "-") : delete params.createTime; params.updateTime ? params.updateTime = $scope.getQueryDate(params.updateTime, "-") : delete params.updateTime; params.uploadTime ? params.uploadTime = $scope.getQueryDate(params.uploadTime, "-") : delete params.uploadTime; params.fileTime ? params.fileTime = $scope.getQueryDate(params.fileTime, "-") : delete params.fileTime; params.filePositionUrl = encodeURIComponent(params.filePositionUrl); taxDocumentListService.verifyDuplicate(params).then(function (result) { // 例如 修改1为1 不用弹框 修改1本身就好 但是修改1为2 ,就要去掉1并修改2(保留2的id) if ((result.id == null || result.id == undefined) || (result.id == fieldModel.id)) { editRecord_Post(fieldModel, type); } else { var hisCellId = result.id; var CellId = fieldModel.id; SweetAlert.swal({ title: '提示', text: $translate.instant("CoverConfirm"), type: "warning", showCancelButton: true, confirmButtonColor: "#DD6B55", confirmButtonText: $translate.instant('Confirm'), cancelButtonText: $translate.instant('Cancel4Tax'), closeOnConfirm: true, closeOnCancel: true }, function (isConfirm) { if (isConfirm) { fieldModel.id = hisCellId; editRecord_Post(fieldModel, type); delHisRecord(CellId); } }); } }); $('#simpleUploadPopDialog').modal('hide'); $('#multiUploadPopDialog').modal('hide'); }; function editRecord_Post(fieldModel, type) { $scope.matchCompanyId(fieldModel); var params = angular.copy(fieldModel); // params.ownTime = params.ownTime ? params.ownTime : ""; // var splitMark = params.ownTime.indexOf("-") > -1 ? "-" : "/"; // params.ownTime = parseInt(params.ownTime.split(splitMark).join("")); Object.keys(params).forEach(function (key) { if (params[key] === undefined || params[key] === null) params[key] = ""; }); params.ownTime = $scope.queryOwnTime(params.ownTime, "int"); params.effectiveTime ? params.effectiveTime = $scope.getQueryDate(params.effectiveTime, "-") : delete params.effectiveTime; params.fileTime ? params.fileTime = $scope.getQueryDate(params.fileTime, "-") : delete params.fileTime; params.createTime ? params.createTime = $scope.getQueryDate(params.createTime, "-") : delete params.createTime; params.updateTime ? params.updateTime = $scope.getQueryDate(params.updateTime, "-") : delete params.updateTime; params.uploadTime ? params.uploadTime = $scope.getQueryDate(params.uploadTime, "-") : delete params.uploadTime; params.filePositionUrl = encodeURIComponent(params.filePositionUrl); params.auditStatus = $scope.transformAuditStatusToServer(params.auditStatus); taxDocumentListService.editRecord(params).then(function (data) { if (data == true) { if (type == 'simple') { SweetAlert.swal({ title: $translate.instant("Edited"), type: "success", confirmButtonText: $translate.instant('Confirm'), closeOnConfirm: true }, function (isConfirm) { if (isConfirm) $scope.loadMainData(); }); } else { if ($scope.multiUploadSuccessItems.length == 0) { SweetAlert.swal({ title: $translate.instant("Uploaded"), type: "success", confirmButtonText: $translate.instant('Confirm'), closeOnConfirm: true }, function (isConfirm) { if (isConfirm) $scope.loadMainData(); }); } } } else { SweetAlert.warning($translate.instant('SaveFail')); } }); } function delHisRecord(cellId) { var delIDs = []; delIDs.push(cellId); taxDocumentListService.delFileRecordItems({ "ids": delIDs }).then(function (data) { if (data) { } }); }; //取消 var cancelDocFileType = function () { $scope.multiUploadSuccessItems.length = 0; $scope.multiUploader.clearQueue(); $scope.uploader.clearQueue(); $scope.multiUploadErrorItems.length = 0; $scope.editFieldModel = {}; }; var delRecord = function () { var delIDs = []; // delItems.ids = []; $("input[name='dataGridCheckBox']").each(function (index, tdCell) { if (tdCell.checked) { var cellId = $(tdCell).attr('data-id'); delIDs.push(cellId); } }); if (delIDs.length == 0) { SweetAlert.warning($translate.instant("NeedChecked")); } else { SweetAlert.swal({ title: $translate.instant("Warning"), text: $translate.instant("Confirm delete"), type: "warning", showCancelButton: true, confirmButtonColor: "#DD6B55", confirmButtonText: $translate.instant('Confirm'), cancelButtonText: $translate.instant('Cancel4Tax'), closeOnConfirm: true, closeOnCancel: true }, function (isConfirm) { if (isConfirm) { taxDocumentListService.delFileRecordItems({ "ids": delIDs }).then(function (data) { if (data) { SweetAlert.swal({ title: $translate.instant("Deleted"), type: "success", confirmButtonText: $translate.instant('Confirm'), closeOnConfirm: true }, function (isConfirm) { if (isConfirm) $scope.loadMainData(); }); } }); } }) } }; $(document).ready(function (e) { var counter = 0; if (window.history && window.history.pushState) { window.onpopstate = function () { window.history.pushState('forward', null, '#'); window.history.forward(1); location.replace(document.referrer);//刷新 }; } //在IE中必须得有这两行 window.history.pushState('forward', null, '#'); window.history.forward(1); }); (function initialize() { $scope.editFieldModel = {}; $scope.uploader = {}; $scope.loadMainData(); //注册方法 $scope.openSimpleUploadPop = openSimpleUploadPop; $scope.delRecord = delRecord; $scope.addLogicAfterUploadFile = addLogicAfterUploadFile; $scope.simpleUploadSubmit = simpleUploadSubmit; $scope.coverDocFileRecord = editDocFileRecord; $scope.cancelDocFileType = cancelDocFileType; })(); }]); taxDocumentManageModule.directive('dateTimePicker', function () { return { restrict: 'EA', replace: true, controller: ['$scope', '$element', '$attrs', 'region', function ($scope, $element, $attrs, region) { // 鼠标down的时候动态创建 var year = new Date().getFullYear(); // viewMode:0-days 1-mons 2-years // minViewMode:0-days 1-mons 2-years $element.off('mousedown').on('mousedown', function (e) { $element.datepicker({ startDate: new Date(year - 20, 1, 1), endDate: new Date(year + 20, 1, 1), viewMode: $attrs["viewMode"] ? parseInt($attrs["viewMode"]) : 0, minViewMode: $attrs["minViewMode"] ? parseInt($attrs["minViewMode"]) : 0, autoclose: true, language: region, todayBtn: 'linked', clearBtn: true //清除按钮 }).off("changeDate").on('changeDate', function (ev) { runCallback(ev); }).off("hide").on("hide", function () { killPlugin(); }) }); function resetValue() { $element.val(""); } function killPlugin() { // 当选择完毕的时候,就摧毁控件,腾出内存 $element.datepicker('remove'); } function runCallback(ev) { // changeDate的操作主要是为了,视图上被合并单元格之后,数据需要同步到被合并的单元格上 // 这样做需要满足两个接口: // @rowName : 当行的数据模型的名字, // @itemIndex : 当前数据模型在行数据模型中的下标, // @callback : 回调,返回两个值,一个是选择的日期,一个是当前单元格的数据模型 var saafTable = $scope[$attrs["table"]]; var callback = saafTable ? saafTable.getData : $scope[$attrs["callback"]]; var peerRow = $scope[$attrs["rowName"]]; var itemIndex = $attrs["itemIndex"]; if (callback) callback(ev.currentTarget.value, peerRow[itemIndex]); } function setDateRang() { // 当启动焦点事件的时候,才判断设置时间范围 $element.datepicker("setStartDate", $attrs.startdate ? $attrs.startdate : new Date(year - 20, 1, 1)); $element.datepicker("setEndDate", $attrs.enddate ? $attrs.enddate : new Date(year + 20, 1, 1)); } function getLayout(e) { var result = "bottom-left"; var $ = angular.element; var target = $(e.currentTarget); var targetTop = target.offset().top; var targetHeight = target.height(); var winHeight = document.body.clientHeight; // 300为插件的默认高度(固定值) // 取固定值是因为,【设置显示位置】的API只能在创建时使用 if (targetTop + 300 + targetHeight > winHeight) { result = "top-left"; } return result; } }] } }); taxDocumentManageModule.directive('fileUploader', function () { return { restrict: "EA", controller: ['$scope', 'FileUploader', 'apiInterceptor', 'taxDocumentListService', '$translate', 'SweetAlert', '$compile', function ($scope, FileUploader, apiInterceptor, taxDocumentListService, $translate, SweetAlert, $compile) { $scope.uploadFile = function () { $("#uploadFilePlugin").click(); }; $scope.uploader = new FileUploader({ url: apiInterceptor.webApiHostUrl + "/taxDoc/add", // autoUpload: true,//添加后,自动上传 headers: {"Authorization": apiInterceptor.tokenType + ' ' + apiInterceptor.apiToken()}, // removeAfterUpload: true, }); $scope.uploader.filters.push({//xls限制 name: 'fileTypeFilter', fn: function (item, options) { var fileNativePath = $("#uploadFilePlugin")[0].value || ""; fileNativePath = fileNativePath.replace(/fakepath/img, "******"); fileNativePath = fileNativePath.replace(item.name, ""); // var splitMark = /\//.test(fileNativePath) ? "/" : "\\"; // var prevPath = fileNativePath.split(splitMark); // prevPath.pop(); // fileNativePath = prevPath.join(splitMark) + splitMark; $scope.editFieldModel.fileNativePath = fileNativePath; $scope.editFieldModel.fileName = item.name; // $scope.autoMatchAttrAndType(item.name, $scope.editFieldModel); return true; } }); $scope.uploader.onAfterAddingFile = function (item) { console.info("is added!", item); }; $scope.uploader.onErrorItem = function (fileItem, response, status, headers) { SweetAlert.warning($translate.instant('FailUpload')); $scope.editFieldModel = {}; }; // $scope.uploader.onCancelItem = function(fileItem, response, status, headers) { // console.info('onCancelItem', fileItem, response, status, headers); // }; $scope.uploader.onSuccessItem = function (fileItem, response, status, headers) { var title = $translate.instant("Uploaded"); if ($scope.isCoverOperation) { title = $translate.instant("Edited"); } else { title = $translate.instant("Uploaded"); } SweetAlert.swal({ title: title, type: "success", confirmButtonText: $translate.instant('Confirm'), closeOnConfirm: true }, function (isConfirm) { if (isConfirm) $scope.loadMainData(); }); $('#simpleUploadPopDialog').modal('hide'); }; }] } }); taxDocumentManageModule.directive('multiFileUploader', function () { return { restrict: "EA", controller: ['$scope', 'FileUploader', 'apiInterceptor', 'taxDocumentListService', '$translate', 'SweetAlert', '$compile', function ($scope, FileUploader, apiInterceptor, taxDocumentListService, $translate, SweetAlert, $compile) { $scope.multiUploadErrorItems = []; $scope.multiUploadSuccessItems = []; $scope.multiUploader = {}; $scope.FileItem = {isSuccess: false}; $scope.abandonFileCache = []; $scope.uploadResultSuccessList = []; $scope.activeTab = function (activeIndex) { $scope.multiUploadErrorItems.forEach(function (item) { item.iShow = false; }); $scope.multiUploadErrorItems[activeIndex].iShow = true; }; $scope.openMultiUploadPop = function () { clearCache();//清空缓存 $("#multiUploadFilePlugin").click(); $scope.multiUploader.clearQueue(); $("#multiUploadFilePlugin").val(null); //这一步主要防止第二次选择相同文件的时候无响应 }; $scope.multiUploader = new FileUploader({ // autoUpload: true,//添加后,自动上传 headers: {"Authorization": apiInterceptor.tokenType + ' ' + apiInterceptor.apiToken()}, removeAfterUpload: true, }); // $scope.multiUploader.filters.push({//xls限制 // name: 'fileTypeFilter', // fn: function (fileItem, options) { // var result = true; // if(!result)$scope.unVerifyFileCache.push(fileItem); // return result; // } // }); $scope.multiUploader.onAfterAddingFile = function (fileItem) { createFieldModel(fileItem); }; function createFieldModel(fileItem) { var fileNativePath = $("#multiUploadFilePlugin")[0].value || ""; fileNativePath = fileNativePath.replace(/fakepath/img, "******"); fileNativePath = fileNativePath.replace(fileItem.file.name, ""); var thisModel = { fileNativePath: fileNativePath, fileName: fileItem.file.name, iShow: false, abandon: false, }; $scope.autoMatchAttrAndType(fileItem.file.name, thisModel); $scope.isAbandonFileItem(thisModel); if (thisModel.abandon) { $scope.multiUploadErrorItems.push(thisModel); } else { $scope.multiUploadSuccessItems.push(thisModel); } } //验证输入值是否都正确填充 //逻辑为:判断当前表单的必填值是否都已填充 //验证失败就推出到失败队列,首先展示失败窗口,再把失败队列显示到编辑窗口 $scope.isAbandonFileItem = function (fieldModel) { // 验证必填字段的值 if (!fieldModel.companyName && fieldModel.companyName != 0 || !fieldModel.fileType && fieldModel.fileType != 0 || !fieldModel.taxType && fieldModel.taxType != 0 || !fieldModel.ownTime && fieldModel.ownTime != 0 || !fieldModel.fileTime && fieldModel.fileTime != 0 ) { fieldModel.abandon = true; } }; $scope.multiUploader.onSuccessItem = function (fileItem, response) { var fieldModel = {}; fileItem.formData.forEach(function (formItem) { Object.keys(formItem).forEach(function (key) { fieldModel[key] = formItem[key]; }) }); // $scope.multiUploadSuccessItems.push(fieldModel); $scope.uploadResultSuccessList.push(fieldModel); $('#busy-indicator-container').show(); }; $scope.multiUploader.onErrorItem = function (fileItem) { //todo 重新构造一个editModel var fieldModel = {}; fileItem.formData.forEach(function (formItem) { Object.keys(formItem).forEach(function (key) { fieldModel[key] = formItem[key]; }) }); // fieldModel.file = fileItem; if (verifyFieldModelDup(fieldModel, $scope.multiUploadErrorItems) === -1) { $scope.multiUploadErrorItems.push(fieldModel); } var successDupIndex = verifyFieldModelDup(fieldModel, $scope.multiUploadSuccessItems); if (successDupIndex > -1) { $scope.multiUploadSuccessItems.splice(successDupIndex, 1); } $scope.abandonFileCache.push(fileItem); }; function verifyFieldModelDup(fieldModel, uploadModelItems) { var dupIndex = -1; uploadModelItems.forEach(function (modelItem, modelIndex) { if (fieldModel.companyName === modelItem.companyName && fieldModel.fileType === modelItem.fileType && fieldModel.taxType === modelItem.taxType && fieldModel.ownTime === modelItem.ownTime && fieldModel.fileTime === modelItem.fileTime) { dupIndex = modelIndex; } }); return dupIndex; } // $scope.multiUploader.onCancelItem = function(fileItem, response, status, headers) { // console.info('onCancelItem', fileItem, response, status, headers); // }; $scope.multiUploader.onAfterAddingAll = function () { if ($scope.multiUploadErrorItems.length) { $scope.abandonFileCache.length = 0; $scope.multiUploadErrorItems.forEach(function (errItem) { var queueLen = $scope.multiUploader.queue.length; while (queueLen--) { var queueItem = $scope.multiUploader.queue[queueLen]; if (errItem.fileName === queueItem._file.name) { $scope.abandonFileCache.push(queueItem); $scope.multiUploader.removeFromQueue(queueLen); break; } } }); } if ($scope.multiUploader.queue.length) { $scope.multiUploadSubmit_auto(); } else { $("#uploadResultPop").modal("show"); } }; $scope.multiUploadSubmit_auto = function () { for (var i = 0; i < $scope.multiUploader.queue.length; i++) { // 先设置uploader队列里每个文件的请求参数:fileOriginalName var fileItem = $scope.multiUploader.queue[i]; fileItem.formData = [{ fileOriginName: fileItem.name ? fileItem.name : fileItem._file.name }]; $scope.matchCompanyId($scope.multiUploadSuccessItems[i]); var editFieldModel = $scope.multiUploadSuccessItems[i]; editFieldModel.effectiveTime ? editFieldModel.effectiveTime = $scope.getQueryDate(editFieldModel.effectiveTime, "-") : delete editFieldModel.effectiveTime; editFieldModel.createTime ? editFieldModel.createTime = $scope.getQueryDate(editFieldModel.createTime, "-") : delete editFieldModel.createTime; editFieldModel.updateTime ? editFieldModel.updateTime = $scope.getQueryDate(editFieldModel.updateTime, "-") : delete editFieldModel.updateTime; editFieldModel.uploadTime ? editFieldModel.uploadTime = $scope.getQueryDate(editFieldModel.uploadTime, "-") : delete editFieldModel.uploadTime; editFieldModel.fileTime ? editFieldModel.fileTime = $scope.getQueryDate(editFieldModel.fileTime, "-") : delete editFieldModel.fileTime; Object.keys(editFieldModel).forEach(function (key) { var curItemValue = editFieldModel[key] ? editFieldModel[key] : ""; fileItem.formData.push($scope.queryFileUploadData(key, curItemValue)); }); (function (_i, _fileItem, _editFieldModel, _taxDocumentListService, _multiUploader) { var params = angular.copy(_editFieldModel); // params.ownTime = params.ownTime ? params.ownTime : ""; // params.ownTime = parseInt(_editFieldModel.ownTime.split("-").join("")); params.ownTime = $scope.queryOwnTime(params.ownTime, "int"); params.fileTime = $scope.getQueryDate(params.fileTime, "-"); params.effectiveTime = $scope.getQueryDate(params.effectiveTime, "-"); _taxDocumentListService.verifyDuplicate(params).then(function (data) { //data.id===null|| data.id===undefined,代表可以直接上传,否则属于覆盖行为 if (data.id === null || data.id === undefined) { _fileItem.url = apiInterceptor.webApiHostUrl + "/taxDoc/add"; _multiUploader.uploadItem(_i); } else { //覆盖行为-需上传参数 _fileItem.formData.push({id:data.id}); var Cover_Confirm="'"+data.fileName+"' 记录已经存在,是否进行覆盖?"; Ewin.confirm({ message: Cover_Confirm }).on(function (e) { if (!e) { return; } setTimeout(function () { try { _fileItem.url = apiInterceptor.webApiHostUrl + "/taxDoc/edit"; _multiUploader.uploadItem(_i); } catch (e) { SweetAlert.warning(e.message); } }, 1000); }); } }); })(i, fileItem, editFieldModel, taxDocumentListService, $scope.multiUploader); } }; $scope.multiUploader.onCompleteAll = function () { if ($scope.multiUploadErrorItems.length) $scope.multiUploadErrorItems[0].iShow = true; if ($scope.multiUploadErrorItems.length || $scope.uploadResultSuccessList.length) $("#uploadResultPop").modal("show"); //是否都上传成功 if ($scope.multiUploadErrorItems.length > 0) { $scope.FileItem.isSuccess = false; } else { $scope.FileItem.isSuccess = true; } $('#busy-indicator-container').hide(); $scope.loadMainData(); }; $scope.confirmUploadResult = function () { $scope.multiUploadSuccessItems.length = 0; // 默认显示第一个 if ($scope.multiUploadErrorItems.length) { $scope.multiUploadErrorItems.forEach(function (errorItem) { errorItem.iShow = false; }); $scope.multiUploadErrorItems[0].iShow = true; } $('#uploadResultPop').modal('hide'); if ($scope.FileItem.isSuccess == false) { $("#multiUploadPopDialog").modal("show"); } else { $scope.FileItem.isSuccess = false; } }; $scope.closeUploadReview = function () { clearCache(); $("#multiUploadPopDialog").modal("hide"); }; function clearCache() { $scope.uploadResultSuccessList.length = 0; $scope.multiUploadErrorItems.length = 0; $scope.multiUploadSuccessItems.length = 0; $scope.multiUploader.clearQueue(); } $scope.multiUploadSubmit_handmade = function () { var alertContent = verifyRequiredFields($scope.multiUploadErrorItems); if (!alertContent) { exchangedFieldModel(); addFileItemToQueueFromCache(); $("#multiUploadPopDialog").modal("hide"); multiUpload_handmade(); } else { swal(alertContent); } }; function addFileItemToQueueFromCache() { $scope.abandonFileCache.forEach(function (fileItem) { $scope.multiUploader.queue.push(fileItem); }); $scope.abandonFileCache.length = 0; } function exchangedFieldModel() { $scope.multiUploadErrorItems.forEach(function (errItem) { $scope.multiUploadSuccessItems.push(errItem); }); $scope.multiUploadErrorItems.length = 0; } function verifyRequiredFields(multiUploadErrorItems) { var alertText = ""; if (!$scope.requiredField.length) { return $translate.instant("PleaseChecksRequired"); } //todo 先获取必填字段 for (var i = 0; i < multiUploadErrorItems.length; i++) { var modelItem = multiUploadErrorItems[i]; // $scope.isRequired = function (IT8nField) { // return $scope.requiredField.indexOf($translate.instant(IT8nField)) > -1; // }; if (!PWC.isNullOrEmpty(modelItem.fileTime) && !PWC.isNullOrEmpty(modelItem.effectiveTime) && modelItem.fileTime > modelItem.effectiveTime) { alertText = $translate.instant("Document") + (i + 1) + "," + "【"+$translate.instant('FileTimeDateRangeError')+"】"; break; } if(!modelItem.companyName && $scope.isRequired($translate.instant("CompanyName"))){ alertText += "【"+$translate.instant("CompanyName")+"】" } if(!modelItem.fileType && $scope.isRequired($translate.instant("Document Type"))){ alertText += "【"+$translate.instant("Document Type")+"】" } if(!modelItem.fileAttr && $scope.isRequired($translate.instant("Document Attribute"))){ alertText += "【"+$translate.instant("Document Attribute")+"】" } if(!modelItem.taxType && $scope.isRequired($translate.instant("Tax Type"))){ alertText += "【"+$translate.instant("Tax Type")+"】" } if(!modelItem.ownTime && $scope.isRequired($translate.instant("Duration"))){ alertText += "【"+$translate.instant("Duration")+"】" } if(!modelItem.fileTime && $scope.isRequired($translate.instant("Effective_Date"))){ alertText += "【"+$translate.instant("Effective_Date")+"】" } if(!modelItem.effectiveTime && $scope.isRequired($translate.instant("Due Date"))){ alertText += "【"+$translate.instant("Due Date")+"】" } if(!modelItem.keeper && $scope.isRequired($translate.instant("Custodian"))){ alertText += "【"+$translate.instant("Custodian")+"】" } if(!modelItem.storageArea && $scope.isRequired($translate.instant("Storage Location"))){ alertText += "【"+$translate.instant("Storage Location")+"】" } if(!modelItem.physicalIndexNumber && $scope.isRequired($translate.instant("Storage Index"))){ alertText += "【"+$translate.instant("Storage Index")+"】" } if(!modelItem.remark && $scope.isRequired($translate.instant("Remarks"))){ alertText += "【"+$translate.instant("Remarks")+"】" } if(alertText.length > 0){ alertText = $translate.instant("Document") + (i + 1) + "," + alertText + $translate.instant("IsRequired"); break; } } return alertText; } function multiUpload_handmade() { for (var i = 0; i < $scope.multiUploader.queue.length; i++) { // 过滤参数格式,并把参数推进上传队列 var fileItem = $scope.multiUploader.queue[i]; // 先设置uploader队列里每个文件的请求参数:fileOriginalName fileItem.formData = [{ fileOriginName: fileItem.name ? fileItem.name : fileItem._file.name }]; $scope.matchCompanyId($scope.multiUploadSuccessItems[i]); var editFieldModel = $scope.multiUploadSuccessItems[i]; editFieldModel.effectiveTime ? editFieldModel.effectiveTime = $scope.getQueryDate(editFieldModel.effectiveTime, "-") : delete editFieldModel.effectiveTime; editFieldModel.createTime ? editFieldModel.createTime = $scope.getQueryDate(editFieldModel.createTime, "-") : delete editFieldModel.createTime; editFieldModel.updateTime ? editFieldModel.updateTime = $scope.getQueryDate(editFieldModel.updateTime, "-") : delete editFieldModel.updateTime; editFieldModel.uploadTime ? editFieldModel.uploadTime = $scope.getQueryDate(editFieldModel.uploadTime, "-") : delete editFieldModel.uploadTime; editFieldModel.fileTime ? editFieldModel.fileTime = $scope.getQueryDate(editFieldModel.fileTime, "-") : delete editFieldModel.fileTime; Object.keys(editFieldModel).forEach(function (key) { var curItemValue = editFieldModel[key] ? editFieldModel[key] : ""; fileItem.formData.push($scope.queryFileUploadData(key, curItemValue)); }); (function (_i, _fileItem, _editFieldModel, _taxDocumentListService, _multiUploader) { var params = angular.copy(_editFieldModel); params.ownTime = $scope.queryOwnTime(params.ownTime, "int"); params.fileTime = $scope.getQueryDate(params.fileTime, "-"); params.effectiveTime = $scope.getQueryDate(params.effectiveTime, "-"); _taxDocumentListService.verifyDuplicate(params).then(function (data) { //data.id===null|| data.id===undefined,代表可以直接上传,否则属于覆盖行为 if (data.id === null || data.id === undefined) { _fileItem.url = apiInterceptor.webApiHostUrl + "/taxDoc/add"; _multiUploader.uploadItem(_i); } else { //覆盖行为-需上传参数 _fileItem.formData.push({id:data.id}); var Cover_Confirm="'"+data.fileName+"' 记录已经存在,是否进行覆盖?"; Ewin.confirm({ message: Cover_Confirm }).on(function (e) { if (!e) { return; } setTimeout(function () { try { _fileItem.url = apiInterceptor.webApiHostUrl + "/taxDoc/edit"; _multiUploader.uploadItem(_i); } catch (e) { SweetAlert.warning(e.message); } }, 1000); }); } }); })(i, fileItem, editFieldModel, taxDocumentListService, $scope.multiUploader); } } }] } }); taxDocumentManageModule.directive('filePreview', function () { return { restrict: 'EA', controller: ['$log','$scope', '$translate', 'SweetAlert', '$compile', 'taxDocumentListService', '$q', function ($log,$scope, $translate, SweetAlert, $compile, taxDocumentListService, $q) { $scope.previewData = []; /**上传时预览的功能取消 2019/3/8*/ /* $scope.viewNativeFile = function(fileItem){ if(!fileItem) return SweetAlert.warning($translate.instant('NeedLoadUp')); var fileType = fileItem.filePositionUrl.split(".").pop(); if(/xlsx|xls/i.test(fileType)){ var reader = new FileReader(); reader.onload = function (e) { /!* read workbook *!/ var wb = window.XLSX.read(e.target.result, {type:"binary"}); var data = window.XLSX.utils.sheet_to_json(wb.Sheets[wb.SheetNames[0]]); if(data.length){ $scope.filePreview_dataGridUpdate(data); $("#filePreviewPop").modal("show"); } else{ SweetAlert.warning($translate.instant('UnReadFile')); } /!* DO SOMETHING WITH workbook HERE *!/ }; reader.readAsBinaryString(fileItem._file); }else if(/pdf/i.test(fileType)){ $scope.openPdfPreviewPop(fileItem.filePositionUrl); }else{ SweetAlert.warning($translate.instant('UnFile')); } };*/ $scope.currentSheetName = ''; var sheetCurPageIndex = 0; var sheetSumPages = 1; var sheetPromise = null; var cacheUrl = null; $scope.prevPaging_xls = function () { if (sheetCurPageIndex <= 0) return sheetCurPageIndex = 0; sheetCurPageIndex--; sheetPromise.then(function (resData) { renderXLS(resData) }) }; $scope.nextPaging_xls = function () { if (sheetCurPageIndex >= (sheetSumPages - 1)) return sheetCurPageIndex = sheetSumPages - 1; sheetCurPageIndex++; sheetPromise.then(function (resData) { renderXLS(resData) }) }; function getXLS(url) { // return taxDocumentListService.getBinaryData('./bundles/MS Function list - Phase 1.xlsx'); return taxDocumentListService.readXLSX({ path: url // path: 'http://47.94.233.173:11007/static/erp_tax_system/FE9A6FCC-019E-4B93-A9B2-1DD04CDD7431?expire=1552463739&signiture=H15ovgMR4zXwiYlPe4nZMoeLMSZFhimiHFUZ4-SVVaE=' }); } function renderXLS(resData) { try { if (!resData || !resData.length) return SweetAlert.warning("Empty File"); var _resData = JSON.parse(resData); sheetSumPages = _resData.length; var curSheet = _resData[sheetCurPageIndex]; $scope.currentSheetName = Object.keys(curSheet)[0]; if (_resData && _resData.length) { $scope.filePreview_dataGridUpdate(curSheet[$scope.currentSheetName]); $("#filePreviewPop").modal("show"); } } catch (e) { SweetAlert.warning(e.message); } } $scope.viewRemoteFile = function (fileName, filePositionUrl) { if (typeof filePositionUrl !== 'string' || filePositionUrl == 'null' || filePositionUrl == 'undefined') return SweetAlert.warning($translate.instant('UnRecord')); //区分文件类型 fileName = fileName ? fileName : ""; var fileType = fileName.split(".").pop(); if (/xlsx|xls/i.test(fileType)) { $('#busy-indicator-container').show(); taxDocumentListService.viewExcelBySpread(fileType,filePositionUrl).then(function (reportSpread) { var spreadCtrl = new GC.Spread.Sheets.Workbook(document.getElementById("excetlContainer")); if (spreadCtrl) { spreadCtrl.destroy(); } spreadCtrl = null; if (!_.isEmpty(reportSpread)) { initSpreadExcel(reportSpread).then(function (spread) { /* return locateCell(spread, true);*/ $('#busy-indicator-container').hide(); }); } }, function (data) { $('#busy-indicator-container').hide(); $log.info(data); }); } // sheetPromise.then(function (resData) { // renderXLS(resData) // }) else if (/pdf/i.test(fileType)) { $scope.openPdfPreviewPop(filePositionUrl); } else if (/jpg|pig|gif|png|jpeg/i.test(fileType)) { $scope.openImgPreviewPop(fileName, filePositionUrl); } else { SweetAlert.warning($translate.instant('UnFile')); } }; var initSpreadExcel = function (reportSpread) { $("#filePreviewPop").modal("show"); var spread = new GC.Spread.Sheets.Workbook(document.getElementById("excetlContainer")); // spread.suspendPaint(); spread.fromJSON(reportSpread); // spread.options.showVerticalScrollbar = true; // spread.options.showHorizontalScrollbar = true; // spread.options.scrollbarMaxAlign = true; // spread.options.scrollbarShowMax = true; // spread.options.tabNavigationVisible = true; // if (constant.regesterInformation.active) { // spread.options.tabEditable = false; // spread.options.tabStripVisible = false; // spread.options.newTabVisible = false; // } // spread.options.allowUndo = false; // spread.options.allowUserResize = false; // spread.options.allowUserDragDrop = false; // spread.options.allowUserDragFill = false; // spread.options.allowUserEditFormula = false; // spread.options.allowContextMenu = false; // //todo:注册之后这里去掉注释 // //var sheet = spread.getActiveSheet(); // // var sheet; // if (constant.regesterInformation.active) { // sheet = spread.getActiveSheet(); // } else { // sheet = spread.getSheet(1); // } // if (sheet != null) { // sheet.options.rowHeaderVisible = true; // sheet.options.colHeaderVisible = true; // sheet.options.gridline.showVerticalGridline = true; // sheet.options.gridline.showHorizontalGridline = true; // sheet.options.isProtected = true; // sheet.clearSelection(); // } // // setColWidth(sheet); // // if(sheet.getRowCount() <= 38) // // scope.relation.addEbitRow(sheet) // // if (scope.templateId && scope.reportSource) { // // setData(); // // } // sheet.setRowResizable(0, false, GC.Spread.Sheets.SheetArea.viewport); // spread.resumePaint(); return $q.when(spread); }; $scope.filePreview_dataGridUpdate = function (_data) { // console.info("excel:",_data); $scope.previewData = _data || [{}]; var field_keys = Object.keys(_data[0]); var field_values = Object.values(_data[0]); // _data.forEach(function (item) { // var curRow_keys = Object.keys(item); // var curRow_values = Object.values(item); // if (curRow_keys && curRow_keys.length > field_keys.length) { // field_keys = curRow_keys; // field_values = curRow_values; // } // }); $scope.filePreview_dataGridOptions = { bindingOptions: { dataSource: 'previewData', }, showBorders: true, paging: { enable: true, pageIndex: 1, pageSize: 10 }, pager: { allowedPageSizes: 5, infoText: "当前 {0}页 /共 {1}页 ({2} 项)", showInfo: true, showNavigationButtons: true, showPageSizeSelector: true, visible: true }, searchPanel: {//查询 highlightCaseSensitive: true, highlightSearchText: true, searchVisibleColumnsOnly: false, text: "", width: 518, visible: true, placeholder: $translate.instant('Search'), }, sorting: {//排序 ascendingText: "Sort Ascending", clearText: "Clear Sorting", descendingText: "Sort Descending", mode: "single" }, showRowLines: true, columnAutoWidth: true, allowColumnReordering: true, columns: (function () { var cols = []; field_keys.forEach(function (field, index) { cols.push({ dataField: field, caption: field_values[index] }); }); return cols; })(), rowAlternationEnabled: true, //单双行颜色 }; var dataGrid = $('<div dx-data-grid="filePreview_dataGridOptions">'); $("#preview_dataGrid").html("").append(dataGrid); $compile(dataGrid)($scope); }; $scope.hideFilePreviewPop = function () { $("#preview_dataGrid").html(""); $("#filePreviewPop").modal("hide"); }; $scope.resetDataForm = function () { $scope.previewData.length = 0; if ($scope.filePreview_dataGridOptions) $scope.filePreview_dataGridOptions.columns.length = 0; }; }] } }); taxDocumentManageModule.directive('pdfPreview', function () { return { restrict: 'EA', controller: ['$scope','taxDocumentListService', function ($scope,taxDocumentListService) { window.PDFJS.workerSrc = './bundles/pdf.worker.js'; var canvas = document.getElementById('the-canvas'); var context = canvas.getContext('2d'); var pdfCurPageIndex = 1; var pdfSumPages = 1; var container = document.getElementById("pdfLayoutDialog"); var pdfPromise = null; var cacheUrl = null; var pageInfo=null;//pdf页面信息 var angle=0;//旋转角度 $scope.openPdfPreviewPop_bak = function (url) { container.style.display = "block"; if (cacheUrl !== url) { cacheUrl = url; pdfPromise = getPdf(url); } pdfPromise.then(function (pdf) { renderPdf(pdf) }) }; $scope.openPdfPreviewPop = function (url) { container.style.display = "block"; function start() { return new Promise(function (resolve, reject){ resolve('start'); }); } start().then(function(data) { return taxDocumentListService.readPDF({path:url}); }).then(function(dataURL) { var pdfData=null; if(typeof dataURL =="string"){ pdfData = convertDataURIToBinary(dataURL); } return window.PDFJS.getDocument({data:pdfData}); }).then(function(data) { pdfSumPages = data.numPages; return data.getPage(pdfCurPageIndex); }).then(function(page){ pageInfo=page; var scale = 1.5; var viewport = page.getViewport(scale); canvas.height = viewport.height; canvas.width = viewport.width; var renderContext = { canvasContext: context, viewport: viewport }; page.render(renderContext); }); }; function convertDataURIToBinary(dataURI) { //将encodeBase64解码 var raw = window.atob(dataURI); var rawLength = raw.length; //转换成pdf.js能直接解析的Uint8Array类型,见pdf.js-4068 var array = new Uint8Array(new ArrayBuffer(rawLength)); for(var i = 0; i < rawLength; i++) { array[i] = raw.charCodeAt(i); } return array; } $scope.closePdfPop = function () { container.style.display = "none"; }; $scope.prevPaging = function () { if (pdfCurPageIndex <= 1) return pdfCurPageIndex = 1; pdfCurPageIndex--; pdfPromise.then(function (pdf) { renderPdf(pdf) }) }; $scope.nextPaging = function () { if (pdfCurPageIndex >= pdfSumPages) return pdfCurPageIndex = pdfSumPages; pdfCurPageIndex++; pdfPromise.then(function (pdf) { renderPdf(pdf) }) }; $scope.webViewerRotateCw =function(){ angle+=90; var scale = 1.5; var viewport = pageInfo.getViewport(1.5,angle); canvas.height = viewport.height; canvas.width = viewport.width; var renderContext = { canvasContext: context, viewport: viewport }; pageInfo.render(renderContext); }; function getPdf(url) { // var url = 'http://47.94.233.173:11007/static/erp_tax_system/61063D1D-8C9E-47C1-B106-AFF696CF5D98?expire=1552466477&signiture=5IaoVIHX_pzmQgyaxdzYC2NsNOz_R0eyRUhQU1BJjiE='; return window.PDFJS.getDocument(url); } function renderPdf(pdf) { pdfSumPages = pdf.numPages; pdf.getPage(pdfCurPageIndex).then(function getPageHelloWorld(page) { var scale = 1.5; var viewport = page.getViewport(scale); // // Prepare canvas using PDF page dimensions // canvas.height = viewport.height; canvas.width = viewport.width; // // Render PDF page into canvas context // var renderContext = { canvasContext: context, viewport: viewport }; page.render(renderContext); }); } }] } }); taxDocumentManageModule.directive('imgPreview', function () { return { restrict: 'EA', controller: ['$scope', function ($scope) { $scope.curImgSrc = ""; $scope.curImgName = ""; $scope.openImgPreviewPop = function (fileName, url) { if ($scope.curImgSrc !== url) { $scope.curImgName = fileName; $scope.curImgSrc = url; } $("#imgLayoutDialog").modal("show"); }; $scope.closeImgPop = function () { $("#imgLayoutDialog").modal("hide"); }; }] } }); taxDocumentManageModule.directive('helpPop', function () { return { restrict: 'EA', controller: ['$scope', 'taxDocumentListService', '$translate', '$compile', 'SweetAlert', function ($scope, taxDocumentListService, $translate, $compile, SweetAlert) { $scope.curEditModel = null; $scope.openHelpPop = function (curEditModel) { $scope.curEditModel = curEditModel; $scope.help_loadData(); }; $scope.help_cacheData = {}; $scope.help_loadData = function () { taxDocumentListService.getDocumentsAttrAndType({params: {}}).then(function (data) { $scope.help_dataGridUpdate(data); var dataGrid = $('<div dx-data-grid="help_dataGridOptions">'); $("#helpPopContainer").html("").append(dataGrid); $compile(dataGrid)($scope); var helpPopDialog = $("#helpPopDialog"); helpPopDialog.modal("show"); }) }; $scope.sniffHelpPopRadio = function () { var checkedItem = $(".TDL-has-checked").children()[0].childNodes[0]; $scope.curEditModel.fileAttr = checkedItem.getAttribute("data-fileAttr"); taxDocumentListService.getDocumentsAttrAndType({params: {}}).then(function (data) { $scope.FileAttrAndTypeCache = data.items; //根据文件属性来匹配出 文件类型下拉列表 $scope.syncFileType($scope.curEditModel.fileAttr); $scope.curEditModel.fileType = checkedItem.getAttribute("data-fileType"); $scope.syncRequiredFields($scope.curEditModel); }); $("#helpPopDialog").modal("hide"); }; $scope.help_dataGridUpdate = function (_data) { $scope.help_cacheData = _data.items; $scope.help_dataGridOptions = { bindingOptions: { dataSource: 'help_cacheData', }, paging: { enable: true, pageIndex: 0, pageSize: 10 }, pager: { allowedPageSizes: 5, infoText: "当前 {0}页 /共 {1}页 ({2} 项)", showInfo: true, showNavigationButtons: true, showPageSizeSelector: true, visible: true }, showBorders: true, showRowLines: true, columnAutoWidth: true, allowColumnReordering: true, columns: [ { dataField: "fileAttr", caption: $translate.instant('Document Attribute'), cellTemplate: function (container, options) { var target = $('<span name="helpPopRadio" type="radio" ' + 'data-id="helpPop_' + options.data.id + '" ' + 'data-fileAttr="' + options.data.fileAttr + '" ' + 'data-fileType="' + options.data.fileType + '">' + options.data.fileAttr + '</span>'); container.append(target); var trs = $("#helpPopDialog").find("tr"); trs.each(function (index, item) { $(item).off("click").on("click", function (e) { trs.each(function (_index, _item) { $(_item).removeClass('TDL-has-checked'); }); $(e.currentTarget).addClass('TDL-has-checked'); }) }) } }, { dataField: "fileType", caption: $translate.instant('Document Type'), }, { dataField: "description", caption: $translate.instant('Description'), }, ], }; }; $scope.openHelpPopForEntityStorage = function () { window.swal($translate.instant('EntityStorageDescription')); } }] } }); taxDocumentManageModule.directive('watchGroup', function () { return { restrict: 'EA', controller: ['$scope', 'taxDocumentListService', '$translate', function ($scope, taxDocumentListService, $translate) { $scope.requiredField = []; $scope.FileAttrAndTypeCache = []; taxDocumentListService.getDocumentsAttrAndType({params: {}}).then(function (data) { $scope.FileAttrAndTypeCache = data.items; }); //根据文件属性来匹配出 文件类型下拉列表 $scope.syncFileType = function (curAttr) { $scope.curFileTypeOptions.length = 0; Object.keys($scope.typeAndAttrMap).forEach(function (key) { if (curAttr === $scope.typeAndAttrMap[key]) { $scope.curFileTypeOptions.push(key); } }); }; //根据文件名来匹配出 // 1,公司名 // 2,公司ID // 3,文档属性 // 4,文档类型 // 5,文档类型ID $scope.autoMatchAttrAndType = function (fileName, fieldModel) { fileName = fileName ? fileName : ""; var fieldsArray = fileName.split("_"); // 嘀嘀无限_增值税纳税申报表_增值税_201811_20181201 // 公司名_文档类型_税种_所属期间_到期日 if (fieldsArray.length) { //需要验证每个值在对应的下拉菜单里面有没有对应的值 fieldModel.companyName = $scope.verifyRequiredData(fieldsArray[0], "companyName"); fieldModel.fileType = $scope.verifyRequiredData(fieldsArray[1], "fileType"); fieldModel.taxType = $scope.verifyRequiredData(fieldsArray[2], "taxType"); fieldModel.ownTime = $scope.intToDate(fieldsArray[3]); fieldModel.fileTime = $scope.intToDate(fieldsArray[4]); } // 根据Type来匹配Attr; Object.keys($scope.typeAndAttrMap).forEach(function (key) { if (fieldModel.fileType === key) { fieldModel.fileAttr = $scope.verifyRequiredData($scope.typeAndAttrMap[key], "fileAttr"); } }); $scope.syncFileType(fieldModel.fileAttr); $scope.syncRequiredFields(fieldModel); $scope.matchCompanyId(fieldModel); }; // 选了类型之后,就自动匹配必填字段 $scope.syncRequiredFields = function (fieldModel) { $scope.FileAttrAndTypeCache.forEach(function (FATItem) { if (FATItem.fileType === fieldModel.fileType && FATItem.fileAttr === fieldModel.fileAttr) { $scope.requiredField = FATItem.requiredField; } }); // 根据Type来匹配TypeId; $scope.matchFieldTypeId(fieldModel); }; $scope.isRequired = function (IT8nField) { return $scope.requiredField.indexOf($translate.instant(IT8nField)) > -1; }; $scope.matchFieldTypeId = function (fieldModel) { // 根据Type来匹配TypeId; $scope.FileAttrAndTypeCache.forEach(function (FATItem) { if (FATItem.fileType === fieldModel.fileType && FATItem.fileAttr === fieldModel.fileAttr) { fieldModel.fileTypeId = FATItem.id; } }); }; // 选了公司之后,就自动匹配公司ID $scope.matchCompanyId = function (fieldModel) { angular.forEach($scope.companyNameOptionsMap, function (d) { if (d.key === fieldModel.companyName) { fieldModel.companyId = d.val; return; } }) // Object.keys($scope.companyNameOptionsMap).forEach(function (key) { // if ($scope.companyNameOptionsMap[key] === fieldModel.companyName) { // fieldModel.companyId = key; // } // }) }; // 根据当前获取的字段值来匹配下拉菜单,如果匹配不到就返回空字符串,以使得form表单验证功能正常 $scope.verifyRequiredData = function (src, type) { var pass = false; switch (type) { case "taxType": pass = $scope.taxTypeSelects.indexOf(src) > -1; break; case "fileAttr": pass = $scope.fileAttrOptions.indexOf(src) > -1; break; case "fileType": pass = $scope.fileTypeOptions.indexOf(src) > -1; break; case "companyName": angular.forEach($scope.companyNameOptionsMap, function (d) { if (d.key === src) { pass = true; return; } }) break; } return pass ? src : undefined; } }] } }); taxDocumentManageModule.directive('tempModule', function () { return { restrict: 'EA', controller: ['$scope', 'taxDocumentListService', '$translate', function ($scope, taxDocumentListService, $translate) { //税种 $scope.taxTypeSelects = []; angular.forEach(constant.GroupTypeList, function (item) { $scope.taxTypeSelects.push(item.type); }); // $scope.taxTypeSelects = [ // "纳税申报表", // "税票", // "企业所得税", // "印花税", // "附加税", // "代扣代缴税", // "其它税", // "增值税", // ]; //审批状态 $scope.auditSelectsMap = { "0": "待审批", "1": "已审批", "-1": "拒绝审批", }; //机构下拉设置 $scope.queryOrgOptions = { displayExpr: 'key', valueExpr: 'key', // width: '95%', bindingOptions: { value: 'queryFieldModel.companyName', dataSource: 'companyNameOptionsMap', readOnly: 'isOrgReadOnly' }, // height: '30px', placeholder: '', showClearButton: true, searchEnabled: true, showSelectionControls: true }; $scope.editOrgOptions = { displayExpr: 'key', valueExpr: 'key', // width: '95%', bindingOptions: { value: 'editFieldModel.companyName', dataSource: 'companyNameOptionsMap', readOnly: 'isOrgReadOnly' }, // height: '30px', placeholder: '', showClearButton: true, searchEnabled: true, showSelectionControls: true }; $scope.editFieldItemOrgOptions = { displayExpr: 'key', valueExpr: 'key', // width: '95%', bindingOptions: { value: 'editFieldItem.companyName', dataSource: 'companyNameOptionsMap', readOnly: 'isOrgReadOnly' }, // height: '30px', placeholder: '', showClearButton: true, searchEnabled: true, showSelectionControls: true }; $scope.typeAndAttrMap = {}; $scope.fileTypeOptions = []; $scope.fileAttrOptions = []; $scope.fileTypeEnableOptions = []; $scope.fileAttrEnableOptions = []; $scope.curFileTypeOptions = []; $scope.companyNameOptionsMap = []; $scope.loadCompanyNameMap = function(){ taxDocumentListService.getCompanyNameOptions().then(function (res) { if (res && 0 === res.code) { angular.forEach(res.data, function (item) { $scope.companyNameOptionsMap.push({'key': item.abbreviation, 'val': item.id}); // $scope.companyNameOptionsMap[item.id] = item.abbreviation; }); } else { SweetAlert.error($translate.instant('RevenueGetOrgError')); } }); } $scope.loadSelectMap = function () { taxDocumentListService.getFileInfoOptions().then(function (data) { if (data) { $scope.typeAndAttrMap = data; // 抽取每个元素的头一个字串,用于排序; // $scope.fileTypeOptions = $scope.sortByFirstCode(Object.keys(data)); // $scope.fileAttrOptions = $scope.sortByFirstCode(Object.values(data)); $scope.fileTypeOptions = Object.keys(data); $scope.fileAttrOptions = Object.values(data); // 过滤去重 var temp = $scope.fileTypeOptions; $scope.fileTypeOptions = (function () { var result = []; temp.forEach(function (typeItem) { if (result.indexOf(typeItem) === -1) { result.push(typeItem); } }); return result; })(); $scope.fileTypeOptions.sort(); temp = $scope.fileAttrOptions; $scope.fileAttrOptions = (function () { var result = []; temp.forEach(function (attrItem) { if (result.indexOf(attrItem) === -1) { result.push(attrItem); } }); return result; })(); $scope.fileAttrOptions.sort(); } }); }; //加载可用的档案属性 $scope.loadSelectEnableMap = function () { taxDocumentListService.getFileInfoEnableOptions().then(function (data) { if (data) { $scope.typeAndAttrMap = data; // 抽取每个元素的头一个字串,用于排序; // $scope.fileTypeEnableOptions = $scope.sortByFirstCode(Object.keys(data)); // $scope.fileAttrEnableOptions = $scope.sortByFirstCode(Object.values(data)); $scope.fileTypeEnableOptions = Object.keys(data); $scope.fileAttrEnableOptions = Object.values(data); // 过滤去重 var temp = $scope.fileTypeEnableOptions; $scope.fileTypeEnableOptions = (function () { var result = []; temp.forEach(function (typeItem) { if (result.indexOf(typeItem) === -1) { result.push(typeItem); } }); return result; })(); $scope.fileTypeEnableOptions.sort(); temp = $scope.fileAttrEnableOptions; $scope.fileAttrEnableOptions = (function () { var result = []; temp.forEach(function (attrItem) { if (result.indexOf(attrItem) === -1) { result.push(attrItem); } }); return result; })(); $scope.fileAttrEnableOptions.sort(); } }); }; $scope.loadSelectMap(); $scope.loadSelectEnableMap(); $scope.loadCompanyNameMap(); $scope.businessLineOptions = []; $scope.loadBusinessList = function () { taxDocumentListService.getBusinessList().then(function (resData) { $scope.businessLineOptions = resData; }); }; $scope.loadBusinessList(); $scope.getQueryDate = function (time, mark) { if (!time) return ""; var theDate = new Date(time); var year = theDate.getFullYear(); var mm = theDate.getMonth() + 1; var dd = theDate.getDate(); mm = (mm + "").length < 2 ? "0" + mm : mm; dd = (dd + "").length < 2 ? "0" + dd : dd; return year + mark + mm + mark + dd; }; $scope.checkedItemIds = []; $scope.sniffCheckbox = function () { $scope.checkedItemIds.length = 0; $("tr td[name='logCheckedItem']").each(function (index, item) { if (item.checked) { var cellId = $(item).attr("data-id"); $scope.checkedItemIds.push(cellId); } }); console.info($scope.checkedItemIds.join(",")); }; $scope.sniffCheckboxAll=function(){ $("input[name='dataGridCheckBoxALL']").each(function (index, item) { if(item.checked){ $("input[name='dataGridCheckBox']").each(function (index, item) { item.checked=true; }); }else{ $("input[name='dataGridCheckBox']").each(function (index, item) { item.checked=false; }); } }); }; $scope.getMonthLastDate = function (year, month) { year = year ? year : new Date().getFullYear(); month = month ? month : (new Date().getMonth() + 1); var nextMoth = null; if (month == 12) { year += 1; nextMoth = 1; } else { nextMoth = month + 1; } var curMothLastDayObj = new Date(new Date(year, nextMoth, 1).getTime() - 1000 * 60 * 60 * 24); var date = curMothLastDayObj.getDate(); date = (date + "").length < 2 ? "0" + date : date; return date; }; $scope.queryOwnTime = function (target, type) { if (!target) return ""; var result = ""; try { if (type === "int") { if (typeof target === "number") { result = target; } else { var date = new Date(target); var year = date.getFullYear() + ""; var mon = (date.getMonth() + 1) + ""; year = year.length < 2 ? "0" + year : year; mon = mon.length < 2 ? "0" + mon : mon; result = parseInt(year + "" + mon); } } else { var newMark = type; if (typeof target === "number") { var ownTimeString = target + ""; var year = ownTimeString.substr(0, 4); var mon = ownTimeString.substr(4, 2); result = year + newMark + mon; } else { var date = new Date(target); var year = date.getFullYear() + ""; var mon = (date.getMonth() + 1) + ""; year = year.length < 2 ? "0" + year : year; mon = mon.length < 2 ? "0" + mon : mon; result = year + newMark + mon; } } } catch (e) { console.info(e.message); result = ""; } return result; }; $scope.resetQueryField = function () { $scope.queryFieldModel = {}; $("#period-picker1").val(""); $("#period-picker2").val(""); $("#period-picker3").val(""); $("#period-picker4").val(""); }; $scope.sortByFirstCode = function (src) { var result = []; var firstCodesOrigin = []; var originValuesMapping = []; src.forEach(function (key, index) { // 记录原始的下标,拼在第一个字符后面 var firstCode = (key + "").substr(0, 1) + "_" + index; firstCodesOrigin.push(firstCode); originValuesMapping.push(key); }); firstCodesOrigin.sort().forEach(function (firstCodeSortedItem, sortedIndex) { // 循环已排序的首字符数组,根据记录的原始下标,对换originValuesMapping的位置 var originIndex = firstCodeSortedItem.split("_").pop(); result[sortedIndex] = originValuesMapping[originIndex]; }); return result; }; $scope.intToDate = function (src, type) { if (!src) return ""; src = src + ""; type = type ? type : "/"; var year = src.substr(0, 4); var mon = src.substr(4, 2); var day = src.substr(6, 2); if (!day) return year + type + mon; return year + type + mon + type + day; }; $scope.transformAuditStatusToServer = function (src) { var result = 0; if (src === $translate.instant('ApprovalStandby')) { result = 0; } else if (src === $translate.instant('ApprovalPass')) { result = 1; } else if (src === $translate.instant('ApprovalReject')) { result = -1; } else { result = ""; } return result; }; $scope.transformAuditStatusToView = function (src) { var result=""; if(typeof src == 'string'){ if(src == "待审批"|| src == "审批通过"|| src == "拒绝审批"){ result = src; } }else{ if(src == 0){ result = $translate.instant('ApprovalStandby'); }else if(src == 1){ result = $translate.instant('ApprovalPass'); }else if(src == -1){ result = $translate.instant('ApprovalReject'); }else{ result=""; } } return result; }; $scope.queryFileUploadData = function (key, curItemValue) { var fields = {}; if (/ownTime/.test(key)) { fields[key] = $scope.queryOwnTime(curItemValue, "int"); } else { if (/(createTime|updateTime|uploadTime)/.test(key)) { fields[key] = $scope.getQueryDate(curItemValue, "-"); } else fields[key] = curItemValue; } return fields; } }] } }); taxDocumentManageModule.directive('downLoadModule', function () { return { restrict: 'EA', controller: ['$scope', 'taxDocumentListService', '$translate', 'SweetAlert', function ($scope, taxDocumentListService, $translate, SweetAlert) { $scope.downloadAttachment = function () { var checkedIDs = []; var checkedUrls = [ // 'http://47.94.233.173:11007/static/erp_tax_system/3221D133-85B8-4E22-AE9B-DBEBD942D217?expire=1552361736&signiture=_Wz1_8Z6T8h5qnZAGpoRa8kNZeqmE7KoztKeehzYK4U=', // 'http://47.94.233.173:11007/static/erp_tax_system/3221D133-85B8-4E22-AE9B-DBEBD942D217?expire=1552361736&signiture=_Wz1_8Z6T8h5qnZAGpoRa8kNZeqmE7KoztKeehzYK4U=', // 'http://47.94.233.173:11007/static/erp_tax_system/3221D133-85B8-4E22-AE9B-DBEBD942D217?expire=1552361736&signiture=_Wz1_8Z6T8h5qnZAGpoRa8kNZeqmE7KoztKeehzYK4U=', // 'http://47.94.233.173:11007/static/erp_tax_system/3221D133-85B8-4E22-AE9B-DBEBD942D217?expire=1552361736&signiture=_Wz1_8Z6T8h5qnZAGpoRa8kNZeqmE7KoztKeehzYK4U=', ]; $("input[name='dataGridCheckBox']").each(function (index, item) { if (item.checked) { var cellId = $(item).attr("data-id"); var cellUrl = $(item).attr("data-url"); checkedIDs.push(cellId); checkedUrls.push(cellUrl); } }); //是否勾选 if (checkedIDs.length == 0) { return SweetAlert.warning($translate.instant("NeedChecked")); } //是否含附件 if ((checkedUrls.length == 0) || (!checkedUrls[0])) { return SweetAlert.warning($translate.instant('UnRecord')); } if (checkedIDs.length === 1 && checkedUrls.length === 1) { simpDownload(checkedUrls[0]); } else { multiDownToZip(checkedIDs); } }; function simpDownload(url) { // if (!url) return SweetAlert.warning($translate.instant("NeedChecked")); // setTimeout(function () { var frame = $('<iframe style="display: none;" class="multi-download"></iframe>'); frame.attr('src', url); document.body.appendChild(frame[0]); setTimeout(function () { frame.remove(); }, 1000); // }, 100); } function multiDownToZip(ids) { if (!ids.length) return SweetAlert.warning($translate.instant("NeedChecked")); setTimeout(function () { taxDocumentListService.downloadAllFile({ "ids": ids }); }, 500); } /*$scope.downloadAttachment = function () { var checkedURLs = [ // 'http://47.94.233.173:11007/static/erp_tax_system/3221D133-85B8-4E22-AE9B-DBEBD942D217?expire=1552361736&signiture=_Wz1_8Z6T8h5qnZAGpoRa8kNZeqmE7KoztKeehzYK4U=', // 'http://47.94.233.173:11007/static/erp_tax_system/3221D133-85B8-4E22-AE9B-DBEBD942D217?expire=1552361736&signiture=_Wz1_8Z6T8h5qnZAGpoRa8kNZeqmE7KoztKeehzYK4U=', // 'http://47.94.233.173:11007/static/erp_tax_system/3221D133-85B8-4E22-AE9B-DBEBD942D217?expire=1552361736&signiture=_Wz1_8Z6T8h5qnZAGpoRa8kNZeqmE7KoztKeehzYK4U=', // 'http://47.94.233.173:11007/static/erp_tax_system/3221D133-85B8-4E22-AE9B-DBEBD942D217?expire=1552361736&signiture=_Wz1_8Z6T8h5qnZAGpoRa8kNZeqmE7KoztKeehzYK4U=', ]; $("input[name='dataGridCheckBox']").each(function (index, item) { if (item.checked) { var cellUrl = $(item).attr("data-url"); checkedURLs.push(cellUrl); } }); if (!checkedURLs.length) return SweetAlert.warning($translate.instant("NeedChecked")); var triggerDelay = 100; var removeDelay = 1000; checkedURLs.forEach(function (item, index) { if(item)_createIFrame(item, index * triggerDelay, removeDelay); }); function _createIFrame(url, _triggerDelay, _removeDelay) { setTimeout(function () { var frame = $('<iframe style="display: none;" class="multi-download"></iframe>'); frame.attr('src', url); document.body.appendChild(frame[0]); setTimeout(function () { frame.remove(); }, _removeDelay); }, _triggerDelay); } };*/ }] } }); taxDocumentManageModule.directive('exportPlugin', function () { return { restrict: "EA", controller: ['$scope', 'SweetAlert', '$translate', 'taxDocumentListService', '$q', '$log', function ($scope, SweetAlert, $translate, taxDocumentListService, $q, $log) { $scope.exportTableData = function () { $scope.queryFieldModel.currentPage = $scope.pagingOptions.pageIndex; $scope.queryFieldModel.pageSize = $scope.pagingOptions.pageSize; var delIDs = []; $("input[name='dataGridCheckBox']").each(function (index, tdCell) { if (tdCell.checked) { var cellId = $(tdCell).attr('data-id'); delIDs.push(cellId); } }); var params = angular.copy($scope.queryFieldModel); params.ids = delIDs; params.fileBeginTime = getQueryDate(params.fileBeginTime, "-"); params.fileEndTTime = getQueryDate(params.fileEndTTime, "-"); params.ownBeginTime = getQueryDate(params.ownBeginTime, "-"); params.ownEndTime = getQueryDate(params.ownEndTime, "-"); params.effectiveBeginTime = getQueryDate(params.effectiveBeginTime, "-"); params.effectiveEndTime = getQueryDate(params.effectiveEndTime, "-"); params.uploadBeginTime = getQueryDate(params.uploadBeginTime, "-"); params.uploadEndTime = getQueryDate(params.uploadEndTime, "-"); function getQueryDate(time, mark) { if (!time) return ""; var theDate = new Date(time); var year = theDate.getFullYear(); var mm = theDate.getMonth() + 1; var dd = theDate.getDate(); mm = (mm + "").length < 2 ? "0" + mm : mm; dd = (dd + "").length < 2 ? "0" + dd : dd; return year + mark + mm + mark + dd; } taxDocumentListService.exportTableData(params).then(function (data, status, headers) { if (status === 204) { SweetAlert.warning("没有数据可以下载"); return; } exportToExcel(data, 'taxDocument.xls'); }, function () { SweetAlert.error($translate.instant('PleaseContactAdministrator')); })/*.error(function () { SweetAlert.error($translate.instant('PleaseContactAdministrator')); });*/ }; //下载服务器上的xls文件 var exportToExcel = function (data, filename) { $('#busy-indicator-container').show(); var defer = $q.defer(); // var octetStreamMime = 'application/vnd.ms-excel'; var success = false; // Get the headers // headers = headers(); // Get the filename from the x-filename header or default to "download.bin" // var filename = decodeURI(headers['x-file-name']) + defaultFileName; // Determine the content type from the header or default to "application/octet-stream" // var contentType = headers['content-type'] || octetStreamMime; try { // Try using msSaveBlob if supported //console.log("Trying saveBlob method ..."); var blob = new Blob([data], {type: "arraybuffer"}); if (navigator.msSaveBlob) navigator.msSaveBlob(blob, filename); else { // Try using other saveBlob implementations, if available var saveBlob = navigator.webkitSaveBlob || navigator.mozSaveBlob || navigator.saveBlob; if (saveBlob === undefined) throw "Not supported"; saveBlob(blob, filename); } //console.log("saveBlob succeeded"); success = true; } catch (ex) { $log.debug("saveBlob method failed with the following exception:"); $log.debug(ex); } if (!success) { // Get the blob url creator var urlCreator = window.URL || window.webkitURL || window.mozURL || window.msURL; if (urlCreator) { // Try to use a download link var link = document.createElement('a'); if ('download' in link) { // Try to simulate a click try { // Prepare a blob URL //console.log("Trying download link method with simulated click ..."); var blobdownload = new Blob([data], {type: "arraybuffer"}); var urldownload = urlCreator.createObjectURL(blobdownload); link.setAttribute('href', urldownload); // Set the download attribute (Supported in Chrome 14+ / Firefox 20+) link.setAttribute("download", filename); // Simulate clicking the download link var event = document.createEvent('MouseEvents'); event.initMouseEvent('click', true, true, window, 1, 0, 0, 0, 0, false, false, false, false, 0, null); link.dispatchEvent(event); //console.log("Download link method with simulated click succeeded"); success = true; } catch (ex) { $log.debug("Download link method with simulated click failed with the following exception:"); $log.debug(ex); $q.reject(); } } if (!success) { // Fallback to window.location method try { // Prepare a blob URL // Use application/octet-stream when using window.location to force download //console.log("Trying download link method with window.location ..."); var blobsuccess = new Blob([data], {type: "arraybuffer"}); var urlsuccess = urlCreator.createObjectURL(blobsuccess); window.location = urlsuccess; //console.log("Download link method with window.location succeeded"); success = true; } catch (ex) { //console.log("Download link method with window.location failed with the following exception:"); $log.debug(ex); $q.reject(); } } } } if (!success) { // Fallback to window.open method $log.debug("No methods worked for saving the arraybuffer, using last resort window.open"); window.open(httpPath, '_blank', ''); } //Delete the file // deleteFile(encodeURI(filename)); defer.resolve('success'); $('#busy-indicator-container').hide(); return defer.promise; }; }] } });