|
@@ -2,24 +2,27 @@
|
|
|
* Created by CSL on 2017-05-18.
|
|
|
*/
|
|
|
|
|
|
-$(document).ready(function () {
|
|
|
- function refreshALlWorkBook() {
|
|
|
- if (sectionTreeObj.workBook) {
|
|
|
- sectionTreeObj.workBook.refresh();
|
|
|
- }
|
|
|
- if (rationOprObj.workBook) {
|
|
|
- rationOprObj.workBook.refresh();
|
|
|
- }
|
|
|
- if (rationGLJOprObj.sheet && rationGLJOprObj.sheet.getParent()) {
|
|
|
- rationGLJOprObj.sheet.getParent().refresh();
|
|
|
- }
|
|
|
- if (coeOprObj.workBook) {
|
|
|
- coeOprObj.workBook.refresh();
|
|
|
- }
|
|
|
- if (gljAdjOprObj.workBook) {
|
|
|
- gljAdjOprObj.workBook.refresh();
|
|
|
- }
|
|
|
+function refreshALlWorkBook() {
|
|
|
+ if (sectionTreeObj.workBook) {
|
|
|
+ sectionTreeObj.workBook.refresh();
|
|
|
+ }
|
|
|
+ if (rationOprObj.workBook) {
|
|
|
+ rationOprObj.workBook.refresh();
|
|
|
+ }
|
|
|
+ if (rationGLJOprObj.sheet && rationGLJOprObj.sheet.getParent()) {
|
|
|
+ rationGLJOprObj.sheet.getParent().refresh();
|
|
|
+ }
|
|
|
+ if (coeOprObj.workBook) {
|
|
|
+ coeOprObj.workBook.refresh();
|
|
|
+ }
|
|
|
+ if (gljAdjOprObj.workBook) {
|
|
|
+ gljAdjOprObj.workBook.refresh();
|
|
|
}
|
|
|
+ if (typeof lossObj !== 'undefined' && lossObj.workBook) {
|
|
|
+ lossObj.workBook.refresh();
|
|
|
+ }
|
|
|
+}
|
|
|
+$(document).ready(function () {
|
|
|
//定额章节树与定额表
|
|
|
let leftElesObj = {};
|
|
|
leftElesObj.module = moduleName;
|
|
@@ -27,8 +30,8 @@ $(document).ready(function () {
|
|
|
leftElesObj.parent = $('#dataRow');
|
|
|
leftElesObj.left = $('#leftContent');
|
|
|
leftElesObj.right = $('#mainContent');
|
|
|
- let maxEval = `$('#zmhsContent').is(':visible') ? $('#dataRow').width() - $('#zmhsContent').width() - 300 : $('#dataRow').width() - 300`;
|
|
|
- SlideResize.horizontalSlide(leftElesObj, {min: 300, max: maxEval}, function () {
|
|
|
+ let maxEval = `$('#rightContent').is(':visible') ? $('#dataRow').width() - $('#rightContent').width() - 300 : $('#dataRow').width() - 300`;
|
|
|
+ SlideResize.horizontalSlide(leftElesObj, { min: 300, max: maxEval }, function () {
|
|
|
refreshALlWorkBook();
|
|
|
sectionTreeObj.loadRateWidth();
|
|
|
});
|
|
@@ -48,14 +51,17 @@ $(document).ready(function () {
|
|
|
rightElesObj.resize = $('#slideResizeRight');
|
|
|
rightElesObj.parent = $('#dataRow');
|
|
|
rightElesObj.left = $('#mainContent');
|
|
|
- rightElesObj.right = $('#zmhsContent');
|
|
|
+ rightElesObj.right = $('#rightContent');
|
|
|
let maxEvalRight = `$('#dataRow').width() - $('#leftContent').width() - 200`;
|
|
|
- SlideResize.horizontalSlide(rightElesObj, {min: 200, max: maxEvalRight}, function () {
|
|
|
+ rightElesObj.getOtherFunc = (index) => {
|
|
|
+ return index ? 0 : $('#zmhs').hasClass('active') ? 1 : 2;
|
|
|
+ };
|
|
|
+ SlideResize.horizontalSlide(rightElesObj, { min: 200, max: maxEvalRight }, function () {
|
|
|
refreshALlWorkBook();
|
|
|
});
|
|
|
//设置水平拖动条的宽度
|
|
|
//@param {Object dom}resize滚动条
|
|
|
- function setResizeWidth (resize) {
|
|
|
+ function setResizeWidth(resize) {
|
|
|
const fixedWidth = 10;
|
|
|
//跟滚动条同层的其他节点
|
|
|
let bros = resize.parent().children();
|
|
@@ -76,8 +82,8 @@ $(document).ready(function () {
|
|
|
//宽度比例localstorage key
|
|
|
let leftContentKey = `${moduleName}${$('#leftContent').attr('id')}Width`,
|
|
|
mainContentKey = `${moduleName}${$('#mainContent').attr('id')}Width`,
|
|
|
- zmhsContentKey = `${moduleName}${$('#zmhsContent').attr('id')}Width`;
|
|
|
- let zmhsWidth = getLocalCache(zmhsContentKey) ? getLocalCache(zmhsContentKey) :$('#zmhsContent')[0].style.width,
|
|
|
+ zmhsContentKey = `${moduleName}${$('#rightContent').attr('id')}Width`;
|
|
|
+ let zmhsWidth = getLocalCache(zmhsContentKey) ? getLocalCache(zmhsContentKey) : $('#rightContent')[0].style.width,
|
|
|
mainContentWidth = $('#mainContent')[0].style.width,
|
|
|
leftContentWidth;
|
|
|
zmhsWidth = parseFloat(zmhsWidth.replace('%', ''));
|
|
@@ -98,7 +104,7 @@ $(document).ready(function () {
|
|
|
setLocalCache(leftContentKey, `${leftContentWidth}%`);
|
|
|
$('#mainContent').css('width', `${mainContentWidth}%`);
|
|
|
setLocalCache(mainContentKey, `${mainContentWidth}%`);
|
|
|
- $('#zmhsContent').css('width', `${zmhsWidth}%`);
|
|
|
+ $('#rightContent').css('width', `${zmhsWidth}%`);
|
|
|
setLocalCache(zmhsContentKey, `${zmhsWidth}%`);
|
|
|
let resizes = [$('#slideResizeLeft'), $('#slideResizeRight')];
|
|
|
for (let resize of resizes) {
|
|
@@ -107,18 +113,23 @@ $(document).ready(function () {
|
|
|
sectionTreeObj.loadRateWidth();
|
|
|
}
|
|
|
$('#zmhs').click(function () {
|
|
|
- if(!$(this).hasClass('active')){
|
|
|
+ if (!$(this).hasClass('active')) {
|
|
|
+ $('#loss').removeClass('active');
|
|
|
$(this).addClass('active');
|
|
|
refreshAfterZmhs(true);
|
|
|
- $('#zmhsContent').show();
|
|
|
- if(!coeOprObj.workBook){
|
|
|
+ $('#zmhsWrap').show();
|
|
|
+ $('#lossWrap').hide();
|
|
|
+ $('#rightContent').show();
|
|
|
+ if (!coeOprObj.workBook) {
|
|
|
pageObj.initPage();
|
|
|
}
|
|
|
refreshALlWorkBook();
|
|
|
} else {
|
|
|
$(this).removeClass('active');
|
|
|
refreshAfterZmhs(false);
|
|
|
- $('#zmhsContent').hide();
|
|
|
+ $('#rightContent').hide();
|
|
|
+ $('#zmhsWrap').hide();
|
|
|
+ $('#lossWrap').hide();
|
|
|
refreshALlWorkBook();
|
|
|
}
|
|
|
});
|
|
@@ -167,14 +178,14 @@ function loadZmhsAdjSize(resizeObj) {
|
|
|
});
|
|
|
}
|
|
|
var pageObj = {
|
|
|
- initPage: function (){
|
|
|
+ initPage: function () {
|
|
|
coeOprObj.buildSheet($('#mainSpread')[0]);
|
|
|
gljAdjOprObj.buildSheet($('#contentSpread')[0]);
|
|
|
coeOprObj.getCoeList();
|
|
|
gljAdjOprObj.getGljItemsOcc();
|
|
|
lockUtil.lockSpreads([coeOprObj.workBook, gljAdjOprObj.workBook], locked);
|
|
|
},
|
|
|
- showData: function(sheet, setting, data) {
|
|
|
+ showData: function (sheet, setting, data) {
|
|
|
let me = pageObj, ch = GC.Spread.Sheets.SheetArea.viewport;
|
|
|
sheet.suspendPaint();
|
|
|
sheet.suspendEvent();
|
|
@@ -184,16 +195,16 @@ var pageObj = {
|
|
|
var hAlign = "left", vAlign = "center";
|
|
|
if (setting.header[col].hAlign) {
|
|
|
hAlign = setting.header[col].hAlign;
|
|
|
- } else if (setting.header[col].dataType !== "String"){
|
|
|
+ } else if (setting.header[col].dataType !== "String") {
|
|
|
hAlign = "right";
|
|
|
}
|
|
|
- if(setting.header[col].readOnly){
|
|
|
+ if (setting.header[col].readOnly) {
|
|
|
sheet.getRange(-1, col, -1, 1).locked(true);
|
|
|
}
|
|
|
- else{
|
|
|
+ else {
|
|
|
sheet.getRange(-1, col, -1, 1).locked(false);
|
|
|
}
|
|
|
- vAlign = setting.header[col].vAlign?setting.header[col].vAlign:vAlign;
|
|
|
+ vAlign = setting.header[col].vAlign ? setting.header[col].vAlign : vAlign;
|
|
|
sheetCommonObj.setAreaAlign(sheet.getRange(-1, col, -1, 1), hAlign, vAlign);
|
|
|
if (setting.header[col].formatter) {
|
|
|
sheet.setFormatter(-1, col, setting.header[col].formatter, GC.Spread.Sheets.SheetArea.viewport);
|
|
@@ -216,17 +227,17 @@ let coeOprObj = {
|
|
|
currentMaxNo: null,
|
|
|
setting: {
|
|
|
header: [
|
|
|
- {headerName:"编号", headerWidth:50, dataCode:"serialNo", dataType: "String", hAlign: "center", vAlign: "center", readOnly: false},
|
|
|
- {headerName:"名称", headerWidth:200, dataCode:"name", dataType: "String", hAlign: "left", vAlign: "center", readOnly: false},
|
|
|
- {headerName:"内容", headerWidth:150, dataCode:"content", dataType: "String", hAlign: "left", vAlign: "center", readOnly: false},
|
|
|
- {headerName:"原人材机编码", headerWidth:90, dataCode:"original_code", dataType: "String", hAlign: "center", vAlign: "center", readOnly: false},
|
|
|
- {headerName:"可选人材机编码", headerWidth:150, dataCode:"option_codes", dataType: "String", hAlign: "center", vAlign: "center", readOnly: false}
|
|
|
+ { headerName: "编号", headerWidth: 50, dataCode: "serialNo", dataType: "String", hAlign: "center", vAlign: "center", readOnly: false },
|
|
|
+ { headerName: "名称", headerWidth: 200, dataCode: "name", dataType: "String", hAlign: "left", vAlign: "center", readOnly: false },
|
|
|
+ { headerName: "内容", headerWidth: 150, dataCode: "content", dataType: "String", hAlign: "left", vAlign: "center", readOnly: false },
|
|
|
+ { headerName: "原人材机编码", headerWidth: 90, dataCode: "original_code", dataType: "String", hAlign: "center", vAlign: "center", readOnly: false },
|
|
|
+ { headerName: "可选人材机编码", headerWidth: 150, dataCode: "option_codes", dataType: "String", hAlign: "center", vAlign: "center", readOnly: false }
|
|
|
]
|
|
|
},
|
|
|
buildSheet: function (container) {
|
|
|
let me = coeOprObj;
|
|
|
me.workBook = sheetCommonObj.buildSheet(container, me.setting, 30);
|
|
|
- sheetCommonObj.bindEscKey(me.workBook, [{sheet: me.workBook.getSheet(0), editStarting: null, editEnded: me.onEditEnded}]);
|
|
|
+ sheetCommonObj.bindEscKey(me.workBook, [{ sheet: me.workBook.getSheet(0), editStarting: null, editEnded: me.onEditEnded }]);
|
|
|
me.workSheet = me.workBook.getSheet(0);
|
|
|
me.workSheet.options.isProtected = true;
|
|
|
me.onDelOpr(me.workBook, me.setting);
|
|
@@ -237,7 +248,7 @@ let coeOprObj = {
|
|
|
me.workBook.bind(GC.Spread.Sheets.Events.ClipboardPasted, me.onClipboardPasted);
|
|
|
},
|
|
|
onSelectionChanged: function (sender, info) {
|
|
|
- if(info.oldSelections.length === 0 && info.newSelections.length > 0 || info.oldSelections[0].row !== info.newSelections[0].row){
|
|
|
+ if (info.oldSelections.length === 0 && info.newSelections.length > 0 || info.oldSelections[0].row !== info.newSelections[0].row) {
|
|
|
const row = info.newSelections[0].row;
|
|
|
coeOprObj.coeSelInit(row);
|
|
|
}
|
|
@@ -245,11 +256,11 @@ let coeOprObj = {
|
|
|
coeSelInit: function (row) {
|
|
|
const me = coeOprObj;
|
|
|
const adj = gljAdjOprObj;
|
|
|
- if(row < me.currentCoeList.length){
|
|
|
+ if (row < me.currentCoeList.length) {
|
|
|
me.currentCoe = me.currentCoeList[row];
|
|
|
adj.currentGljAdjList = me.currentCoe.coes;
|
|
|
adj.buildDynamicComboBox(adj.workSheet);
|
|
|
- } else{
|
|
|
+ } else {
|
|
|
me.currentCoe = null;
|
|
|
adj.currentGljAdjList = [];
|
|
|
adj.buildBaseCell(adj.workSheet);
|
|
@@ -261,42 +272,42 @@ let coeOprObj = {
|
|
|
},
|
|
|
onEditEnded: function (sender, args) {
|
|
|
let me = coeOprObj, addArr = [], updateArr = [], dataCode = me.setting.header[args.col].dataCode;
|
|
|
- if(args.editingText && args.editingText.toString().trim().length > 0){
|
|
|
+ if (args.editingText && args.editingText.toString().trim().length > 0) {
|
|
|
let inputT = args.editingText.toString().trim();
|
|
|
//update
|
|
|
- if(args.row < me.currentCoeList.length){
|
|
|
+ if (args.row < me.currentCoeList.length) {
|
|
|
let updateObj = me.currentCoeList[args.row];
|
|
|
- if(updateObj[dataCode] != inputT){
|
|
|
- if(dataCode === 'serialNo'){
|
|
|
- if(me.isInt(inputT) && !me.hasTisNo(me.currentCoeList, inputT)){
|
|
|
+ if (updateObj[dataCode] != inputT) {
|
|
|
+ if (dataCode === 'serialNo') {
|
|
|
+ if (me.isInt(inputT) && !me.hasTisNo(me.currentCoeList, inputT)) {
|
|
|
me.currentMaxNo = me.currentMaxNo >= inputT ? me.currentMaxNo : inputT;
|
|
|
updateObj[dataCode] = inputT;
|
|
|
updateArr.push(updateObj);
|
|
|
me.save([], updateArr, [], true);
|
|
|
}
|
|
|
- else if(!me.isInt(inputT)){
|
|
|
+ else if (!me.isInt(inputT)) {
|
|
|
alert('编号只能为整数!');
|
|
|
args.sheet.setValue(args.row, args.col, updateObj[dataCode] + '');
|
|
|
}
|
|
|
- else if(me.hasTisNo(me.currentCoeList, inputT)){
|
|
|
+ else if (me.hasTisNo(me.currentCoeList, inputT)) {
|
|
|
alert('该编号已存在!');
|
|
|
args.sheet.setValue(args.row, args.col, updateObj[dataCode] + '');
|
|
|
}
|
|
|
}
|
|
|
else {
|
|
|
updateObj[dataCode] = inputT;
|
|
|
- me.setOptionList(dataCode,inputT,updateObj);
|
|
|
+ me.setOptionList(dataCode, inputT, updateObj);
|
|
|
updateArr.push(updateObj);
|
|
|
me.save([], updateArr, [], true);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
//insert
|
|
|
- else{
|
|
|
+ else {
|
|
|
let newCoe = {};
|
|
|
newCoe.libID = pageOprObj.rationLibId;
|
|
|
- if(dataCode === 'serialNo'){
|
|
|
- if(me.isInt(inputT) && !me.hasTisNo(me.currentCoeList, inputT)){
|
|
|
+ if (dataCode === 'serialNo') {
|
|
|
+ if (me.isInt(inputT) && !me.hasTisNo(me.currentCoeList, inputT)) {
|
|
|
me.currentMaxNo = me.currentMaxNo >= inputT ? me.currentMaxNo : inputT;
|
|
|
newCoe[dataCode] = inputT;
|
|
|
addArr.push(newCoe);
|
|
@@ -304,19 +315,19 @@ let coeOprObj = {
|
|
|
me.updateCurrentCoeList(result);
|
|
|
});
|
|
|
}
|
|
|
- else if(!me.isInt(inputT)){
|
|
|
+ else if (!me.isInt(inputT)) {
|
|
|
args.sheet.setValue(args.row, args.col, '');
|
|
|
alert('编号只能为整数!');
|
|
|
}
|
|
|
- else if(me.hasTisNo(me.currentCoeList, inputT)){
|
|
|
+ else if (me.hasTisNo(me.currentCoeList, inputT)) {
|
|
|
args.sheet.setValue(args.row, args.col, '');
|
|
|
alert('该编号已存在!');
|
|
|
}
|
|
|
}
|
|
|
- else{
|
|
|
+ else {
|
|
|
newCoe.serialNo = ++me.currentMaxNo;
|
|
|
newCoe[dataCode] = inputT;
|
|
|
- me.setOptionList(dataCode,inputT,newCoe);
|
|
|
+ me.setOptionList(dataCode, inputT, newCoe);
|
|
|
addArr.push(newCoe);
|
|
|
me.save(addArr, [], [], true, function (result) {
|
|
|
me.updateCurrentCoeList(result);
|
|
@@ -325,21 +336,21 @@ let coeOprObj = {
|
|
|
}
|
|
|
}
|
|
|
},
|
|
|
- setOptionList:function (dataCode,inputT,obj) {
|
|
|
- if(dataCode == "option_codes"){//所选人材的情况,要获取人材机下拉列表
|
|
|
+ setOptionList: function (dataCode, inputT, obj) {
|
|
|
+ if (dataCode == "option_codes") {//所选人材的情况,要获取人材机下拉列表
|
|
|
inputT = inputT.replace(/[\s\r\n]/g, "")//去掉空格换行等字符
|
|
|
let optionList = [];
|
|
|
let options = inputT.split("|");
|
|
|
- for(let code of options){
|
|
|
- let name = gljAdjOprObj.getGljName(code,gljAdjOprObj.gljList,true);
|
|
|
- if(name) optionList.push({text:name,value:code});
|
|
|
+ for (let code of options) {
|
|
|
+ let name = gljAdjOprObj.getGljName(code, gljAdjOprObj.gljList, true);
|
|
|
+ if (name) optionList.push({ text: name, value: code });
|
|
|
}
|
|
|
obj.option_list = optionList;
|
|
|
}
|
|
|
},
|
|
|
onClipboardPasting: function (sender, info) {
|
|
|
let me = coeOprObj, maxCol = info.cellRange.col + info.cellRange.colCount - 1;
|
|
|
- if(maxCol > me.setting.header.length){
|
|
|
+ if (maxCol > me.setting.header.length) {
|
|
|
info.cancel = true;
|
|
|
}
|
|
|
},
|
|
@@ -347,14 +358,14 @@ let coeOprObj = {
|
|
|
let me = coeOprObj, addArr = [], updateArr = [];
|
|
|
let items = sheetCommonObj.analyzePasteData(me.setting, info);
|
|
|
let uniqItems = me.makeUniqItems(items);
|
|
|
- for(let i = 0, len = uniqItems.length; i < len; i++){
|
|
|
+ for (let i = 0, len = uniqItems.length; i < len; i++) {
|
|
|
let row = i + info.cellRange.row;
|
|
|
//update
|
|
|
- if(row < me.currentCoeList.length){
|
|
|
+ if (row < me.currentCoeList.length) {
|
|
|
let updateObj = me.currentCoeList[row];
|
|
|
- for(let attr in uniqItems[i]){
|
|
|
- if(attr === 'serialNo'){
|
|
|
- if(me.isInt(uniqItems[i][attr]) && !me.hasTisNo(me.currentCoeList, uniqItems[i][attr])){
|
|
|
+ for (let attr in uniqItems[i]) {
|
|
|
+ if (attr === 'serialNo') {
|
|
|
+ if (me.isInt(uniqItems[i][attr]) && !me.hasTisNo(me.currentCoeList, uniqItems[i][attr])) {
|
|
|
me.currentMaxNo = me.currentMaxNo >= uniqItems[i][attr] ? me.currentMaxNo : uniqItems[i][attr];
|
|
|
updateObj[attr] = uniqItems[i][attr];
|
|
|
}
|
|
@@ -367,7 +378,7 @@ let coeOprObj = {
|
|
|
}
|
|
|
//insert
|
|
|
else {
|
|
|
- if(typeof uniqItems[i].serialNo !== 'undefined' && uniqItems[i] && me.isInt(uniqItems[i].serialNo) && !me.hasTisNo(me.currentCoeList, uniqItems[i].serialNo)){
|
|
|
+ if (typeof uniqItems[i].serialNo !== 'undefined' && uniqItems[i] && me.isInt(uniqItems[i].serialNo) && !me.hasTisNo(me.currentCoeList, uniqItems[i].serialNo)) {
|
|
|
me.currentMaxNo = me.currentMaxNo >= uniqItems[i].serialNo ? me.currentMaxNo : uniqItems[i].serialNo;
|
|
|
}
|
|
|
else {
|
|
@@ -377,7 +388,7 @@ let coeOprObj = {
|
|
|
addArr.push(uniqItems[i]);
|
|
|
}
|
|
|
}
|
|
|
- if(addArr.length > 0 || updateArr.length > 0){
|
|
|
+ if (addArr.length > 0 || updateArr.length > 0) {
|
|
|
me.save(addArr, updateArr, [], true, function (result) {
|
|
|
me.updateCurrentCoeList(result);
|
|
|
});
|
|
@@ -390,21 +401,21 @@ let coeOprObj = {
|
|
|
let sheet = workBook.getSheet(0);
|
|
|
let sels = sheet.getSelections();
|
|
|
let idx = sels[0].row;
|
|
|
- for(let i = 0, len = sels.length; i < len; i++){
|
|
|
- if(idx > sels[i].row){
|
|
|
+ for (let i = 0, len = sels.length; i < len; i++) {
|
|
|
+ if (idx > sels[i].row) {
|
|
|
idx = sels[i].row;
|
|
|
}
|
|
|
- if(sels[i].colCount === setting.header.length){//can del
|
|
|
- for(let r = 0, rLen = sels[i].rowCount; r < rLen; r++){
|
|
|
+ if (sels[i].colCount === setting.header.length) {//can del
|
|
|
+ for (let r = 0, rLen = sels[i].rowCount; r < rLen; r++) {
|
|
|
let row = sels[i].row + r;
|
|
|
- if(row < me.currentCoeList.length){
|
|
|
- deleteArr.push({libID: me.currentCoeList[row].libID, ID: me.currentCoeList[row].ID});
|
|
|
+ if (row < me.currentCoeList.length) {
|
|
|
+ deleteArr.push({ libID: me.currentCoeList[row].libID, ID: me.currentCoeList[row].ID });
|
|
|
}
|
|
|
}
|
|
|
me.currentCoeList.splice(sels[i].row, sels[i].rowCount);
|
|
|
}
|
|
|
}
|
|
|
- if(deleteArr.length > 0){
|
|
|
+ if (deleteArr.length > 0) {
|
|
|
me.save([], [], deleteArr, true);
|
|
|
me.currentCoe = typeof me.currentCoeList[idx] !== 'undefined' ? me.currentCoeList[idx] : null;
|
|
|
that.currentGljAdjList = me.currentCoe ? me.currentCoe.coes : [];
|
|
@@ -419,18 +430,18 @@ let coeOprObj = {
|
|
|
const me = this;
|
|
|
$.contextMenu({
|
|
|
selector: '#mainSpread',
|
|
|
- build: function($triggerElement, e){
|
|
|
+ build: function ($triggerElement, e) {
|
|
|
//控制允许右键菜单在哪个位置出现
|
|
|
const target = SheetDataHelper.safeRightClickSelection($triggerElement, e, me.workBook);
|
|
|
const sheet = me.workBook.getSheet(0);
|
|
|
- if(target.hitTestType === 3){//在表格内&& typeof target.row !== 'undefined' && typeof target.col !== 'undefined'
|
|
|
- if(typeof target.row !== 'undefined'){
|
|
|
+ if (target.hitTestType === 3) {//在表格内&& typeof target.row !== 'undefined' && typeof target.col !== 'undefined'
|
|
|
+ if (typeof target.row !== 'undefined') {
|
|
|
//控制按钮是否可用
|
|
|
sheet.setActiveCell(target.row, target.col);
|
|
|
me.coeSelInit(target.row);
|
|
|
}
|
|
|
return {
|
|
|
- callback: function(){},
|
|
|
+ callback: function () { },
|
|
|
items: {
|
|
|
getReference: {
|
|
|
name: '查找引用',
|
|
@@ -446,7 +457,7 @@ let coeOprObj = {
|
|
|
}
|
|
|
};
|
|
|
}
|
|
|
- else{
|
|
|
+ else {
|
|
|
return false;
|
|
|
}
|
|
|
}
|
|
@@ -478,20 +489,20 @@ let coeOprObj = {
|
|
|
//粘贴的数据,编号唯一化,去除编号重复的项
|
|
|
makeUniqItems: function (items) {
|
|
|
let rst = [];
|
|
|
- for(let i = 0, len = items.length; i < len; i++){
|
|
|
- if(typeof items[i].serialNo !== 'undefined' && items[i].serialNo){
|
|
|
- if(rst.length === 0){
|
|
|
+ for (let i = 0, len = items.length; i < len; i++) {
|
|
|
+ if (typeof items[i].serialNo !== 'undefined' && items[i].serialNo) {
|
|
|
+ if (rst.length === 0) {
|
|
|
rst.push(items[i]);
|
|
|
}
|
|
|
- else{
|
|
|
+ else {
|
|
|
let isExist = false;
|
|
|
- for(let j = 0, jLen = rst.length; j < jLen; j++){
|
|
|
- if(items[i].serialNo === rst[j].serialNo){
|
|
|
+ for (let j = 0, jLen = rst.length; j < jLen; j++) {
|
|
|
+ if (items[i].serialNo === rst[j].serialNo) {
|
|
|
isExist = true;
|
|
|
break;
|
|
|
}
|
|
|
}
|
|
|
- if(!isExist){
|
|
|
+ if (!isExist) {
|
|
|
rst.push(items[i]);
|
|
|
}
|
|
|
}
|
|
@@ -507,8 +518,8 @@ let coeOprObj = {
|
|
|
},
|
|
|
hasTisNo: function (coeList, newSerialNo) {
|
|
|
let rst = false;
|
|
|
- for(let i = 0, len = coeList.length; i < len; i++){
|
|
|
- if(coeList[i].serialNo == newSerialNo){
|
|
|
+ for (let i = 0, len = coeList.length; i < len; i++) {
|
|
|
+ if (coeList[i].serialNo == newSerialNo) {
|
|
|
rst = true;
|
|
|
break;
|
|
|
}
|
|
@@ -517,15 +528,15 @@ let coeOprObj = {
|
|
|
},
|
|
|
updateCurrentCoeList: function (newCoeList) {
|
|
|
let me = coeOprObj;
|
|
|
- if(newCoeList){
|
|
|
+ if (newCoeList) {
|
|
|
me.currentCoeList = me.currentCoeList.concat(newCoeList);
|
|
|
}
|
|
|
},
|
|
|
sortCoeList: function (coeList) {
|
|
|
coeList.sort(function (a, b) {
|
|
|
let rst = 0;
|
|
|
- if(a.serialNo > b.serialNo) rst = 1;
|
|
|
- else if(a.serialNo < b.serialNo) rst = -1;
|
|
|
+ if (a.serialNo > b.serialNo) rst = 1;
|
|
|
+ else if (a.serialNo < b.serialNo) rst = -1;
|
|
|
return rst;
|
|
|
});
|
|
|
},
|
|
@@ -534,19 +545,19 @@ let coeOprObj = {
|
|
|
$.ajax({
|
|
|
type: 'post',
|
|
|
url: '/rationRepository/api/getCoeList',
|
|
|
- data: {libID: pageOprObj.rationLibId},
|
|
|
+ data: { libID: pageOprObj.rationLibId },
|
|
|
dataType: 'json',
|
|
|
- timeout:20000,
|
|
|
+ timeout: 20000,
|
|
|
success: function (result) {
|
|
|
- if(!result.error){
|
|
|
+ if (!result.error) {
|
|
|
me.currentCoeList = result.data;
|
|
|
me.sortCoeList(me.currentCoeList);
|
|
|
- me.currentMaxNo = me.currentCoeList.length > 0 ? me.currentCoeList[me.currentCoeList.length - 1].serialNo : 0;
|
|
|
+ me.currentMaxNo = me.currentCoeList.length > 0 ? me.currentCoeList[me.currentCoeList.length - 1].serialNo : 0;
|
|
|
pageObj.showData(me.workSheet, me.setting, me.currentCoeList);
|
|
|
me.workSheet.clearSelection();
|
|
|
}
|
|
|
},
|
|
|
- error:function(err){
|
|
|
+ error: function (err) {
|
|
|
alert("内部程序错误!");
|
|
|
}
|
|
|
});
|
|
@@ -554,19 +565,19 @@ let coeOprObj = {
|
|
|
save: function (addArr, updateArr, deleteArr, refresh, callback) {
|
|
|
let me = coeOprObj;
|
|
|
$.ajax({
|
|
|
- type:"POST",
|
|
|
- url:"api/saveCoeList",
|
|
|
- data: {data: JSON.stringify({addArr: addArr, updateArr: updateArr, deleteArr: deleteArr})},
|
|
|
- dataType:"json",
|
|
|
- timeout:5000,
|
|
|
- success:function(result){
|
|
|
+ type: "POST",
|
|
|
+ url: "api/saveCoeList",
|
|
|
+ data: { data: JSON.stringify({ addArr: addArr, updateArr: updateArr, deleteArr: deleteArr }) },
|
|
|
+ dataType: "json",
|
|
|
+ timeout: 5000,
|
|
|
+ success: function (result) {
|
|
|
if (result.error) {
|
|
|
alert(result.message);
|
|
|
- } else{
|
|
|
- if(callback){
|
|
|
- if(result.message === 'mixed'){
|
|
|
- for(let i = 0, len = result.data.length; i < len; i++){
|
|
|
- if(result.data[i][0] === 'addSc'){
|
|
|
+ } else {
|
|
|
+ if (callback) {
|
|
|
+ if (result.message === 'mixed') {
|
|
|
+ for (let i = 0, len = result.data.length; i < len; i++) {
|
|
|
+ if (result.data[i][0] === 'addSc') {
|
|
|
result.data = result.data[i][1];
|
|
|
break;
|
|
|
}
|
|
@@ -574,20 +585,39 @@ let coeOprObj = {
|
|
|
}
|
|
|
callback(result.data);
|
|
|
}
|
|
|
- if(refresh){
|
|
|
+ if (refresh) {
|
|
|
me.sortCoeList(me.currentCoeList);
|
|
|
me.currentMaxNo = me.currentCoeList.length > 0 ? me.currentCoeList[me.currentCoeList.length - 1].serialNo : 0;
|
|
|
pageObj.showData(me.workSheet, me.setting, me.currentCoeList);
|
|
|
}
|
|
|
}
|
|
|
},
|
|
|
- error:function(err){
|
|
|
+ error: function (err) {
|
|
|
alert("内部程序错误!");
|
|
|
}
|
|
|
});
|
|
|
}
|
|
|
};
|
|
|
|
|
|
+// 验证数量的有效性:可以输入数值,也可以输入表达式,eg: [人材机编码]*1.5+1
|
|
|
+const validateAmount = (amountStr) => {
|
|
|
+ if (!amountStr) {
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+ let str = amountStr.replace(/\s/g, '');
|
|
|
+ if (!str) {
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+ try {
|
|
|
+ str = amountStr.replace(/\s/g, '').replace(/\[\d+\]/g, '0');
|
|
|
+ eval(str);
|
|
|
+
|
|
|
+ } catch (error) {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ return true;
|
|
|
+}
|
|
|
+
|
|
|
let gljAdjOprObj = {
|
|
|
workBook: null,
|
|
|
workSheet: null,
|
|
@@ -596,28 +626,28 @@ let gljAdjOprObj = {
|
|
|
|
|
|
setting: {
|
|
|
header: [
|
|
|
- {headerName:"调整类型", headerWidth:80, dataCode:"coeType", dataType: "String", hAlign: "center", vAlign: "center", readOnly: false},
|
|
|
- {headerName:"人材机编码", headerWidth:80, dataCode:"gljCode", dataType: "String", formatter: '@', hAlign: "center", vAlign: "center", readOnly: false},
|
|
|
+ { headerName: "调整类型", headerWidth: 80, dataCode: "coeType", dataType: "String", hAlign: "center", vAlign: "center", readOnly: false },
|
|
|
+ { headerName: "人材机编码", headerWidth: 80, dataCode: "gljCode", dataType: "String", formatter: '@', hAlign: "center", vAlign: "center", readOnly: false },
|
|
|
// readOnly: true --> false,需要兼容粘贴列包含只读项
|
|
|
- {headerName:"名称", headerWidth:100, dataCode:"gljName", dataType: "String", hAlign: "center", vAlign: "center", readOnly: false},
|
|
|
- {headerName:"操作符", headerWidth:60, dataCode:"operator", dataType: "String", hAlign: "center", vAlign: "center", readOnly: false},
|
|
|
- {headerName:"数量", headerWidth:80, dataCode:"amount", dataType: "String", hAlign: "center", vAlign: "center" , readOnly: false},
|
|
|
- {headerName:"替换为编码", headerWidth:80, dataCode:"replaceCode", dataType: "String", formatter: '@', hAlign: "center", vAlign: "center", readOnly: false},
|
|
|
+ { headerName: "名称", headerWidth: 100, dataCode: "gljName", dataType: "String", hAlign: "center", vAlign: "center", readOnly: false },
|
|
|
+ { headerName: "操作符", headerWidth: 60, dataCode: "operator", dataType: "String", hAlign: "center", vAlign: "center", readOnly: false },
|
|
|
+ { headerName: "数量", headerWidth: 80, dataCode: "amount", dataType: "String", hAlign: "center", vAlign: "center", readOnly: false },
|
|
|
+ { headerName: "替换为编码", headerWidth: 80, dataCode: "replaceCode", dataType: "String", formatter: '@', hAlign: "center", vAlign: "center", readOnly: false },
|
|
|
// readOnly: true --> false
|
|
|
- {headerName:"替换为名称", headerWidth:100, dataCode:"replaceName", dataType: "String", hAlign: "center", vAlign: "center", readOnly: false}
|
|
|
+ { headerName: "替换为名称", headerWidth: 100, dataCode: "replaceName", dataType: "String", hAlign: "center", vAlign: "center", readOnly: false }
|
|
|
],
|
|
|
comboItems: {
|
|
|
//调整类型下拉菜单
|
|
|
- coeType: ['定额', '人工', '材料', '机械', '主材', '设备', '单个工料机','替换人材机',"所选人材机"],
|
|
|
+ coeType: ['定额', '人工', '材料', '机械', '主材', '设备', '单个工料机', '替换人材机', "所选人材机"],
|
|
|
//操作符下拉菜单
|
|
|
- operator: ['+', '-', '*', '/', '=','+*','-*']
|
|
|
+ operator: ['+', '-', '*', '/', '=', '+*', '-*']
|
|
|
}
|
|
|
},
|
|
|
buildSheet: function (container) {
|
|
|
let me = gljAdjOprObj;
|
|
|
me.workBook = sheetCommonObj.buildSheet(container, me.setting, 3);
|
|
|
me.workSheet = me.workBook.getSheet(0);
|
|
|
- sheetCommonObj.bindEscKey(me.workBook, [{sheet: me.workBook.getSheet(0), editStarting: me.onEditStart, editEnded: me.onEditEnded}]);
|
|
|
+ sheetCommonObj.bindEscKey(me.workBook, [{ sheet: me.workBook.getSheet(0), editStarting: me.onEditStart, editEnded: me.onEditEnded }]);
|
|
|
me.workSheet.options.isProtected = true;
|
|
|
me.onDelOpr(me.workBook, me.setting);
|
|
|
me.workSheet.clearSelection();
|
|
@@ -691,36 +721,36 @@ let gljAdjOprObj = {
|
|
|
onEditEnded: function (sender, args) {
|
|
|
let me = gljAdjOprObj, isUpdate = false,
|
|
|
dataCode = me.setting.header[args.col].dataCode;
|
|
|
- if(args.editingText && args.editingText.toString().trim().length > 0){
|
|
|
- if(dataCode === 'amount' && isNaN(args.editingText)){
|
|
|
- alert("只能输入数值!");
|
|
|
+ if (args.editingText && args.editingText.toString().trim().length > 0) {
|
|
|
+ if (dataCode === 'amount' && !validateAmount(args.editingText)) {
|
|
|
+ alert("请输入数值或者表达式,如:[人材机编码]*0.3+1");
|
|
|
args.sheet.setValue(args.row, args.col, typeof me.currentGljAdjList[args.row] !== 'undefined' && typeof me.currentGljAdjList[args.row][dataCode] !== 'undefined'
|
|
|
? me.currentGljAdjList[args.row][dataCode] + '' : '');
|
|
|
}
|
|
|
else {
|
|
|
//update
|
|
|
- if(args.row < me.currentGljAdjList.length && args.editingText.toString().trim() !== me.currentGljAdjList[args.row][dataCode]){
|
|
|
+ if (args.row < me.currentGljAdjList.length && args.editingText.toString().trim() !== me.currentGljAdjList[args.row][dataCode]) {
|
|
|
let updateObj = me.currentGljAdjList[args.row];
|
|
|
- if(dataCode === 'gljCode' && typeof updateObj.coeType !== 'undefined' && (updateObj.coeType === '单个工料机'||updateObj.coeType === '替换人材机')){
|
|
|
+ if (dataCode === 'gljCode' && typeof updateObj.coeType !== 'undefined' && (updateObj.coeType === '单个工料机' || updateObj.coeType === '替换人材机')) {
|
|
|
let gljName = me.getGljName(args.editingText, me.gljList);
|
|
|
- if(gljName){
|
|
|
+ if (gljName) {
|
|
|
updateObj.gljCode = args.editingText;
|
|
|
updateObj.gljName = gljName;
|
|
|
isUpdate = true;
|
|
|
} else {
|
|
|
- alert("不存在编号为"+ args.editingText +"的工料机");
|
|
|
+ alert("不存在编号为" + args.editingText + "的工料机");
|
|
|
}
|
|
|
- }else if(dataCode === 'replaceCode' && typeof updateObj.coeType !== 'undefined' && updateObj.coeType === '替换人材机'){
|
|
|
+ } else if (dataCode === 'replaceCode' && typeof updateObj.coeType !== 'undefined' && updateObj.coeType === '替换人材机') {
|
|
|
let gljName = me.getGljName(args.editingText, me.gljList);
|
|
|
- if(gljName){
|
|
|
+ if (gljName) {
|
|
|
updateObj.replaceCode = args.editingText;
|
|
|
updateObj.replaceName = gljName;
|
|
|
isUpdate = true;
|
|
|
} else {
|
|
|
- alert("不存在编号为"+ args.editingText +"的工料机");
|
|
|
+ alert("不存在编号为" + args.editingText + "的工料机");
|
|
|
}
|
|
|
}
|
|
|
- else if(dataCode === 'coeType'){
|
|
|
+ else if (dataCode === 'coeType') {
|
|
|
isUpdate = true;
|
|
|
updateObj[dataCode] = args.editingText;
|
|
|
updateObj.gljCode = '';
|
|
@@ -728,19 +758,19 @@ let gljAdjOprObj = {
|
|
|
updateObj.replaceCode = '';
|
|
|
updateObj.replaceName = '';
|
|
|
}
|
|
|
- else if(dataCode !== 'gljCode') {
|
|
|
+ else if (dataCode !== 'gljCode') {
|
|
|
isUpdate = true;
|
|
|
updateObj[dataCode] = args.editingText;
|
|
|
}
|
|
|
}
|
|
|
//insert
|
|
|
- else if(args.row >= me.currentGljAdjList.length){
|
|
|
+ else if (args.row >= me.currentGljAdjList.length) {
|
|
|
isUpdate = true;
|
|
|
let newAdjGlj = {};
|
|
|
newAdjGlj[dataCode] = args.editingText;
|
|
|
me.currentGljAdjList.push(newAdjGlj);
|
|
|
}
|
|
|
- if(isUpdate){
|
|
|
+ if (isUpdate) {
|
|
|
coeOprObj.save([], [coeOprObj.currentCoe], [], false, function () {
|
|
|
console.log(me.currentGljAdjList);
|
|
|
me.show(me.currentGljAdjList);
|
|
@@ -785,9 +815,13 @@ let gljAdjOprObj = {
|
|
|
}
|
|
|
},
|
|
|
amount: function (v, cur, tar) {
|
|
|
- if (!isNaN(v)) {
|
|
|
+ /* if (!isNaN(v)) {
|
|
|
+ tar.amount = v;
|
|
|
+ } */
|
|
|
+ if (validateAmount(v)) {
|
|
|
tar.amount = v;
|
|
|
}
|
|
|
+
|
|
|
},
|
|
|
operator: function (v, cur, tar) {
|
|
|
if (v === '' || me.setting.comboItems.operator.includes(v)) {
|
|
@@ -809,12 +843,12 @@ let gljAdjOprObj = {
|
|
|
}
|
|
|
};
|
|
|
let rst = [];
|
|
|
- for(let i = 0, len = pasteItems.length; i < len; i++){
|
|
|
+ for (let i = 0, len = pasteItems.length; i < len; i++) {
|
|
|
let row = i + info.cellRange.row;
|
|
|
let target = {},
|
|
|
curObj = me.currentGljAdjList[row],
|
|
|
pasteItem = pasteItems[i];
|
|
|
- if(row < me.currentGljAdjList.length){
|
|
|
+ if (row < me.currentGljAdjList.length) {
|
|
|
target.index = row;//要有下标做为匹配的依据,不然在复制多行并且某个单元格是只读的情况下,这里返回的updateList个数会比选中的行数少,造成更新行和实际不匹配的情况
|
|
|
}
|
|
|
for (let pasteKey in pasteItem) {
|
|
@@ -822,7 +856,7 @@ let gljAdjOprObj = {
|
|
|
rules[pasteKey](pasteItem[pasteKey], curObj, target);
|
|
|
}
|
|
|
}
|
|
|
- if(Object.keys(target).length > 0){
|
|
|
+ if (Object.keys(target).length > 0) {
|
|
|
rst.push(target);
|
|
|
}
|
|
|
}
|
|
@@ -832,20 +866,20 @@ let gljAdjOprObj = {
|
|
|
let me = gljAdjOprObj, row;
|
|
|
let items = sheetCommonObj.analyzePasteData(me.setting, info);
|
|
|
let validData = me.getValidPasteData(items, info);
|
|
|
- for(let i = 0, len = validData.length; i < len; i++){
|
|
|
+ for (let i = 0, len = validData.length; i < len; i++) {
|
|
|
row = i + info.cellRange.row;
|
|
|
//update
|
|
|
- if(row < me.currentGljAdjList.length && typeof validData[i].index !=='undefined'){
|
|
|
+ if (row < me.currentGljAdjList.length && typeof validData[i].index !== 'undefined') {
|
|
|
let updateObj = me.currentGljAdjList[validData[i].index];//这里改成读取下标
|
|
|
- delete validData[i].index; //清除下标
|
|
|
+ delete validData[i].index; //清除下标
|
|
|
Object.assign(updateObj, validData[i])
|
|
|
}
|
|
|
//insert
|
|
|
- else{
|
|
|
+ else {
|
|
|
me.currentGljAdjList.push(validData[i]);
|
|
|
}
|
|
|
}
|
|
|
- if(validData.length > 0){
|
|
|
+ if (validData.length > 0) {
|
|
|
coeOprObj.save([], [coeOprObj.currentCoe], [], false, function () {
|
|
|
me.show(me.currentGljAdjList);
|
|
|
});
|
|
@@ -860,15 +894,15 @@ let gljAdjOprObj = {
|
|
|
let sheet = workBook.getSheet(0);
|
|
|
let sels = sheet.getSelections();
|
|
|
let isUpdate = false;
|
|
|
- for(let i = 0, len = sels.length; i < len; i++){
|
|
|
- if(sels[i].colCount === setting.header.length){//can del
|
|
|
- if(sels[i].row < me.currentGljAdjList.length){
|
|
|
+ for (let i = 0, len = sels.length; i < len; i++) {
|
|
|
+ if (sels[i].colCount === setting.header.length) {//can del
|
|
|
+ if (sels[i].row < me.currentGljAdjList.length) {
|
|
|
isUpdate = true;
|
|
|
me.currentGljAdjList.splice(sels[i].row, sels[i].rowCount);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
- if(isUpdate){
|
|
|
+ if (isUpdate) {
|
|
|
coeOprObj.save([], [coeOprObj.currentCoe], [], false, function () {
|
|
|
me.show(me.currentGljAdjList);
|
|
|
});
|
|
@@ -877,11 +911,11 @@ let gljAdjOprObj = {
|
|
|
workBook.commandManager().setShortcutKey(null, GC.Spread.Commands.Key.del, false, false, false, false);
|
|
|
workBook.commandManager().setShortcutKey('gljAdjDel', GC.Spread.Commands.Key.del, false, false, false, false);
|
|
|
},
|
|
|
- getGljName: function (gljCode, gljList,withSpecs) {//withSpecs 是否带上规格型号
|
|
|
+ getGljName: function (gljCode, gljList, withSpecs) {//withSpecs 是否带上规格型号
|
|
|
let rst = null;
|
|
|
- for(let i = 0, len = gljList.length; i < len; i++){
|
|
|
- if(gljCode === gljList[i].code){
|
|
|
- rst = withSpecs == true ?gljList[i].name +" - "+gljList[i].specs :gljList[i].name;
|
|
|
+ for (let i = 0, len = gljList.length; i < len; i++) {
|
|
|
+ if (gljCode === gljList[i].code) {
|
|
|
+ rst = withSpecs == true ? gljList[i].name + " - " + gljList[i].specs : gljList[i].name;
|
|
|
break;
|
|
|
}
|
|
|
}
|
|
@@ -896,17 +930,17 @@ let gljAdjOprObj = {
|
|
|
$.ajax({
|
|
|
type: 'post',
|
|
|
url: '/stdGljRepository/api/getGljItemsOccupied',
|
|
|
- data: {repId: pageOprObj.gljLibId, occupation: '-_id code name specs'},
|
|
|
+ data: { repId: pageOprObj.gljLibId, occupation: '-_id code name specs' },
|
|
|
dataType: 'json',
|
|
|
timeout: 5000,
|
|
|
- success:function(result){
|
|
|
+ success: function (result) {
|
|
|
if (result.error) {
|
|
|
alert(result.message);
|
|
|
- } else{
|
|
|
+ } else {
|
|
|
me.gljList = result.data;
|
|
|
}
|
|
|
},
|
|
|
- error:function(err){
|
|
|
+ error: function (err) {
|
|
|
alert("内部程序错误!");
|
|
|
}
|
|
|
});
|