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.

404 lines
13 KiB

4 years ago
/*
create by yangjinhua
date:2016-11-07
* 2017-10-09 zhangzemu ERPT-94 参照参数错误处理
*/
define(function(require, exports, module) {
var Window = require('../window/window');
var tpl = require('./refwindow.tpl');
var toolbarAdapter = require('../../../adapter/toolbarAdapter');
var GridAdapter = require('../../../adapter/datagridAdapter');
var PaginationAdapter = require('../../../adapter/paginationAdapter');
var QueryPanelAdapter = null;
var _totalRows = 0;
require('./refwindow.css');
function RefWindow(args) {
var self = this;
QueryPanelAdapter = require('../../../adapter/querypanelAdapter')
this.options = {
title: '参照窗体',
content: tpl,
width: 800,
height: 600,
top: window.screen.width > 1024 ? 100 : 20,
modal: true,
closed: true,
closable: true,
minimizable: false,
maximizable: false,
collapsible: false,
resizable: false,
draggable: true,
data: null,
onBeforeClose: function() {
if (!self.selectItem && self.args.callback) {
self.args.callback();
}
}
}
this.id = createGuid();
this.args = args;
this.paginited = false;
//判断是否多选
this.singleSelect = true;
if (this.args.rptRefType === '5') {
this.singleSelect = false;
}
this.pageSize = args.refWinPageSize || 15;
this.callback = args.callback;
Window.call(this, this.options);
}
inherits(RefWindow, Window);
RefWindow.prototype.init = function() {
}
RefWindow.prototype.initDataManager = function() {
var options = {
rptId: this.args.rptId,
rptFormatId: this.args.rptFormatId
};
this.dataManager = new DataManager(options);
}
RefWindow.prototype.customerize = function() {
// this.initToolbar();
this.initSchema();
this.setTitle();
this.doOp();
};
RefWindow.prototype.setTitle = function() {
var title = this.args.dispName || '参照窗体';
this.getElement('.fdpr-refwindow-title span:eq(0)').text(title);
};
/**
* 初始化toobar按钮
* @return {[type]} [description]
*/
RefWindow.prototype.initToolbar = function() {
var self = this;
this.toolbarArgs = {
pageId: self.id,
container: self.getElement('.fdpr-refwindow-tool'),
buttons: [
{
fieldname: 'refresh',
dispname: '刷新',
icon: 'icon-refresh',
class: '',
hint: '刷新',
opcode: 'refresh'
}],
menuButtons: [],
// menuButtons: [{
// fieldname: 'fitcolumnRef',
// dispname: '表格自适应',
// icon: 'icon-print',
// class: '',
// hint: '表格自适应',
// opcode: 'fitcolumnRef',
// subButtons: [{
// fieldname: 'fitcolumnautoRef',
// dispname: '自动铺满',
// icon: 'icon-print',
// class: '',
// hint: '自动铺满',
// opcode: 'fitcolumnautoRef'
// }, {
// fieldname: 'fitcolumnsetRef',
// dispname: '按后台设置',
// icon: 'icon-print',
// class: '',
// hint: '按后台设置',
// opcode: 'fitcolumnsetRef'
// }]
// }],
actions: {
click: function(opCode) {
if (opCode === 'refresh') {
self.getData({
pageIndex: 0,
isSearch: 1
});
}
// if (opCode === 'fitcolumnautoRef') {
// self.gridadp.fitColumns();
// if (!self.paginited) return;
// self.getData({
// pageIndex: 0,
// isSearch: 1
// });
// }
// if (opCode === 'fitcolumnsetRef') {
// self.gridadp.resetColumns()
// if (!self.paginited) return;
// self.getData({
// pageIndex: 0,
// isSearch: 1
// });
// }
}
}
};
this.toobar = new toolbarAdapter(this.toolbarArgs);
this.toobar.init();
};
/**
* 初始化gird列结构
* @return {[type]} [description]
*/
RefWindow.prototype.initSchema = function() {
var self = this;
this.schemeParams = {
'rptRefType': self.args.rptRefType,
'refObj': self.args.refObj,
'refWinQueryCols': self.args.refWinQueryCols,
'refWinDispCols': self.args.refWinDispCols,
'keyboardType': self.args.keyboardType
};
ER.services.refSchema(this.schemeParams, function(isok, data) {
if (isok) {
self.addQueryPanel(data);
self.addDataGrid(data);
}
});
};
/**
* 获取数据
* @param {[type]} options [description]
* @return {[type]} [description]
*/
RefWindow.prototype.getData = function(options) {
var self = this;
var searchParams = this.getSearchParams();
var isSearch = options.isSearch;
this.dataParams = {
'rptRefType': self.args.rptRefType,
'refObj': self.args.refObj,
'pageIndex': options.pageIndex,
'pageSize': self.pageSize,
'queryParams': {
'refQuery': {
'rptId': self.args.rptId,
'rptFormatId': self.args.rptFormatId,
'fieldName': self.args.fieldName
},
'colQuery': {
//参照窗体查询方案
}
}
};
this.dataParams['queryParams']['colQuery'] = searchParams;
ER.services.refSearch(this.dataParams, function(isok, data) {
if (isok) {
_totalRows = data.totalRows;
self.gridadp.loadData(data);
self.intiPagination(_totalRows);
//如果是刷新,则不重新加载分页器,只是重置页码
if (isSearch === 1) {
self.pagepanel.setRefreshPages(0, self.pageSize, _totalRows);
} else {
self.pagepanel.setRefreshPages(options.pageIndex, self.pageSize, _totalRows);
}
}
});
};
/**
* 初始化Grid高度
*/
RefWindow.prototype.initGridHeight = function() {
var toobarHeight = this.getElement('.fdpr-refwindow-tool').outerHeight(true);
var queryHeight = this.getElement('.fdpr-refwindow-querypanel').outerHeight(true);
// var paginationHeight = this.getElement('.fdpr-refwindow-pagination').outerHeight(true);
// var btnHeight = this.getElement('.fdpr-refwindow-btn').outerHeight(true);
var gridHeight = this.options.height - toobarHeight - queryHeight - 112;
// $('.fdpr-refwindow-datagrid').height(gridHeight);
return gridHeight;
};
/**
* 获取查询参数
* @return {[type]} [description]
*/
RefWindow.prototype.getSearchParams = function() {
return this.qpanel.getQueryParams();
};
/**
* 初始化分页器信息
* @param {[type]} 总条数 [description]
* @return {[type]} [description]
*/
RefWindow.prototype.intiPagination = function(_totalRows) {
var self = this;
if (this.paginited) {
return;
} else {
this.paginited = true;
}
this.paginationParams = {
pageSize: this.pageSize,
totalRows: _totalRows,
container: this.getElement('.fdpr-refwindow-pagination'),
actions: {
click: function(opcode, pageIndex) {
self.pageopRouter(opcode, pageIndex);
}
}
};
this.pagepanel = new PaginationAdapter(this.paginationParams);
}
/**
* 翻页按钮事件
* @param {[type]} 按钮编码 [description]
* @param {[type]} 当前页码从0开始 [description]
* @return {[type]} [description]
*/
RefWindow.prototype.pageopRouter = function(opcode, pageIndex) {
var self = this;
switch (opcode) {
case 'firstPage':
case 'prevPage':
case 'nextPage':
case 'lastPage':
case 'linkPage':
self.getData({
pageIndex: pageIndex,
isSearch: 0
});
break;
}
}
/**
* 初始化grid
* @param {[type]} 数据 [description]
*/
RefWindow.prototype.addDataGrid = function(data) {
var gridHeight = this.initGridHeight();
this.gridadp = new GridAdapter({
id: this.id,
name: '',
opts: {},
data: {
columns: data.columns
}
});
this.gridadp.makeGridRowStyler();
this.gridadp.makeGridProperties({
singleSelect: this.singleSelect,
height: gridHeight
});
this.gridadp.init(this.getElement('.fdpr-refwindow-datagrid'));
// this.gridadp.fitColumns();
};
/**
* 初始化查询panel
* @param {[type]} data [description]
*/
RefWindow.prototype.addQueryPanel = function(data) {
var refColumns = [];
var refWinQueryCols = this.args.refWinQueryCols;
if (refWinQueryCols !== null) {
refWinQueryCols = refWinQueryCols.toLowerCase();
_.each(data.columns, function(column, index) {
if (refWinQueryCols.indexOf(column.fieldName) >= 0) {
//参照窗体默认显示格式均为文本
column.dispStyle = '00';
refColumns.push(column);
}
});
}
this.qpanel = new QueryPanelAdapter({
pageId: this.id,
container: this.getElement('.fdpr-refwindow-querypanel'),
data: refColumns,
opts: {
needFilter: false,
selfWidth: true
}
});
}
RefWindow.prototype.doOp = function() {
var isHandled = false;
var self = this;
this.getElement('.fdpr-cancel').on('click', function() {
self.close();
})
this.getElement('.fdpr-refwindow-tool').on('click', function() {
self.getData({
pageIndex: 0,
isSearch: 1
});
})
this.getElement('.fdpr-sure').on('click', function() {
var rptRefType = self.args.rptRefType;
var rows = [];
var value = '';
if (rptRefType === '2') {
rows = self.gridadp.getSelected();
if (rows === null) {
self.close();
return;
}
value = rows[self.args.refField.toLowerCase()];
if(self.args.refFieldName) {
value = value + self.args.refSeparator + rows[self.args.refFieldName.toLowerCase()];
}
} else {
rows = self.gridadp.getSelections();
if (rows === null) {
self.close();
return;
}
if (rows.length === 1) {
value = rows[0][self.args.refField.toLowerCase()];
if(self.args.refFieldName) {
value = value + self.args.refSeparator + rows[0][self.args.refFieldName.toLowerCase()];
}
} else {
_.each(rows, function(row, index) {
value += row[self.args.refField.toLowerCase()] + ',';
});
value = value.substring(0, value.length - 1);
}
}
if (self.args.callback) {
self.args.callback(value);
}
self.close();
})
};
RefWindow.prototype.open = function() {
var self = this;
Window.prototype.open.call(self);
};
return RefWindow;
});