You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
580 lines
18 KiB
580 lines
18 KiB
/**
|
|
* 打印设置窗口定义文件
|
|
* @description [description]
|
|
* @version 1.0
|
|
*/
|
|
define(function(require, exports, module) {
|
|
var Window = require('../window/window');
|
|
var tpl = require('./printwindow.tpl');
|
|
var toolbuttons = require('../../../data/printwindow/toolbuttons.json');
|
|
var printColumns = require('../../../data/printwindow/columns.json');
|
|
var printDatas = require('../../../data/printwindow/data.json');
|
|
var ToolbarAdapter = require('../../../adapter/toolbarAdapter');
|
|
var GridAdapter = require('../../../adapter/datagridAdapter');
|
|
var moment = require('vendor/moment/moment.min');
|
|
|
|
var self = null;
|
|
// var PrintLoader = require('../printloader/printloader');
|
|
require('./printwindow.css');
|
|
|
|
function PrintWindow(args) {
|
|
this.options = {
|
|
title: '打印设置',
|
|
content: tpl,
|
|
top: window.scrollY + 100,
|
|
width: 860,
|
|
height: 600,
|
|
modal: true,
|
|
closed: true,
|
|
closable: true,
|
|
draggable: true,
|
|
data: null,
|
|
onClose: function() {
|
|
if (args.cb && typeof args.cb == 'function') {
|
|
args.cb();
|
|
}
|
|
}
|
|
}
|
|
|
|
self = this;
|
|
this.args = args;
|
|
this.id = createGuid();
|
|
_.extend(this.options, args.options || {});
|
|
Window.call(this, this.options);
|
|
}
|
|
|
|
inherits(PrintWindow, Window);
|
|
|
|
PrintWindow.prototype.customerize = function($container) {
|
|
this.toolContainer = this.getElement('.fdpr-print-toolbar');
|
|
this.gridContainer = this.getElement('.edp-print-main');
|
|
this.initToolbar();
|
|
this.initGrid();
|
|
this.setVkEvent();
|
|
this.getPrnData();
|
|
}
|
|
|
|
PrintWindow.prototype.setVkEvent = function() {
|
|
self.$container.on('focus', 'input', function(e) {
|
|
var fieldName = $(e.target).closest('td[field]').attr('field');
|
|
if(fieldName === 'orgcode') {
|
|
window.openVK(e.target, '1');
|
|
} else if(fieldName === 'prnname' || fieldName === 'remark') {
|
|
window.openVK(e.target, '2');
|
|
}
|
|
|
|
});
|
|
self.$container.on('blur', 'input', function(e) {
|
|
window.closeVK(e);
|
|
});
|
|
};
|
|
|
|
PrintWindow.prototype.init = function() {
|
|
self.getColumnSchema();
|
|
|
|
};
|
|
|
|
PrintWindow.prototype.getColumnSchema = function() {
|
|
var self = this;
|
|
var params = {'op':'schema', 'sync': true};
|
|
var result = ER.services.setPrn(params);
|
|
var columns = [];
|
|
if (result.isSuccess) {
|
|
columns = _.sortBy(result.columns, 'dispIndex');
|
|
columns = _.where(columns, {'isViewable': true})
|
|
}
|
|
self.gridColumns = [makeGridColumns(columns)];
|
|
};
|
|
|
|
function makeGridColumns(columns) {
|
|
var returnData = [];
|
|
var width = (1 / columns.length) * 100 + '%';
|
|
for (var i = 0;i < columns.length; i++) {
|
|
var tempCol = columns[i];
|
|
var columnData = {
|
|
'sortable': false,
|
|
'field': tempCol.fieldName,
|
|
'align': '',
|
|
'width': width,
|
|
'width1': width,
|
|
'rowspan': 1,
|
|
'colspan': 1,
|
|
'title': tempCol.dispName
|
|
};
|
|
if (tempCol.isEditable) {
|
|
if ( tempCol.fieldName == 'isenabled' || tempCol.fieldName == 'isdefault') {
|
|
columnData.editor = {
|
|
type: 'checkbox',
|
|
options:{on:'是',off:'否'}
|
|
};
|
|
} else {
|
|
columnData.editor = {
|
|
type: 'text'
|
|
};
|
|
}
|
|
}
|
|
returnData.push(columnData);
|
|
}
|
|
return returnData;
|
|
}
|
|
|
|
PrintWindow.prototype.getPrnData = function() {
|
|
var self = this;
|
|
var params = {
|
|
'op': 'search',
|
|
'rptId': self.args.printObj.rptId
|
|
}
|
|
ER.services.setPrn(params, function(isok, data) {
|
|
if (isok) {
|
|
makeCheckBoxTransfer(data);
|
|
self.gridadp.loadData(data.rows)
|
|
}
|
|
});
|
|
};
|
|
|
|
PrintWindow.prototype.saveData = function() {
|
|
var self = this;
|
|
self.failedNo = self.failedNo || '';
|
|
var data = this.$grid.datagrid('getData');
|
|
for (var i = 0; i < data.rows.length; i++) {
|
|
var _row = data.rows[i];
|
|
if ( $.trim(_row['prnname']) == '') {
|
|
ER.messager.err('格式名称不能为空!')
|
|
if (self.failedNo.indexOf(str) < 0) {
|
|
self.failedNo += str;
|
|
}
|
|
reject();
|
|
self.editStatus = true;
|
|
self.setBtnDisable();
|
|
self.setBtnEnable(self.btnsac);
|
|
self.$container.find('td[field="prnname"]:eq('+ (i + 1) +')').click();
|
|
return;
|
|
}
|
|
_row.isdefault = (_row.isdefault == "是" ? '1' : '0');
|
|
_row.isenabled = (_row.isenabled == "是" ? '1' : '0');
|
|
_row.rptid = self.args.printObj.rptId;
|
|
}
|
|
var originRows = $.extend([], data.rows, true);
|
|
data.rows = _.filter(data.rows, function(item) {
|
|
return item.$state ? true : false;
|
|
})
|
|
for (var i = 0; i < data.rows.length; i++) {
|
|
var str = '-' + data.rows[i]['serialno'] + '-';
|
|
|
|
// if (self.failedNo.indexOf(str) > -1) {
|
|
// data.rows[i]['$state'] = 'added';
|
|
// self.failedNo.replace(str, '');
|
|
// }
|
|
}
|
|
var params = {
|
|
'op':'save',
|
|
'rows':data.rows,
|
|
'deleteRows':[],
|
|
'rptId': self.args.printObj.rptId
|
|
}
|
|
self.setBtnEnable(self.allBtns);
|
|
ER.services.setPrn(params, function(isok, data1) {
|
|
if (isok) {
|
|
ER.messager.tip('保存成功!');
|
|
makeCheckBoxTransfer(data1);
|
|
if(data1 && data1.rows) {
|
|
self.gridadp.loadData(data1.rows)
|
|
}
|
|
}
|
|
});
|
|
};
|
|
|
|
function makeCheckBoxTransfer(data) {
|
|
if (data && data.rows) {
|
|
for (var i = 0; i < data.rows.length; i++) {
|
|
data.rows[i].isdefault = (data.rows[i].isdefault == "0" ? '否' : '是');
|
|
data.rows[i].isenabled = (data.rows[i].isenabled == "0" ? '否' : '是');
|
|
}
|
|
}
|
|
}
|
|
|
|
PrintWindow.prototype.makeColumnEditor = function(data) {
|
|
for (var i = 0; i < data.length; i++) {
|
|
// if ()
|
|
}
|
|
};
|
|
|
|
PrintWindow.prototype.initToolbar = function() {
|
|
var self = this;
|
|
this.tooladp = new ToolbarAdapter({
|
|
pageId: self.id,
|
|
container: this.toolContainer,
|
|
buttons: JSON.parse(toolbuttons),
|
|
menuButtons: [],
|
|
actions: {
|
|
click: function(opcode) {
|
|
self.opRouter(opcode);
|
|
}
|
|
}
|
|
});
|
|
this.tooladp.init();
|
|
};
|
|
|
|
PrintWindow.prototype.initGrid = function() {
|
|
var self = this;
|
|
var columns = self.gridColumns;
|
|
// var columns = JSON.parse(printColumns);
|
|
self.makeColumnEditor(columns);
|
|
self.gridadp = new GridAdapter({
|
|
id: self.id,
|
|
selfColumn: true,
|
|
name: '',
|
|
opts: {},
|
|
data: {
|
|
columns: columns
|
|
},
|
|
actions: {
|
|
onClickCell: onClickCell,
|
|
onBeforeEdit: onBeforeEdit,
|
|
onEndEdit: onEndEdit
|
|
}
|
|
});
|
|
self.gridadp.makeGridProperties({
|
|
height: 430,
|
|
showFooter: false,
|
|
rownumbers: true,
|
|
ctrlSelect: false,
|
|
singleSelect: true
|
|
});
|
|
self.gridadp.init(self.gridContainer);
|
|
self.gridadp.fitColumns();
|
|
// self.gridadp.loadData(JSON.parse(printDatas));
|
|
self.$grid = self.gridadp.grid.$grid;
|
|
};
|
|
|
|
PrintWindow.prototype.opRouter = function(opcode) {
|
|
var allBtns = this.allBtns = ['printadd', 'printedit', 'printdelete', 'refresh', 'printsave', 'printcancle', 'printpreview', 'printprint', 'printset'];
|
|
var btnsac = this.btnsac = ['printsave', 'printcancle'];
|
|
var self = this;
|
|
switch(opcode) {
|
|
case 'printadd':
|
|
self.addStatus = true;
|
|
self.setBtnDisable();
|
|
self.setBtnEnable(btnsac);
|
|
append();
|
|
break;
|
|
case 'printedit':
|
|
self.editStatus = true;
|
|
self.setBtnDisable();
|
|
self.setBtnEnable(btnsac);
|
|
break;
|
|
case 'printdelete':
|
|
removeit();
|
|
break;
|
|
case 'refresh':
|
|
self.getPrnData();
|
|
break;
|
|
case 'printsave':
|
|
self.editStatus = false;
|
|
self.addStatus = false;
|
|
accept();
|
|
self.saveData();
|
|
break;
|
|
case 'printcancle':
|
|
self.editStatus = false;
|
|
reject();
|
|
self.setBtnEnable(allBtns);
|
|
break;
|
|
case 'printpreview':
|
|
self.preview();
|
|
// getChanges();
|
|
break;
|
|
case 'printprint':
|
|
self.print();
|
|
break;
|
|
case 'printset':
|
|
self.setting();
|
|
break;
|
|
case 'quitprintset':
|
|
self.close();
|
|
break;
|
|
default: break;
|
|
}
|
|
};
|
|
|
|
PrintWindow.prototype.setBtnEnable = function(buttons) {
|
|
var self = this;
|
|
for (var i = 0; i < buttons.length; i++) {
|
|
self.tooladp.enable(buttons[i]);
|
|
}
|
|
};
|
|
|
|
PrintWindow.prototype.setBtnDisable = function() {
|
|
var self = this;
|
|
var buttons = ['printadd', 'printedit', 'printdelete', 'refresh', 'printsave', 'printcancle', 'printpreview', 'printprint', 'printset'];
|
|
for (var i = 0; i < buttons.length; i++) {
|
|
self.tooladp.disable(buttons[i]);
|
|
}
|
|
};
|
|
|
|
PrintWindow.prototype.open = function() {
|
|
Window.prototype.open.call(this);
|
|
return;
|
|
}
|
|
|
|
PrintWindow.prototype.removeItem = function(rows) {
|
|
var params = {
|
|
'op':'save',
|
|
'rows': [],
|
|
'deleteRows':rows,
|
|
'rptId': self.args.printObj.rptId
|
|
}
|
|
ER.services.setPrn(params, function(isok, data) {
|
|
if (isok) {
|
|
ER.messager.tip('删除成功!');
|
|
}
|
|
});
|
|
}
|
|
|
|
function onBeforeEdit(index, row) {
|
|
var rptObj = self.args.printObj;
|
|
row.rptcode = row.rptcode || rptObj.rptCode + (rptObj.rptName ? rptObj.rptName : '');
|
|
row.$state = self.addStatus ? 'added' : 'modified';
|
|
row.lrdate = moment().format('YYYY-MM-DD HH:mm:ss')// ER.services.getData()[0].sysdate;
|
|
}
|
|
|
|
var editIndex = undefined;
|
|
function endEditing(){
|
|
if (editIndex == undefined){return true}
|
|
if (self.$grid.datagrid('validateRow', editIndex)){
|
|
self.$grid.datagrid('endEdit', editIndex);
|
|
editIndex = undefined;
|
|
return true;
|
|
} else {
|
|
return false;
|
|
}
|
|
}
|
|
function onClickCell(index, field){
|
|
if (!self.editStatus) return;
|
|
if (editIndex != index){
|
|
if (endEditing()){
|
|
self.$grid.datagrid('selectRow', index);
|
|
self.$grid.datagrid('beginEdit', index);
|
|
var ed = self.$grid.datagrid('getEditor', {index:index,field:field});
|
|
if (ed){
|
|
($(ed.target).data('textbox') ? $(ed.target).textbox('textbox') : $(ed.target)).focus();
|
|
}
|
|
editIndex = index;
|
|
} else {
|
|
setTimeout(function(){
|
|
self.$grid.datagrid('selectRow', editIndex);
|
|
},0);
|
|
}
|
|
}
|
|
}
|
|
function onEndEdit(index, row){
|
|
var keys = Object.keys(row);
|
|
keys.splice(0, 1);
|
|
var ed = self.$grid.datagrid('getEditor', {
|
|
index: index,
|
|
field: keys[index]
|
|
});
|
|
if (ed) {
|
|
row[keys[index]] = ed.target.val();
|
|
}
|
|
}
|
|
function append(){
|
|
var rptObj = self.args.printObj;
|
|
var rows = self.$grid.datagrid('getData').rows;
|
|
var max = 0;
|
|
for (var i = 0; i < rows.length; i++) {
|
|
var _temp = parseInt(rows[i].serialno);
|
|
if (_temp > max) max = _temp;
|
|
}
|
|
self.index = max + 1;
|
|
if (endEditing()){
|
|
self.$grid.datagrid('appendRow',{
|
|
$state: 'added',
|
|
rptcode: rptObj.rptCode + (rptObj.rptName ? rptObj.rptName : ''),
|
|
serialno: self.index,
|
|
crtusercode: ER.Cache.logon.userCode,
|
|
lrdate: moment().format('YYYY-MM-DD HH:mm:ss')// ER.services.getData()[0].sysdate;
|
|
});
|
|
editIndex = self.$grid.datagrid('getRows').length-1;
|
|
self.$grid.datagrid('selectRow', editIndex)
|
|
.datagrid('beginEdit', editIndex);
|
|
}
|
|
}
|
|
function removeit(){
|
|
var selRows = self.gridadp.getSelected();
|
|
if(!selRows) {
|
|
return;
|
|
} else {
|
|
self.removeItem([selRows]);
|
|
}
|
|
var ronIndex = self.$grid.datagrid('getRowIndex', selRows)
|
|
self.$grid.datagrid('cancelEdit', ronIndex)
|
|
.datagrid('deleteRow', ronIndex);
|
|
editIndex = undefined;
|
|
}
|
|
function accept(){
|
|
if (endEditing()){
|
|
self.$grid.datagrid('acceptChanges');
|
|
}
|
|
}
|
|
function reject(){
|
|
self.$grid.datagrid('rejectChanges');
|
|
editIndex = undefined;
|
|
}
|
|
function getChanges(){
|
|
var rows = self.$grid.datagrid('getChanges');
|
|
alert(rows.length+' rows are changed!');
|
|
}
|
|
|
|
|
|
// =========================================================================
|
|
PrintWindow.prototype.preview = function() {
|
|
var row = self.gridadp.getSelected();
|
|
if (row) {
|
|
try {
|
|
this.activePrinter(1);
|
|
} catch (e) {
|
|
console.log(e);
|
|
}
|
|
}
|
|
}
|
|
|
|
PrintWindow.prototype.activePrinter = function(mod) {
|
|
var self = this;
|
|
var row = self.gridadp.getSelected();
|
|
// FDP.silent = true;
|
|
try {
|
|
var pd = self.getPrintData();
|
|
var pv = self.getPrintVariables();
|
|
ER.services.print(self.args.printObj.rptId, row.serialno, mod, pd, pv);
|
|
return;
|
|
} finally {
|
|
// FDP.silent = false;
|
|
}
|
|
}
|
|
|
|
PrintWindow.prototype.getPrintData = function() {
|
|
var ds = this.args.printObj;
|
|
var data = {
|
|
uiObjCode: ds.uiObjCode,
|
|
uiObjName: ds.uiObjName || '打印报表',
|
|
isMaster: true,
|
|
fieldList: [],
|
|
forPrint: []
|
|
};
|
|
var columns = this.args.columns;
|
|
for (var i = 0; i < columns.length; i++) {
|
|
var col = columns[i];
|
|
data.fieldList.push({
|
|
fieldName: col.fieldName,
|
|
fieldDes: col.dispName,
|
|
dataType: col.dataType,
|
|
dataWidth: col.headerWidth,
|
|
dataDec: col.dataDec
|
|
});
|
|
}
|
|
var fArrayData = [];
|
|
for (var k = 0; k < this.args.selectRows.length; k++) {
|
|
var tempData = {};
|
|
for (var j = 0; j < data.fieldList.length; j++) {
|
|
var fieldName = data.fieldList[j].fieldName;
|
|
tempData[fieldName] = this.args.selectRows[k][fieldName];
|
|
}
|
|
fArrayData.push(tempData);
|
|
}
|
|
data.forPrint = data.forPrint.concat(fArrayData);
|
|
return [data];
|
|
};
|
|
|
|
|
|
PrintWindow.prototype.getPrintVariables = function() {
|
|
var data = _.extend(this.args.qParams, ER.Cache.logon);
|
|
|
|
return data;
|
|
};
|
|
|
|
PrintWindow.prototype.print = function() {
|
|
var row = self.gridadp.getSelected();
|
|
if (row) {
|
|
try {
|
|
this.activePrinter(0);
|
|
} catch (e) {
|
|
console.log(e);
|
|
}
|
|
}
|
|
}
|
|
|
|
PrintWindow.prototype.setting = function() {
|
|
var row = self.gridadp.getSelected();
|
|
if (row) {
|
|
try {
|
|
this.activePrinter(2);
|
|
} catch (e) {
|
|
console.log(e);
|
|
}
|
|
}
|
|
}
|
|
|
|
PrintWindow.prototype.download = function() {
|
|
|
|
}
|
|
|
|
PrintWindow.prototype.exit = function() {
|
|
this.close();
|
|
// delete avalon.vmodels['fdp_print_toolbar'];
|
|
}
|
|
|
|
/**
|
|
* 获取本业务的层列明细表数据
|
|
* @param {[type]} funcData [功能编码]
|
|
* @param {[type]} code [数据源]
|
|
* @param {[type]} data [数据]
|
|
* @param {[type]} self [description]
|
|
* @param {Function} callback [description]
|
|
*/
|
|
function loadData(funcData, code, data, win, callback) {
|
|
var codes = code.split(';');
|
|
var datasets = [];
|
|
for (var c in codes) {
|
|
win[codes[c]] = new DataSource({
|
|
'funcObjCode': codes[c],
|
|
});
|
|
|
|
win[codes[c]].initUIObj(data[codes[c]]);
|
|
win[codes[c]].funcCode = funcData.funcCode;
|
|
if (0 < _.where(win[codes[c]].columns, {
|
|
'fieldName': 'FunCode'
|
|
}).length) {
|
|
win[codes[c]].fixQuery = {
|
|
FunCode: funcData.funCode
|
|
};
|
|
}
|
|
datasets.push(win[codes[c]]);
|
|
}
|
|
FDP.bizDao.getDataSet(datasets, function(isok, result) {
|
|
if (isok) {
|
|
if (callback) {
|
|
callback();
|
|
}
|
|
} else {
|
|
FDP.messager.err('获取打印格式数据源数据错误,请重试。');
|
|
}
|
|
|
|
});
|
|
}
|
|
|
|
/**
|
|
* [设置是否允许编辑或者新增行]
|
|
* @param {[type]} win [当前窗口]
|
|
* @param {Boolean} isEnable [布尔类型,是否允许增加或编辑]
|
|
*/
|
|
function setEnableAddRow(win, isEnable) {
|
|
win.vm.grid_main.setOptions({
|
|
editable: isEnable,
|
|
enableAddRow: false
|
|
});
|
|
}
|
|
|
|
|
|
return PrintWindow;
|
|
}); |