/**
* Created by weidy
* 物料/工具基本信息选择面板
*/
layui.define(['layer','element','form','table','platform/basedoc/BdMaterialClassifyExtendAttr'],function(exports){
var Class = function(){
this.MODULE_NAME = "platform/basedoc/BdMaterialSelectPanel";
this.moduleKey = "BdMaterialSelectPanel";
this.id='BdMaterialSelectPanel';
this.sourceData = {};
this.columns = [];
this.backPath = configData.compatibility?path:configData.frameworkPath;
this.controlSecret = true;
this.url={
classifyTree:'materialClassifyController/referTree',
controller:'materialController/',
referDataGrid:'referDataGrid',
getObjectByOid:'getObjectByOid'
};
this.config = {};
this.getContent=function(filter){
//返回这个组件的基础html
var that = this;
var html = [
'
',
'
',
that.getClassifyToolbarHtml(filter),
'
',
'
',
'
',
'
',
that.getToolbarHtml(filter),
'
',
'
'];
html.push('
');
return html.join("");
};
this.getToolbarHtml =function(filter){
var that = this;
var html = [
'',
'
',
'
',
'
',
'
',
'
'
].join("");
return html;
};
this.getClassifyToolbarHtml = function(filter){
var that = this;
var html = [
'',
'',
'
'
].join("");
return html;
};
this.init=function(filter,options){//基础的html被添加后,再执行初始化
if(!filter){
$webUtil.showErrorMsg("前端程序错误,这个是通用组件,请必须设置filter");
return false;
}
var that = this;
that.config[filter] = options;
var table = layui.table;
$webUtil.copyConfig(that,that.moduleKey);
$webUtil.bindDefultButtonLisenter(that, filter);
$webUtil.bindDefultButtonLisenter(that, "classify_" + filter);
that.materialExtendAttr = layui['platform/basedoc/BdMaterialClassifyExtendAttr'];
if(options.selectMode = table.selectMode.multiple){
var selectButton = $("[layui-filter='toolbar_" + filter + "_SELECT']");
selectButton.show();
selectButton.unbind('click').click(function(e){
that.SELECTMATERTIAL(filter);
layui.stope(e);
});
}
//初始化
that.classifyTreeInit(filter,function () {
if(options.materialClassifyId){
that.materialExtendAttr.initExtendAttr(options.materialClassifyId,function() {
that.queryExtendAttr(options, false);
});
}
that.initMainTable(filter,
function () {
$webUtil.createSearchHtml({
id: '编号',
code:'图号',
name:'名称',
specification:'规格',
brand:'品牌',
material:'材质',
applyProduct:'适用产品',
supplier:'制造/供应商',
revisionValue:'版本号'
}, $('[layui-filter="toolbar_' + filter + '"]'), filter);
}
);
});
$("#switch_" + filter).unbind('click').click(function () {
var thisObject = $(this);
if(thisObject.hasClass("layui-form-onswitch")){
//说明现在点的是,需要修改为否
thisObject.removeClass("layui-form-onswitch");
thisObject.find("em").html("否");
table.reload("table_"+filter,{
where:{
"conditionMap['${queryAllRevision}']":false
}
})
}else{
thisObject.addClass("layui-form-onswitch");
thisObject.find("em").html("是");
table.reload("table_"+filter,{
where:{
"conditionMap['${queryAllRevision}']":true
}
})
}
});
};
this.classifyTreeInit = function(filter,callback){
//初始化分类树
var that = this;
var tree = layui.tree;
var options = that.config[filter];
options.fristTreeLoad = false;
tree.init("tree_" + filter, $('[layui-filter="tree_' + filter + '"]'), {
url: that.url.classifyTree,
backPath: that.backPath,
extraParams: {
isMuti: (options.selectMode == layui.table.selectMode.multiple)?true:false,
parentValue:options.materialClassify?options.materialClassify:'',
isQueryAllColumn: true
},
treeFilter: filter,
click: function (item, elem, treeOptions) {
options.currentItemOid = item.oid;
options.currentItemAttributes = item.attributes;
that.config[filter] = options;
that.showMaterialByClassify(filter,item.attributes);
},
done:function (filter,children) {
if(!options.fristTreeLoad &&callback){
callback();
}
options.fristTreeLoad = true;
}
});
};
this.showMaterialByClassify = function (filter,classifyAttributes) {
var that =this;
var table = layui.table;
that.materialExtendAttr.initExtendAttr(classifyAttributes.id,function() {
table.reload("table_" + filter, {
where: {
materialClassify: classifyAttributes.oid
}
});
});
};
this.initMainTable = function (filter,callback) {
var that = this;
var columns = that.checkColumns(filter);
var table = layui.table;
var options = that.config[filter];
var limit = 20;
if(options.height){
if(options.height<399){
limit = 10;
}else if(options.height >599 && options.height <799){
limit = 20;
}else if(options.height>799){
limit = 30;
}
}
options.fristMainLoad = false;
//主列表中列。
table.render({
elem: '#table_' + filter,
id: 'table_' + filter,
url: that.backPath + that.url.controller + that.url.referDataGrid,
page: {
limit: limit,
page: 1
},
height:(options.height?options.height:600),
cols: [columns],
done:function(res,cur,total){
if(!options.fristMainLoad ){
if(callback) {
callback();
}
table.on('tool(' + filter + ')',function(obj){
var data = obj.data;//当前选择行的数据
var layEvent = obj.event;//点的是什么按钮
if(layEvent == 'viewInfo'){
that.showMaterialByOid(filter,data.oid,options);
}
});
}
options.fristMainLoad = true;
that.config[filter] = options;
},
rowClick:function(thisTableFilter,record){
record['materialFlag'] = true;
if(record.materialClassifyId != options.materialClassifyId){
options.materialClassifyId = record.materialClassifyId;
options.extendAtts = null;
that.materialExtendAttr.initExtendAttr( options.materialClassifyId,function () {
//先获取一下扩展属性的内容,
that.queryExtendAttr(options,false);
if(options.selectClick){
options.selectClick(filter,record,that.config[filter]);
}
});
}else {
//先获取一下扩展属性的内容,
that.queryExtendAttr(options, false);
if (options.selectClick) {
options.selectClick(filter, record, that.config[filter]);
}
}
}
});
document.getElementById("toolbar_column_" + filter).innerHTML = '查看';
};
this.advancedQuery = function(){
var that = this;
var dynamicCondition = layui.dynamicCondition;
$('[layui-filter="toolbar_' + that.id + '"]').append('');
var dataFields = that.columns;
that.serinorQueryInstance = dynamicCondition.create({
fields : dataFields//查询字段
,tableId:"table_"+that.id//需要查询的表格
,type:"complex" //type:"simple"/"complex" 查询的方法 暂时写死为 complex
,conditionTextId:"#toolbar"+that.id//高级查询 按钮所在的div
,popupShowQueryBtn: true//显示高级查询按钮
,queryCallBack:function(requestData){//查询之后的callback
//console.log(JSON.stringify(requestData))
}
});
};
this.showMaterialByOid =function (filter,oid,options) {
var that = this;
if(!oid){
return false;
}
var formFilter = "view_" + filter;
var form = layui.form;
var addSaveIndex = layer.open({
type:1,
title: '查看物料/工具基本信息',
skin: 'layui-layer-lan',
content: '',
fullScreen:true,
resizing: function (layero) {
form.doResize(formFilter);
},
success: function (layero) {
form.addItems(formFilter,that.getFormItems(true,options),function () {
that.materialExtendAttr.loadMaterialForForm(formFilter,oid,options.currentItemAttributes.id);
}
, {}
, {
defaultColumnOneRow: 3
});
}
});
};
this.getFormItems = function(readOnly,options){
var that = this;
var items = [{
name:'materialClassify',
text:'物料/工具分类',
type:'refer',
showField: 'materialClassifyText',
required:true,
readOnly:readOnly,
referConfig:{
type:'tree',
url: that.url.referClassifyTree,
backPath:that.backPath,
textField:'id,name',
valueField:'oid',
isMuti:false
}
},{
name:'id',
text:'物料/工具编号',
readOnly:readOnly,
required:true
},{
name:'code',
readOnly:readOnly,
text:'图号'
},{
name:'name',
text:'名称',
readOnly:readOnly,
required:true
},{
name:'revisionValue',
readOnly:readOnly,
text:'版本'
},{
name:'unitOfMeasurement',
text:'计量单位',
readOnly:readOnly
},{
name:'specification',
readOnly:readOnly,
text:'规格'
},{
name:'brand',
readOnly:readOnly,
text:'品牌'
},{
name:'material',
readOnly:readOnly,
text:'材质'
},{
name:'applyProduct',
readOnly:readOnly,
text:'适用产品'
},{
name:'supplier',
text:'制造/供应商',
readOnly:readOnly
},layui.vciWebComboxStore.getSecretObject(that.controlSecret)];
that.queryExtendAttr(options,readOnly);
if(options.extendAtts){
items = items.concat(options.extendAtts);
}
items.push({
name:'materialLife',
text:'寿命',
readOnly:readOnly
},{
name:'checkFlag',
text:'是否定检',
type:'truefalse',
readOnly:readOnly,
required:true
},{
name:'checkCycleType',
text:'定检周期类型',
type:'combox',
comboxKey:'lifeCountType',
readOnly:readOnly,
defaultValue:'check_day'
},{
name:'checkCycle',
text:'定检周期',
readOnly:readOnly,
verify:'number'
},{
name:'alertCycle',
text:'定检提醒时间/数',
readOnly:readOnly,
verify:'number'
},{
name:'checkContent',
text:'定检内容',
type:'textarea',
readOnly:readOnly,
textWidth: 870
},{
name:'description',
type:'textarea',
textWidth:870,
readOnly:readOnly,
text:'备注'
});
return items;
};
this.queryExtendAttr = function (options,readOnly) {
var that = this;
if(!options.extendAtts){
var extendAttrs = that.materialExtendAttr.getFormItemsByClassifyId((options.currentItemAttributes && options.currentItemAttributes.id)?options.currentItemAttributes.id:options.materialClassifyId);
if(extendAttrs && extendAttrs.length > 0){
layui.each(extendAttrs,function (_index,_item) {
_item.name = "ext_" + _item.name;
if(readOnly){
_item.readOnly = readOnly;
}
});
options.extendAtts = extendAttrs;
}
}else{
//修改readOnly
if(options.extendAtts){
layui.each(options.extendAtts,function (_index,_item) {
if(readOnly){
_item.readOnly = readOnly;
}else{
delete _item.readOnly;
}
});
}
}
};
this.checkColumns = function(filter){
var that = this;
var table = layui.table;
return [table.getIndexColumn(),table.getCheckColumn(),{
field:'id',
title:'物料/工具编号 名称 (版本)',
width:330,
templet:function(d){
return d.id + ' ' + d.name + ' (' + d.revisionValue + ')' ;
}
},{
field:'code',
title:'图号',
width:120
},{
field:'checkFlag',
title:'定检',
templet:function (d) {
if(d.checkFlag == 'true' || d.checkFlag == true){
return d.checkCycle + "(" + d.checkCycleTypeText +")";
}else{
return "";
}
},
width:70
},{
title:'操作',
field:'options',
width:50,
fixed:'right',
toolbar: '#toolbar_column_' + filter
}];
};
this.refreshClassify = function (event,thisButton) {
var that = this;
var filter = $(thisButton).attr("layui-filter");
filter = filter.replace("_refreshClassify","").replace("toolbar_classify_","");
layui.tree.reload("tree_" + filter);
};
this.refresh = function(event,thisButton){
var that = this;
var filter = $(thisButton).attr("layui-filter");
filter = filter.replace("_refresh","").replace("toolbar_","");
layui.table.reload('table_' + filter,{});
};
this.SELECTMATERTIAL = function (filter) {
var that= this;
var selectData = layui.table.checkStatus("table_" + filter).data;
var options = that.config[filter];
that.queryExtendAttr(options,false);
if(selectData && selectData.length>0){
layui.each(selectData,function (_index,_item) {
_item['materialFlag'] = true;
});
}
if(options.multipleSelectListener){
options.multipleSelectListener(filter,selectData,options);
}
};
};
var cs = new Class();
exports(cs.MODULE_NAME,cs);
});