浏览代码

1. 台账分解,计量单元,上下移
2. 台账修订,计量单元,上下移

MaiXinRong 5 年之前
父节点
当前提交
73cef6e4c1
共有 6 个文件被更改,包括 263 次插入52 次删除
  1. 13 13
      app/public/css/main.css
  2. 101 3
      app/public/js/ledger.js
  3. 115 14
      app/public/js/revise.js
  4. 15 9
      app/view/ledger/explode.ejs
  5. 15 9
      app/view/revise/info.ejs
  6. 4 4
      app/view/stage/pay.ejs

+ 13 - 13
app/public/css/main.css

@@ -8,8 +8,8 @@ body {
 .dropdown-menu {
     font-size: 12px
 }
-.btn.disabled, .btn:disabled {
-  color:#999
+.btn.text-primary.disabled, .btn.text-primary:disabled {
+  color:#666!important
 }
 .btn,.btn-group {
   vertical-align: baseline;
@@ -80,23 +80,23 @@ input.nospin[type="number"]{-moz-appearance:textfield;}
 /*滚动条*/
 /* 滚动条 */
 /*水平滚动条的样式*/
-/*::-webkit-scrollbar-thumb:horizontal {
+/*::-webkit-scrollbar-thumb:horizontal { 
 	width: 5px;
 	background-color: #e9ecef;
 	-webkit-border-radius: 0;
 }*/
 /*滚动条的背景颜色,滚动条的圆角宽度*/
 /*::-webkit-scrollbar-track-piece {
-	background-color: #efefef;
-	-webkit-border-radius: 0;
+	background-color: #efefef; 
+	-webkit-border-radius: 0; 
 }*/
 /*滚动条的宽度,滚动条的高度*/
 /*::-webkit-scrollbar {
-	width: 14px;
-	height: 14px;
+	width: 14px; 
+	height: 14px; 
 }*/
 /*垂直滚动条的样式*/
-/*::-webkit-scrollbar-thumb:vertical {
+/*::-webkit-scrollbar-thumb:vertical { 
 	height: 50px;
 	background-color: #e9ecef;
 	-webkit-border-radius: 0;
@@ -105,7 +105,7 @@ input.nospin[type="number"]{-moz-appearance:textfield;}
 	border: 1px solid #ced4da;
 }*/
 /*滚动条的hover样式*/
-/*::-webkit-scrollbar-thumb:hover {
+/*::-webkit-scrollbar-thumb:hover { 
 	height: 50px;
 	background-color: #ced4da;
 	-webkit-border-radius: 0;
@@ -672,7 +672,7 @@ input.nospin[type="number"]{-moz-appearance:textfield;}
   font-size: 14px
 }
 .bd-toc {
-
+  
     position: sticky;
     top:3rem;
     height: calc(100vh - 10rem);
@@ -827,7 +827,7 @@ body{
   line-height: 30px;
 }
 .panel-title > .title-main .btn.pull-right {
-    margin: 5px 0 0 0
+    margin: 5px 0 0 0 
 }
 .panel-content{
   padding-top:35px;
@@ -1048,6 +1048,6 @@ a.maintain-icon .fa{
     }
 }
 
-a.maintain-icon:hover .fa{
+a.maintain-icon:hover .fa{ 
     animation-iteration-count:0
-}
+}

+ 101 - 3
app/public/js/ledger.js

@@ -428,9 +428,6 @@ $(document).ready(function() {
          * @param {Object} e
          * @param {Object} info
          */
-        _setExpr: function (field, text, data) {
-
-        },
         editEnded: function (e, info) {
             if (info.sheet.zh_setting) {
                 const col = info.sheet.zh_setting.cols[info.col];
@@ -1365,6 +1362,44 @@ $(document).ready(function() {
     }
     //绑定计量单元编辑事件
     const posOperationObj = {
+        /**
+         * 刷新顶部按钮是否可用
+         * @param sheet
+         * @param selections
+         */
+        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));
+        },
         editStarting: function (e, info) {
             posOperationObj.ledgerTreeNode = SpreadJsObj.getSelectObject(ledgerSpread.getActiveSheet());
         },
@@ -1399,6 +1434,65 @@ $(document).ready(function() {
                 SpreadJsObj.loadSheetData(posSpread.getActiveSheet(), 'data', []);
             }
             posOperationObj.loadExprToInput();
+            posOperationObj.refreshOperationValid(posSpread.getActiveSheet());
+        },
+        baseOpr: function (sheet, type) {
+            const data = {
+                updateType: type === 'delete' ? type : 'update',
+                updateData: [],
+            };
+            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) {
+                        data.updateData.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.updateData.push({id: posData.id, lid: posData.lid, porder: sheet.zh_data[iRow + row - 1].porder});
+                        preUpdate.porder = posData.porder;
+                    }
+                }
+                data.updateData.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.updateData.push({id: posData.id, lid: posData.lid, porder: sheet.zh_data[iRow + row + 1].porder});
+                        nextUpdate.porder = posData.porder;
+                    }
+                }
+                data.updateData.push(nextUpdate);
+
+            }
+            if (data.updateData.length > 0) {
+                postData('/tender/' + getTenderId() + '/pos/update', data, function (result) {
+                    if (type === 'delete') {
+                        pos.removeDatas(result.pos);
+                        sheet.deleteRows(row, count);
+                        const loadResult = ledgerTree.loadPostData(result.ledger);
+                        treeOperationObj.refreshTree(ledgerSpread.getActiveSheet(), loadResult);
+                        treeOperationObj.refreshOperationValid(ledgerSpread.getActiveSheet());
+                    } 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)]);
+                        }
+                        posOperationObj.loadCurPosData();
+                    }
+                });
+            }
         },
         /**
          * 编辑单元格响应事件
@@ -1653,6 +1747,7 @@ $(document).ready(function() {
         },
         selectionChanged: function (e, info) {
             posOperationObj.loadExprToInput();
+            posOperationObj.refreshOperationValid(posSpread.getActiveSheet());
         },
         addPegs: function (pegs) {
             if (!pegs || pegs.length <= 0) return;
@@ -1673,6 +1768,9 @@ $(document).ready(function() {
     };
     posSpread.bind(spreadNS.Events.SelectionChanged, posOperationObj.selectionChanged);
     if (!posSpreadSetting.readOnly) {
+        $('a[name="pos-opr"]').click(function () {
+            posOperationObj.baseOpr(posSpread.getActiveSheet(), this.getAttribute('type'));
+        });
         $('#pos-expr').bind('change mouseleave', function () {
             if (document.activeElement.id !== "pos-expr") return;
 

+ 115 - 14
app/public/js/revise.js

@@ -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;

+ 15 - 9
app/view/ledger/explode.ejs

@@ -21,15 +21,15 @@
                     </div>
                 </div>
                 <div class="d-inline-block">
-                    <a href="javascript:void(0)" id="insert" class="btn btn-sm" data-toggle="tooltip" data-placement="bottom" title="" data-original-title="新增"><i class="fa fa-plus" aria-hidden="true"></i></a>
-                    <a href="javascript:void(0)" id="delete" class="btn btn-sm" data-toggle="tooltip" data-placement="bottom" title="" data-original-title="删除"><i class="fa fa-remove" aria-hidden="true"></i></a>
-                    <a href="javascript:void(0)" id="up-level" class="btn btn-sm" data-toggle="tooltip" data-placement="bottom" title="" data-original-title="升级"><i class="fa fa-arrow-left" aria-hidden="true"></i></a>
-                    <a href="javascript:void(0)" id="down-level" class="btn btn-sm" data-toggle="tooltip" data-placement="bottom" title="" data-original-title="降级"><i class="fa fa-arrow-right" aria-hidden="true"></i></a>
-                    <a href="javascript:void(0)" id="down-move" class="btn btn-sm" data-toggle="tooltip" data-placement="bottom" title="" data-original-title="下移"><i class="fa fa-arrow-down" aria-hidden="true"></i></a>
-                    <a href="javascript:void(0)" id="up-move" class="btn btn-sm" data-toggle="tooltip" data-placement="bottom" title="" data-original-title="上移"><i class="fa fa-arrow-up" aria-hidden="true"></i></a>
-                    <a href="javascript:void(0)" id="copy" class="btn btn-sm" data-toggle="tooltip" data-placement="bottom" title="" data-original-title="复制"><i class="fa fa-files-o" aria-hidden="true"></i></a>
-                    <a href="javascript:void(0)" id="cut" class="btn btn-sm" data-toggle="tooltip" data-placement="bottom" title="" data-original-title="剪切"><i class="fa fa-scissors" aria-hidden="true"></i></a>
-                    <a href="javascript:void(0)" id="paste" class="btn btn-sm" data-toggle="tooltip" data-placement="bottom" title="" data-original-title="粘贴"><i class="fa fa-clipboard" aria-hidden="true"></i></a>
+                    <a href="javascript:void(0)" id="insert" class="btn btn-sm btn-light text-primary" data-toggle="tooltip" data-placement="bottom" title="" data-original-title="新增"><i class="fa fa-plus" aria-hidden="true"></i></a>
+                    <a href="javascript:void(0)" id="delete" class="btn btn-sm btn-light text-primary" data-toggle="tooltip" data-placement="bottom" title="" data-original-title="删除"><i class="fa fa-remove" aria-hidden="true"></i></a>
+                    <a href="javascript:void(0)" id="up-level" class="btn btn-sm btn-light text-primary" data-toggle="tooltip" data-placement="bottom" title="" data-original-title="升级"><i class="fa fa-arrow-left" aria-hidden="true"></i></a>
+                    <a href="javascript:void(0)" id="down-level" class="btn btn-sm btn-light text-primary" data-toggle="tooltip" data-placement="bottom" title="" data-original-title="降级"><i class="fa fa-arrow-right" aria-hidden="true"></i></a>
+                    <a href="javascript:void(0)" id="down-move" class="btn btn-sm btn-light text-primary" data-toggle="tooltip" data-placement="bottom" title="" data-original-title="下移"><i class="fa fa-arrow-down" aria-hidden="true"></i></a>
+                    <a href="javascript:void(0)" id="up-move" class="btn btn-sm btn-light text-primary" data-toggle="tooltip" data-placement="bottom" title="" data-original-title="上移"><i class="fa fa-arrow-up" aria-hidden="true"></i></a>
+                    <a href="javascript:void(0)" id="copy" class="btn btn-sm btn-light text-primary" data-toggle="tooltip" data-placement="bottom" title="" data-original-title="复制"><i class="fa fa-files-o" aria-hidden="true"></i></a>
+                    <a href="javascript:void(0)" id="cut" class="btn btn-sm btn-light text-primary" data-toggle="tooltip" data-placement="bottom" title="" data-original-title="剪切"><i class="fa fa-scissors" aria-hidden="true"></i></a>
+                    <a href="javascript:void(0)" id="paste" class="btn btn-sm btn-light text-primary" data-toggle="tooltip" data-placement="bottom" title="" data-original-title="粘贴"><i class="fa fa-clipboard" aria-hidden="true"></i></a>
                 </div>
                 <div class="d-inline-block">
                     <div class="input-group input-group-sm ml-2">
@@ -78,6 +78,12 @@
                             <li class="nav-item">
                                 <a class="nav-link active" href="javascript:void(0)">计量单元</a>
                             </li>
+                            <li class="ml-2 nav-item">
+                                <div class="d-inline-flex">
+                                    <a href="javascript: void(0);" name="pos-opr" type="down-move" class="btn btn-sm btn-light text-primary" data-toggle="tooltip" data-placement="bottom" title="" data-original-title="下移"><i class="fa fa-arrow-down" aria-hidden="true"></i></a>
+                                    <a href="javascript: void(0);" name="pos-opr" type="up-move" class="btn btn-sm btn-light text-primary" data-toggle="tooltip" data-placement="bottom" title="" data-original-title="上移"><i class="fa fa-arrow-up" aria-hidden="true"></i></a>
+                                </div>
+                            </li>
                             <li class="nav-item" id="pos-search">
                             </li>
                             <li class="nav-item">

+ 15 - 9
app/view/revise/info.ejs

@@ -23,15 +23,15 @@
                     </div>
                 </div>
                 <div class="d-inline-block">
-                    <a href="javascript: void(0);" name="base-opr" type="add" class="btn btn-sm" data-toggle="tooltip" data-placement="bottom" title="" data-original-title="新增"><i class="fa fa-plus" aria-hidden="true"></i></a>
-                    <a href="javascript: void(0);" name="base-opr" type="delete" class="btn btn-sm" data-toggle="tooltip" data-placement="bottom" title="" data-original-title="删除"><i class="fa fa-remove" aria-hidden="true"></i></a>
-                    <a href="javascript: void(0);" name="base-opr" type="up-level" class="btn btn-sm" data-toggle="tooltip" data-placement="bottom" title="" data-original-title="升级"><i class="fa fa-arrow-left" aria-hidden="true"></i></a>
-                    <a href="javascript: void(0);" name="base-opr" type="down-level" class="btn btn-sm" data-toggle="tooltip" data-placement="bottom" title="" data-original-title="降级"><i class="fa fa-arrow-right" aria-hidden="true"></i></a>
-                    <a href="javascript: void(0);" name="base-opr" type="down-move" class="btn btn-sm" data-toggle="tooltip" data-placement="bottom" title="" data-original-title="下移"><i class="fa fa-arrow-down" aria-hidden="true"></i></a>
-                    <a href="javascript: void(0);" name="base-opr" type="up-move" class="btn btn-sm" data-toggle="tooltip" data-placement="bottom" title="" data-original-title="上移"><i class="fa fa-arrow-up" aria-hidden="true"></i></a>
-                    <a href="javascript: void(0);" name="cpc" type="copy" class="btn btn-sm" data-toggle="tooltip" data-placement="bottom" title="" data-original-title="复制"><i class="fa fa-files-o" aria-hidden="true"></i></a>
-                    <a href="javascript: void(0);" name="cpc" type="cut" class="btn btn-sm" data-toggle="tooltip" data-placement="bottom" title="" data-original-title="剪切"><i class="fa fa-scissors" aria-hidden="true"></i></a>
-                    <a href="javascript: void(0);" name="cpc" type="paste" class="btn btn-sm" data-toggle="tooltip" data-placement="bottom" title="" data-original-title="粘贴"><i class="fa fa-clipboard" aria-hidden="true"></i></a>
+                    <a href="javascript: void(0);" name="base-opr" type="add" class="btn btn-sm btn-light text-primary" data-toggle="tooltip" data-placement="bottom" title="" data-original-title="新增"><i class="fa fa-plus" aria-hidden="true"></i></a>
+                    <a href="javascript: void(0);" name="base-opr" type="delete" class="btn btn-sm btn-light text-primary" data-toggle="tooltip" data-placement="bottom" title="" data-original-title="删除"><i class="fa fa-remove" aria-hidden="true"></i></a>
+                    <a href="javascript: void(0);" name="base-opr" type="up-level" class="btn btn-sm btn-light text-primary" data-toggle="tooltip" data-placement="bottom" title="" data-original-title="升级"><i class="fa fa-arrow-left" aria-hidden="true"></i></a>
+                    <a href="javascript: void(0);" name="base-opr" type="down-level" class="btn btn-sm btn-light text-primary" data-toggle="tooltip" data-placement="bottom" title="" data-original-title="降级"><i class="fa fa-arrow-right" aria-hidden="true"></i></a>
+                    <a href="javascript: void(0);" name="base-opr" type="down-move" class="btn btn-sm btn-light text-primary" data-toggle="tooltip" data-placement="bottom" title="" data-original-title="下移"><i class="fa fa-arrow-down" aria-hidden="true"></i></a>
+                    <a href="javascript: void(0);" name="base-opr" type="up-move" class="btn btn-sm btn-light text-primary" data-toggle="tooltip" data-placement="bottom" title="" data-original-title="上移"><i class="fa fa-arrow-up" aria-hidden="true"></i></a>
+                    <a href="javascript: void(0);" name="cpc" type="copy" class="btn btn-sm btn-light text-primary" data-toggle="tooltip" data-placement="bottom" title="" data-original-title="复制"><i class="fa fa-files-o" aria-hidden="true"></i></a>
+                    <a href="javascript: void(0);" name="cpc" type="cut" class="btn btn-sm btn-light text-primary" data-toggle="tooltip" data-placement="bottom" title="" data-original-title="剪切"><i class="fa fa-scissors" aria-hidden="true"></i></a>
+                    <a href="javascript: void(0);" name="cpc" type="paste" class="btn btn-sm btn-light text-primary" data-toggle="tooltip" data-placement="bottom" title="" data-original-title="粘贴"><i class="fa fa-clipboard" aria-hidden="true"></i></a>
                 </div>
                 <div class="d-inline-block">
                     <div class="input-group input-group-sm ml-2">
@@ -83,6 +83,12 @@
                             <li class="nav-item">
                                 <a class="nav-link active" href="javascript:void(0)">计量单元</a>
                             </li>
+                            <li class="ml-2 nav-item">
+                                <div class="d-inline-flex">
+                                    <a href="javascript: void(0);" name="pos-opr" type="down-move" class="btn btn-sm btn-light text-primary" data-toggle="tooltip" data-placement="bottom" title="" data-original-title="下移"><i class="fa fa-arrow-down" aria-hidden="true"></i></a>
+                                    <a href="javascript: void(0);" name="pos-opr" type="up-move" class="btn btn-sm btn-light text-primary" data-toggle="tooltip" data-placement="bottom" title="" data-original-title="上移"><i class="fa fa-arrow-up" aria-hidden="true"></i></a>
+                                </div>
+                            </li>
                             <li class="nav-item" id="pos-search">
                             </li>
                             <li class="nav-item">

+ 4 - 4
app/view/stage/pay.ejs

@@ -5,10 +5,10 @@
             <% include ./stage_sub_mini_menu.ejs %>
             <div>
                 <div class="d-inline-block">
-                    <a href="javascript: void(0);" id="add" class="btn btn-sm" data-toggle="tooltip" data-placement="bottom" title="" data-original-title="新增"><i class="fa fa-plus" aria-hidden="true"></i></a>
-                    <a href="javascript: void(0);" id="del" class="btn btn-sm" data-toggle="tooltip" data-placement="bottom" title="" data-original-title="删除"><i class="fa fa-remove" aria-hidden="true"></i></a>
-                    <a href="javascript: void(0);" id="down-move" class="btn btn-sm" data-toggle="tooltip" data-placement="bottom" title="" data-original-title="下移"><i class="fa fa-arrow-down" aria-hidden="true"></i></a>
-                    <a href="javascript: void(0);" id="up-move" class="btn btn-sm" data-toggle="tooltip" data-placement="bottom" title="" data-original-title="上移"><i class="fa fa-arrow-up" aria-hidden="true"></i></a>
+                    <a href="javascript: void(0);" id="add" class="btn btn-sm btn-light text-primary" data-toggle="tooltip" data-placement="bottom" title="" data-original-title="新增"><i class="fa fa-plus" aria-hidden="true"></i></a>
+                    <a href="javascript: void(0);" id="del" class="btn btn-sm btn-light text-primary" data-toggle="tooltip" data-placement="bottom" title="" data-original-title="删除"><i class="fa fa-remove" aria-hidden="true"></i></a>
+                    <a href="javascript: void(0);" id="down-move" class="btn btn-sm btn-light text-primary" data-toggle="tooltip" data-placement="bottom" title="" data-original-title="下移"><i class="fa fa-arrow-down" aria-hidden="true"></i></a>
+                    <a href="javascript: void(0);" id="up-move" class="btn btn-sm btn-light text-primary" data-toggle="tooltip" data-placement="bottom" title="" data-original-title="上移"><i class="fa fa-arrow-up" aria-hidden="true"></i></a>
                 </div>
                 <div class="d-inline-block">
                     <div class="input-group input-group-sm ml-2">