|
@@ -126,12 +126,12 @@ $(document).ready(() => {
|
|
|
}
|
|
|
};
|
|
|
const invalidAll = function () {
|
|
|
- setObjEnable($('a[type=add]'), false);
|
|
|
- setObjEnable($('a[type=delete]'), false);
|
|
|
- setObjEnable($('a[type=up-move]'), false);
|
|
|
- setObjEnable($('a[type=down-move]'), false);
|
|
|
- setObjEnable($('a[type=up-level]'), false);
|
|
|
- setObjEnable($('a[type=down-level]'), false);
|
|
|
+ setObjEnable($('a[nam=base-opr][type=add]'), false);
|
|
|
+ setObjEnable($('a[nam=base-opr][type=delete]'), false);
|
|
|
+ setObjEnable($('a[nam=base-opr][type=up-move]'), false);
|
|
|
+ setObjEnable($('a[nam=base-opr][type=down-move]'), false);
|
|
|
+ setObjEnable($('a[nam=base-opr][type=up-level]'), false);
|
|
|
+ setObjEnable($('a[nam=base-opr][type=down-level]'), false);
|
|
|
};
|
|
|
const sel = selection ? selection[0] : sheet.getSelections()[0];
|
|
|
const row = sel ? sel.row : -1;
|
|
@@ -165,20 +165,20 @@ $(document).ready(() => {
|
|
|
const preNode = tree.getPreSiblingNode(first);
|
|
|
const valid = !sheet.zh_setting.readOnly;
|
|
|
|
|
|
- setObjEnable($('a[type=add]'), valid && first && first.level > 1);
|
|
|
- setObjEnable($('a[type=delete]'), valid && first && sameParent && first.level > 1 && !nodeUsed);
|
|
|
- setObjEnable($('a[type=up-move]'), valid && first && sameParent && first.level > 1 && preNode);
|
|
|
- setObjEnable($('a[type=down-move]'), valid && first && sameParent && first.level > 1 && !tree.isLastSibling(last));
|
|
|
+ setObjEnable($('a[nam=base-opr][type=add]'), valid && first && first.level > 1);
|
|
|
+ setObjEnable($('a[nam=base-opr][type=delete]'), valid && first && sameParent && first.level > 1 && !nodeUsed);
|
|
|
+ setObjEnable($('a[nam=base-opr][type=up-move]'), valid && first && sameParent && first.level > 1 && preNode);
|
|
|
+ setObjEnable($('a[nam=base-opr][type=down-move]'), valid && first && sameParent && first.level > 1 && !tree.isLastSibling(last));
|
|
|
if (isTz) {
|
|
|
const posRange = last ? pos.getLedgerPos(last.id) : [];
|
|
|
- setObjEnable($('a[type=up-level]'), valid && first && sameParent && tree.getParent(first) && !nodeUsed
|
|
|
+ setObjEnable($('a[nam=base-opr][type=up-level]'), valid && first && sameParent && tree.getParent(first) && !nodeUsed
|
|
|
&& first.level > 2 && ((!posRange || posRange.length === 0) || tree.isLastSibling(last)));
|
|
|
const preNodePosRange = preNode ? pos.getLedgerPos(preNode.id) : [];
|
|
|
- setObjEnable($('a[type=down-level]'), valid && first && sameParent && !nodeUsed
|
|
|
+ setObjEnable($('a[nam=base-opr][type=down-level]'), valid && first && sameParent && !nodeUsed
|
|
|
&& first.level > 1 && preNode && (!preNodePosRange || preNodePosRange.length === 0));
|
|
|
} else {
|
|
|
- setObjEnable($('#up-level'), valid && first && sameParent && first.level > 2 && tree.getParent(first));
|
|
|
- setObjEnable($('#down-level'), valid && first && sameParent && first.level > 1 && preNode);
|
|
|
+ setObjEnable($('a[nam=base-opr][type=up-level]'), valid && first && sameParent && first.level > 2 && tree.getParent(first));
|
|
|
+ setObjEnable($('a[nam=base-opr][type=down-level]'), valid && first && sameParent && first.level > 1 && preNode);
|
|
|
}
|
|
|
setObjEnable($('#cut'), valid);
|
|
|
setObjEnable($('#paste'), valid);
|
|
@@ -1031,6 +1031,39 @@ $(document).ready(() => {
|
|
|
}
|
|
|
// 计量单元 相关方法&绑定spreadjs事件
|
|
|
const posSpreadObj = {
|
|
|
+ refreshOperationValid: function (sheet, selection) {
|
|
|
+ const setObjEnable = function (obj, enable) {
|
|
|
+ if (enable) {
|
|
|
+ obj.removeClass('disabled');
|
|
|
+ } else {
|
|
|
+ obj.addClass('disabled');
|
|
|
+ }
|
|
|
+ };
|
|
|
+ const invalidAll = function () {
|
|
|
+ setObjEnable($('a[name=pos-opr][type=up-move]'), false);
|
|
|
+ setObjEnable($('a[name=pos-opr][type=down-move]'), false);
|
|
|
+ };
|
|
|
+ const sel = selection ? selection[0] : sheet.getSelections()[0];
|
|
|
+ const row = sel ? sel.row : -1;
|
|
|
+ const first = sheet.zh_data[row];
|
|
|
+ if (!first) {
|
|
|
+ invalidAll();
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ let last = first;
|
|
|
+ if (sel.rowCount > 1 && first) {
|
|
|
+ for (let r = 1; r < sel.rowCount; r++) {
|
|
|
+ const rNode = sheet.zh_data[sel.row + r];
|
|
|
+ if (!rNode) break;
|
|
|
+ last = rNode;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ const preNode = sheet.zh_data[row - 1];
|
|
|
+ const valid = !sheet.zh_setting.readOnly;
|
|
|
+
|
|
|
+ setObjEnable($('a[name=pos-opr][type=up-move]'), valid && first && preNode);
|
|
|
+ setObjEnable($('a[name=pos-opr][type=down-move]'), valid && first && (sheet.zh_data.indexOf(last) < sheet.zh_data.length - 1));
|
|
|
+ },
|
|
|
loadExprToInput: function () {
|
|
|
const sel = posSheet.getSelections()[0];
|
|
|
if (!sel) return;
|
|
@@ -1062,6 +1095,70 @@ $(document).ready(() => {
|
|
|
}
|
|
|
SpreadJsObj.resetFieldReadOnly(posSheet);
|
|
|
posSpreadObj.loadExprToInput();
|
|
|
+ posSpreadObj.refreshOperationValid(posSheet);
|
|
|
+ },
|
|
|
+ baseOpr: function (sheet, type) {
|
|
|
+ const data = {
|
|
|
+ postType: 'pos',
|
|
|
+ posPostType: type === 'delete' ? type : 'update',
|
|
|
+ postData: [],
|
|
|
+ };
|
|
|
+ const selection = sheet.getSelections();
|
|
|
+ const row = selection[0].row, count = selection[0].rowCount;
|
|
|
+ const first = sheet.zh_data[row];
|
|
|
+ if (type === 'delete') {
|
|
|
+ for (let iRow = 0; iRow < count; iRow++) {
|
|
|
+ const posData = sheet.zh_data[iRow + row];
|
|
|
+ if (posData) {
|
|
|
+ if (posData.used) {
|
|
|
+ toastr.error('"' + posData.name + '"已计量,请勿删除');
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ data.postData.push(sheet.zh_data[iRow + row].id);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ } else if (type === 'up-move') {
|
|
|
+ const pre = sheet.zh_data[row - 1], preUpdate = {id: pre.id};
|
|
|
+ for (let iRow = 0; iRow < count; iRow++) {
|
|
|
+ const posData = sheet.zh_data[iRow + row];
|
|
|
+ if (posData) {
|
|
|
+ data.postData.push({id: posData.id, lid: posData.lid, porder: sheet.zh_data[iRow + row - 1].porder});
|
|
|
+ preUpdate.porder = posData.porder;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ data.postData.push(preUpdate);
|
|
|
+ } else if (type === 'down-move') {
|
|
|
+ const next = sheet.zh_data[row + count], nextUpdate = {id: next.id};
|
|
|
+ for (let iRow = count - 1; iRow >= 0; iRow--) {
|
|
|
+ const posData = sheet.zh_data[iRow + row];
|
|
|
+ if (posData) {
|
|
|
+ data.postData.push({id: posData.id, lid: posData.lid, porder: sheet.zh_data[iRow + row + 1].porder});
|
|
|
+ nextUpdate.porder = posData.porder;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ data.postData.push(nextUpdate);
|
|
|
+
|
|
|
+ }
|
|
|
+ if (data.postData.length > 0) {
|
|
|
+ postData(window.location.pathname + '/update', data, function (result) {
|
|
|
+ if (type === 'delete') {
|
|
|
+ pos.removeDatas(result.pos);
|
|
|
+ sheet.deleteRows(row, count);
|
|
|
+ const loadResult = billsTree.loadPostData(result.ledger);
|
|
|
+ billsTreeSpreadObj.refreshTree(billsSheet, loadResult);
|
|
|
+ billsTreeSpreadObj.refreshOperationValid(billsSheet);
|
|
|
+ posSpreadObj.refreshOperationValid(posSheet);
|
|
|
+ } else {
|
|
|
+ pos.updateDatas(result.pos);
|
|
|
+ const sel = selection[0];
|
|
|
+ if (sel) {
|
|
|
+ sheet.setSelection(sheet.zh_data.indexOf(first), sel.col, sel.rowCount, sel.colCount);
|
|
|
+ SpreadJsObj.reloadRowsBackColor(sheet, [sel.row, sheet.zh_data.indexOf(first)]);
|
|
|
+ }
|
|
|
+ posSpreadObj.loadCurPosData();
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
},
|
|
|
editStarting: function (e, info) {
|
|
|
posSpreadObj.billsNode = SpreadJsObj.getSelectObject(billsSheet);
|
|
@@ -1335,6 +1432,7 @@ $(document).ready(() => {
|
|
|
},
|
|
|
selectionChanged: function (e, info) {
|
|
|
posSpreadObj.loadExprToInput();
|
|
|
+ posSpreadObj.refreshOperationValid(posSheet);
|
|
|
},
|
|
|
addPegs: function (pegs) {
|
|
|
if (!pegs || pegs.length <= 0) return;
|
|
@@ -1355,6 +1453,9 @@ $(document).ready(() => {
|
|
|
};
|
|
|
posSpread.bind(spreadNS.Events.SelectionChanged, posSpreadObj.selectionChanged);
|
|
|
if (!readOnly && isTz) {
|
|
|
+ $('a[name="pos-opr"]').click(function () {
|
|
|
+ posSpreadObj.baseOpr(posSheet, this.getAttribute('type'));
|
|
|
+ });
|
|
|
$('#pos-expr').bind('change mouseleave', function () {
|
|
|
if (this.readOnly) return;
|
|
|
if (document.activeElement.id !== 'pos-expr') return;
|