|
@@ -0,0 +1,333 @@
|
|
|
+/**
|
|
|
+ * Created by Zhong on 2017/8/25.
|
|
|
+ */
|
|
|
+
|
|
|
+let gljSelOprObj = {
|
|
|
+ parentNodeIds: {},
|
|
|
+ treeObj:null,
|
|
|
+ rootNode: null,//分类树根节点
|
|
|
+ radiosSelected: null,//allGljs, stdGljs, complementaryGljs
|
|
|
+ workBook: null,
|
|
|
+ selectedList: [],//选中的工料机
|
|
|
+ setting: {
|
|
|
+ header: [
|
|
|
+ {headerName:"选择", headerWidth: 40, dataCode: "select", hAlign: "center", vAlign: "center"},
|
|
|
+ {headerName:"编码",headerWidth:80,dataCode:"code", dataType: "String", formatter: "@", hAlign: "left", vAlign: "center"},
|
|
|
+ {headerName:"名称",headerWidth:120,dataCode:"name", dataType: "String", hAlign: "left", vAlign: "center"},
|
|
|
+ {headerName:"规格型号",headerWidth:80,dataCode:"specs", dataType: "String", hAlign: "center", vAlign: "center"},
|
|
|
+ {headerName:"单位",headerWidth:80,dataCode:"unit", dataType: "String", hAlign: "center", vAlign: "center"},
|
|
|
+ {headerName:"单价",headerWidth:80,dataCode:"basePrice", dataType: "Number", formatter: "0.00", hAlign: "right", vAlign: "center"},
|
|
|
+ {headerName:"类型",headerWidth:80,dataCode:"gljType", dataType: "String", hAlign: "center", vAlign: "center"}
|
|
|
+ ]
|
|
|
+ },
|
|
|
+ setProp: function (prop, value, gljList) {
|
|
|
+ for(let i = 0, len = gljList.length; i < len; i++){
|
|
|
+ gljList[i][prop] = value;
|
|
|
+ }
|
|
|
+ },
|
|
|
+ sortGlj: function(gljList) {
|
|
|
+ gljList.sort(function(a, b){
|
|
|
+ let rst = 0;
|
|
|
+ if (a.code > b.code) rst = 1
|
|
|
+ else if (a.code < b.code) rst = -1;
|
|
|
+ return rst;
|
|
|
+ });
|
|
|
+ },
|
|
|
+ switchToGljId: function (gljList) {
|
|
|
+ for(let glj of gljList){
|
|
|
+ glj.gljId = glj.ID;
|
|
|
+ delete glj.ID;
|
|
|
+ }
|
|
|
+ },
|
|
|
+ getSelGljItems: function(stdGljLibId, callback) {
|
|
|
+ let me = this;
|
|
|
+ CommonAjax.post('/complementartGlj/api/getGljItems', {stdGljLibId: stdGljLibId}, function (rstData) {
|
|
|
+ me.stdGljList = rstData.stdGljs;
|
|
|
+ me.complementaryGljList = rstData.complementaryGljs;
|
|
|
+ me.switchToGljId(me.stdGljList);
|
|
|
+ me.switchToGljId(me.complementaryGljList);
|
|
|
+ me.setProp('type', 'std', me.stdGljList);
|
|
|
+ me.setProp('type', 'complementary', me.complementaryGljList);
|
|
|
+ me.sortGlj(me.stdGljList);
|
|
|
+ me.sortGlj(me.complementaryGljList);
|
|
|
+ if(callback){
|
|
|
+ callback();
|
|
|
+ }
|
|
|
+ });
|
|
|
+ },
|
|
|
+ getGljClassTree: function (gljLibId, callback) {
|
|
|
+ let me = this;
|
|
|
+ let url = '/complementartGlj/api/getGljTree';
|
|
|
+ let postData = {gljLibId: gljLibId};
|
|
|
+ let sucFunc = function (rstData) {
|
|
|
+ zTreeHelper.createTree(rstData, gljSelTreeOprObj.setting, "selGljTree", gljSelOprObj);
|
|
|
+ let rootNode = gljSelOprObj.treeObj.getNodes()[0];
|
|
|
+ if(rootNode && rootNode.isParent && rootNode.isFirstNode){
|
|
|
+ gljSelOprObj.rootNode = rootNode;
|
|
|
+ }
|
|
|
+ gljSelOprObj.buildSheet($('#gljSelSheet')[0]);
|
|
|
+ if(callback){
|
|
|
+ callback();
|
|
|
+ }
|
|
|
+ };
|
|
|
+ let errFunc = function () {
|
|
|
+
|
|
|
+ };
|
|
|
+ CommonAjax.post(url, postData, sucFunc, errFunc);
|
|
|
+ },
|
|
|
+ buildSheet: function (container) {
|
|
|
+ let me = gljSelOprObj;
|
|
|
+ me.workBook = sheetCommonObj.buildSheet(container, me.setting, 30);
|
|
|
+ me.workBook.getSheet(0).setColumnWidth(0, 20, GC.Spread.Sheets.SheetArea.rowHeader);
|
|
|
+ me.workBook.getSheet(0).setFormatter(-1, 1, "@", GC.Spread.Sheets.SheetArea.viewport);
|
|
|
+ me.workBook.getSheet(0).bind(GC.Spread.Sheets.Events.EditStarting, me.onCellEditStart);
|
|
|
+ me.workBook.getSheet(0).bind(GC.Spread.Sheets.Events.ClipboardPasting, me.onClipboardPasting);
|
|
|
+ me.workBook.bind(GC.Spread.Sheets.Events.ButtonClicked, me.onButtonClicked);//复选框点击事件
|
|
|
+ me.bindBtnOpr($('#gljSelY'));
|
|
|
+ me.radiosChange();
|
|
|
+ },
|
|
|
+ onClipboardPasting: function (sender, args) {
|
|
|
+ args.cancel = true;
|
|
|
+ },
|
|
|
+ onCellEditStart: function (sender, args) {
|
|
|
+ args.cancel = true;
|
|
|
+ },
|
|
|
+ onButtonClicked: function (sender, args) {
|
|
|
+ let me = gljSelOprObj;
|
|
|
+ let val = args.sheet.getValue(args.row, args.col);
|
|
|
+ let thisGlj = me.currentCache[args.row];
|
|
|
+ thisGlj.isChecked = val;
|
|
|
+ if(args.sheet.isEditing()){
|
|
|
+ args.sheet.endEdit(true);
|
|
|
+ }
|
|
|
+ else{
|
|
|
+ //设置选中
|
|
|
+ if(val === true){
|
|
|
+ let isExist = false;
|
|
|
+ for(let i = 0, len = me.selectedList.length; i < len; i++){
|
|
|
+ if(me.selectedList[i].gljId === thisGlj.gljId){
|
|
|
+ isExist = true;
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if(!isExist){
|
|
|
+ thisGlj.consumeAmt = 0;
|
|
|
+ me.selectedList.push(thisGlj);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else if(val === false){
|
|
|
+ for(let i = 0, len = me.selectedList.length; i < len; i++){
|
|
|
+ if(me.selectedList[i].gljId === thisGlj.gljId){
|
|
|
+ me.selectedList.splice(i, 1);
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ },
|
|
|
+ setShowGljList: function (gljList, clearChecked) {
|
|
|
+ //初始为所有工料机
|
|
|
+ let me = this;
|
|
|
+ let curRationGlj = rationGLJOprObj.cache['_GLJ_' + rationGLJOprObj.currentRationItem.ID];
|
|
|
+ for(let i = 0; i < gljList.length; i++){
|
|
|
+ //去除与已添加的组成物重复的条目
|
|
|
+ let isExist = false;
|
|
|
+ for(let j = 0; j < curRationGlj.length; j++){
|
|
|
+ if(curRationGlj[j].gljId === gljList[i].gljId){
|
|
|
+ isExist = true;
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if(!isExist){
|
|
|
+ if(clearChecked){
|
|
|
+ gljList[i].isChecked = false;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ gljList[i].isChecked = true;
|
|
|
+ }
|
|
|
+ me.showGljList.push(gljList[i]);
|
|
|
+ }
|
|
|
+ },
|
|
|
+ //初始默认radio
|
|
|
+ initRadio: function () {
|
|
|
+ let me = gljSelOprObj;
|
|
|
+ $('#gljSearchKeyword').val('');//恢复搜索文本
|
|
|
+ me.selectedList = [].concat(rationGLJOprObj.cache['_GLJ_' + rationGLJOprObj.currentRationItem.ID]);
|
|
|
+ //默认radio所有工料机
|
|
|
+ if(typeof $("input[name='glj']:checked")[0] !== 'undefined'){
|
|
|
+ $("input[name='glj']:checked")[0].checked = false;
|
|
|
+ }
|
|
|
+ $("input[value = 'allGljs']")[0].checked = true;
|
|
|
+ me.radiosSelected = 'allGljs';
|
|
|
+ //初始为所有工料机
|
|
|
+ me.showGljList = [];
|
|
|
+ if(me.radiosSelected === 'allGljs'){
|
|
|
+ me.setShowGljList(me.stdGljList, true);
|
|
|
+ me.setShowGljList(me.complementaryGljList, true);
|
|
|
+ me.sortGlj(me.showGljList);
|
|
|
+ }
|
|
|
+ },
|
|
|
+ filterDatasAndShow: function () {
|
|
|
+ let me = gljSelOprObj;
|
|
|
+ let val = $("input[name='glj']:checked").val();
|
|
|
+ me.radiosSelected = val;
|
|
|
+ //选择改变,数据重新筛选显示
|
|
|
+ me.showGljList = [];
|
|
|
+ if(me.radiosSelected === 'allGljs'){
|
|
|
+ me.setShowGljList(me.stdGljList);
|
|
|
+ me.setShowGljList(me.complementaryGljList);
|
|
|
+ }
|
|
|
+ else if(me.radiosSelected === 'stdGljs'){
|
|
|
+ me.setShowGljList(me.stdGljList);
|
|
|
+ }
|
|
|
+ else if(me.radiosSelected === 'complementaryGljs'){
|
|
|
+ me.setShowGljList(me.complementaryGljList);
|
|
|
+ }
|
|
|
+ //搜索匹配
|
|
|
+ let searchStr = $('#gljSearchKeyword').val();
|
|
|
+ if(searchStr && searchStr.trim() != ''){
|
|
|
+ let reg = new RegExp(searchStr);
|
|
|
+ me.showGljList = _.filter(me.showGljList, function (data) {
|
|
|
+ return reg.test(data.code) || reg.test(data.name);
|
|
|
+ });
|
|
|
+ }
|
|
|
+ me.sortGlj(me.showGljList);
|
|
|
+ //重新显示
|
|
|
+ me.showGljItems(me.showGljList, me.gljCurTypeId);
|
|
|
+ //切换radio后更新cache
|
|
|
+ if (me.currentOprParent = 1) {
|
|
|
+ if(me.parentNodeIds["_pNodeId_" + me.gljCurTypeId]){
|
|
|
+ me.currentCache = me.getParentCache(me.parentNodeIds["_pNodeId_" + me.gljCurTypeId]);
|
|
|
+ }
|
|
|
+ else{
|
|
|
+ me.currentCache = [];
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ me.currentCache = me.getCache();
|
|
|
+ }
|
|
|
+ },
|
|
|
+ //监听radios选择事件
|
|
|
+ radiosChange: function () {
|
|
|
+ let me = gljSelOprObj;
|
|
|
+ $('.glj-radio').change(function () {
|
|
|
+ me.filterDatasAndShow();
|
|
|
+ });
|
|
|
+ },
|
|
|
+
|
|
|
+ getParentCache: function (nodes) {
|
|
|
+ let me = gljSelOprObj, rst = [];
|
|
|
+ for(let i = 0; i < me.showGljList.length; i++){
|
|
|
+ if(nodes.indexOf(me.showGljList[i].gljClass) !== -1){
|
|
|
+ rst.push(me.showGljList[i]);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ rst.sort(function (a, b) {
|
|
|
+ let rst = 0;
|
|
|
+ if(a.code > b.code) rst = 1;
|
|
|
+ else if(a.code < b.code)rst = -1;
|
|
|
+ return rst;
|
|
|
+ });
|
|
|
+ return rst;
|
|
|
+ },
|
|
|
+ getCache: function() {
|
|
|
+ let me = gljSelOprObj, rst = [];
|
|
|
+ for (let i = 0; i < me.showGljList.length; i++) {
|
|
|
+ if (me.showGljList[i].gljClass == me.gljCurTypeId) {
|
|
|
+ rst.push(me.showGljList[i]);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return rst;
|
|
|
+ },
|
|
|
+ showGljItems: function(data, type) {
|
|
|
+ let me = gljSelOprObj;
|
|
|
+ if (me.workBook) {
|
|
|
+ let cacheSection = [];
|
|
|
+ let pArr = me.parentNodeIds["_pNodeId_" + type];
|
|
|
+ for (let i = 0; i < data.length; i++) {
|
|
|
+ if (pArr && pArr.indexOf(data[i].gljClass) >= 0) {
|
|
|
+ cacheSection.push(data[i]);
|
|
|
+ } else if (type == data[i].gljClass) {
|
|
|
+ cacheSection.push(data[i]);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ sheetCommonObj.cleanSheet(me.workBook.getSheet(0), me.setting, -1);
|
|
|
+ sheetsOprObj.showDataForGljSel(me.workBook.getSheet(0), me.setting, cacheSection, rationGLJOprObj.distTypeTree);
|
|
|
+ me.workBook.getSheet(0).setRowCount(cacheSection.length);
|
|
|
+ cacheSection = null;
|
|
|
+ }
|
|
|
+ },
|
|
|
+ //组成物窗口按钮操作
|
|
|
+ bindBtnOpr: function (conf) {//确定、取消、关闭按钮
|
|
|
+ let me = gljSelOprObj, that = rationGLJOprObj;
|
|
|
+ conf.click(function () {
|
|
|
+ that.cache['_GLJ_' + that.currentRationItem.ID] = me.selectedList;
|
|
|
+ that.updateRationItem(function () {
|
|
|
+ that.sheet.getParent().focus();
|
|
|
+ sheetCommonObj.cleanData(that.sheet, that.setting, -1);
|
|
|
+ that.showGljItems(that.currentRationItem.ID);
|
|
|
+ $('#selGlj').modal('hide');
|
|
|
+ });
|
|
|
+ });
|
|
|
+ }
|
|
|
+};
|
|
|
+
|
|
|
+let gljSelTreeOprObj = {
|
|
|
+ setting: {
|
|
|
+ view: {
|
|
|
+ expandSpeed: "",
|
|
|
+ selectedMulti: false
|
|
|
+ },
|
|
|
+ edit: {
|
|
|
+ enable: false,
|
|
|
+ editNameSelectAll: true,
|
|
|
+ showRemoveBtn: true,
|
|
|
+ showRenameBtn: true,
|
|
|
+ removeTitle: "删除节点",
|
|
|
+ renameTitle: "更改名称"
|
|
|
+ },
|
|
|
+ data: {
|
|
|
+ keep: {
|
|
|
+ parent:true,
|
|
|
+ leaf:true
|
|
|
+ },
|
|
|
+ key: {
|
|
|
+ children: "items",
|
|
|
+ name: "Name"
|
|
|
+ },
|
|
|
+ simpleData: {
|
|
|
+ enable: false,
|
|
|
+ idKey: "ID",
|
|
|
+ pIdKey: "ParentID",
|
|
|
+ rootPId: -1
|
|
|
+ }
|
|
|
+ },
|
|
|
+ callback:{
|
|
|
+ onClick: function(event,treeId,treeNode) {
|
|
|
+ let me = gljSelOprObj, gljTypeId = treeNode.ID;
|
|
|
+ if(me.gljCurTypeId !== treeNode.ID){
|
|
|
+ me.gljCurTypeId = treeNode.ID;
|
|
|
+ if (me.parentNodeIds["_pNodeId_" + treeNode.ID]) {
|
|
|
+ me.currentOprParent = 1;
|
|
|
+ me.currentCache = me.getParentCache(me.parentNodeIds["_pNodeId_" + treeNode.ID]);
|
|
|
+ } else {
|
|
|
+ me.currentCache = me.getCache();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ me.showGljItems(me.showGljList, gljTypeId);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+};
|
|
|
+
|
|
|
+$(document).ready(function () {
|
|
|
+ $('#gljSearchKeyword').change(function () {
|
|
|
+ gljSelOprObj.filterDatasAndShow();
|
|
|
+ });
|
|
|
+ $('#gljSearchKeyword').bind('keypress', function (e) {
|
|
|
+ if(e.keyCode === 13){
|
|
|
+ $(this).blur();
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ });
|
|
|
+});
|