define(["moment"], function (moment) { return ["$scope", "$filter", "$stateParams", "config", "DashboardService", "MMWService", '$calculater', '$timeout', '$compile', '$mdDialog', function ($scope, $filter, $stateParams, config, $DashboardService, $MMWService, $calculater, $timeout, $compile, $mdDialog) { //報表呈現的筆數<筆數大影響效能> var page_count = 25; var operator =[]; operator.push({ operator_name: $filter('translate')('rpt01.unequal'), operator_no: '<>' }); operator.push({ operator_name: $filter('translate')('rpt01.equal'), operator_no: '=' }); operator.push({ operator_name: $filter('translate')('rpt01.less'), operator_no: '<' }); operator.push({ operator_name: $filter('translate')('rpt01.less_equal'), operator_no: '<=' }); operator.push({ operator_name: $filter('translate')('rpt01.more'), operator_no: '>' }); operator.push({ operator_name: $filter('translate')('rpt01.more_equal'), operator_no: '>=' }); operator.push({ operator_name: $filter('translate')('rpt01.in'), operator_no: 'in' }); operator.push({ operator_name: $filter('translate')('rpt01.like'), operator_no: 'LIKE' }); $scope.report_info = []; $scope.init = function () { //取得所有描述語言報表 Load_Report_info(function (data) { $scope.report_info = JSON.parse(data.ResultJson); }); } $scope.sel_report = function () { $scope.condition_list=[]; $scope.$root.showQueryList({ key: 'page_no', header: [ { label: $filter('translate')('rpt01.reportID'), code: 'report_id' }, { label: $filter('translate')('rpt01.reportName'), code: 'report_name' } ], query: function (conditions, feedback) { feedback($scope.report_info); }, selectCode: $scope.selectareaNo || '', confirm: function (selectItem, dialog) { if (selectItem) { $scope.condition_list = selectItem.script_condition; $scope.report_id = selectItem.report_id; $scope.report_name = selectItem.report_name; $('#report_data').empty(); } dialog.hide(); } }); } //查詢條件開窗 $scope.condition = function () { $mdDialog.dialog('module/moduleRPT/program/rpt01/rpt01.tmp.html', function (dialog) { //$css.add('module/moduleRPT/program/rpt01/mrs02/mrs02-dialog.css'); return { condition:$scope.condition_list, operator:function(index, event){ $scope.$root.showSelect({ title: $filter('translate')('rpt01.operator'), label : 'operator_no', sub_label:'operator_name', code : 'operator_no', order: 'operator_no', selectCode : '', list : operator, confirm : function(s_item, s_dialog){ $scope.condition_list[index].cond_operand=s_item.operator_no; s_dialog.hide(); } }); }, confirm: function (callback) { dialog.hide(); }, back: function () { dialog.hide(); },background: { click: function () { dialog.hide(); } } } } ); } $scope.confirm = function () { $('#report_data').empty(); reguest_condition_list = []; for (var i = 0 ;i<=$scope.condition_list.length-1;i++){ var item = $scope.condition_list[i]; if (item.isSelect || item.check_necessary == 1) { if (item.default_value == '' || item.default_value== undefined) { $scope.$root.showAlert(item.item_no + '.' + item.cond_desc + $filter('translate')('rpt01.error_list.none_condition')); return false; } else { reguest_condition_list.push({ cond_field: item.cond_field, cond_data_type: item.cond_data_type, cond_operand: item.cond_operand, default_value: item.default_value, insert_name: item.insert_name }); } } } //console.log(reguest_condition_list); $timeout(function () { var currentDate = new Date(); $MMWService.sendToEAISrv({ uri: 'KMI.report.query.json', content: { report_id: $scope.report_id, login_employee_no: 'DS', script_condition: reguest_condition_list, client_start_time: currentDate }, success: function (data) { //console.log(JSON.parse(data.ResultJson)); $scope.query_result = JSON.parse(data.ResultJson); //所有資料 $scope.rpt_data = $scope.query_result.query_result[$scope.report_id]; //無資料跳出 if ($scope.rpt_data.length == 0) { $scope.$root.showAlert($filter('translate')('rpt01.error_list.none_data')); return false; } //所有欄位 $scope.rpt_column = $scope.query_result.columns_name; //所有欄位原始名稱 var column_raw_name = Object.keys($scope.rpt_data[0]); //整理欄位顯示資料 var column_info = []; for (var i = 0; i < $scope.rpt_column.length; i++) { var temp_cond = { column_name: column_raw_name[i], column_display: $scope.rpt_column[i] }; column_info.push(temp_cond); } generateColumn({ target: $('#report_data'), bind: 'rpt_data', //ng-repeat 對應 scope column_info: column_info,//欄位資訊 column_raw_name: column_raw_name }, function () { $timeout(function () { $compile(document.getElementById('report_data'))($scope); $timeout(function () { $('#report_data').css('opacity', 1); $scope.$root.hideLoading(); }); }); }); }, error: function (data) { return false; } }); }); } $scope.getPages = function (list, PageConfig, filterItem, header) { if (list) { var temp_list = $filter('filter')(list, filterItem) if (header) temp_list = $filter('orderBy')(temp_list, "'" + header.code + "'", header.order); if (PageConfig) { PageConfig.page = PageConfig.page || 0; PageConfig.total_page = Math.ceil(temp_list.length / PageConfig.page_count); if (PageConfig.page >= PageConfig.total_page) { PageConfig.page = 0; } var index = PageConfig.page * PageConfig.page_count; return temp_list.slice(index, index + PageConfig.page_count); } else { return temp_list; } } else { PageConfig.page = 0; PageConfig.total_page = 1; return list; } }; $scope.orderResult = function (index, key) { if (key != undefined) { if ($scope[key].qeryOrder != index) { $scope[key].header[index].order = false; } else { $scope[key].header[index].order = !$scope[key].header[index].order; } $scope[key].qeryOrder = index; } else { if ($scope.qeryOrder != index) { $scope.header[index].order = false; } else { $scope.header[index].order = !$scope.header[index].order; } $scope.qeryOrder = index; } }; $scope.prevPage = function (PageConfig) { return PageConfig.page = (PageConfig.page - 1 < 0 ? 0 : PageConfig.page - 1); }; $scope.pageInfo = function (PageConfig) { return (PageConfig.page + 1) + ' / ' + PageConfig.total_page; }; $scope.nextPage = function (PageConfig) { return PageConfig.page = (PageConfig.page + 1 > (PageConfig.total_page - 1) ? (PageConfig.total_page - 1) : PageConfig.page + 1); }; $scope.filterNone = function (ColumnName, filterColumns) { if (filterColumns[ColumnName] != undefined && filterColumns[ColumnName] == '') { delete filterColumns[ColumnName]; } }; function Load_Report_info(callback) { $MMWService.sendToEAISrv({ uri: 'KMI.report.info.get.json', content: { report_type: '2', login_employee_no: config.cache.account }, success: function (data) { if (callback) { callback(data); } } }); } //動態組合kmi-list function generateColumn(options, callback) { if (options.column_info && options.column_info.length > 0) { var report_content = '
', total_width = 0, result_id = '', tab, header, row; $scope.result = []; $scope.header = []; $scope.filterColumns = {}; $scope.statistics_result = {}; options.target.attr('ng-init', result_id + 'PageConfig = {page_count : ' + page_count + '}'); report_content = $(report_content).appendTo(options.target) report_content.attr('column-selector-id', 'R01_' + result_id + 'list'); header = $('').appendTo(report_content); row = $('').appendTo($('').appendTo(report_content)) .attr('ng-repeat', 'item in getPages(' + options.bind + ', ' + result_id + 'PageConfig, ' + result_id + 'filterColumns, ' + result_id + 'header[' + result_id + 'qeryOrder]) track by $index') .attr('ng-class', '{\'is-select\':item.isSelect}'); options.column_info.forEach(function (condition, i) { var headerColumn = '