/** * 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); });