Browse Source

feat: 清单精灵,删除定额

vian 3 years ago
parent
commit
e3811a1e2b

+ 24 - 0
public/web/id_tree.js

@@ -866,6 +866,30 @@ var idTree = {
             return datas;
         };
 
+        Tree.prototype.getExpState = function (nodes) {
+            let sessionExpanded = [];
+            function getStat(items){
+                for(let item of items){
+                    sessionExpanded.push(item.expanded ? 1 : 0);
+                }
+            }
+            getStat(nodes);
+            let expState = sessionExpanded.join('');
+            return expState;
+        };
+
+        //节点根据展开收起列表'010101'展开收起
+        Tree.prototype.setExpandedByState = function (nodes, expState) {
+            let expStateArr = expState.split('');
+            for(let i = 0; i < nodes.length; i++){
+                let expanded = expStateArr[i] == 1 ? true : false;
+                if(nodes[i].expanded === expanded){
+                    continue;
+                }
+                nodes[i].setExpanded(expanded);
+            }
+        };
+
         // 检查树结构数据有没问题
         Tree.prototype.check = function (roots) {
             return isValid(roots);

+ 19 - 0
web/maintain/billsGuidance_lib/html/zhiyin.html

@@ -132,6 +132,25 @@
             </div>
         </div>
     </div>
+    <div class="modal fade" id="delRationAlert" data-backdrop="static" style="display: none;" aria-hidden="true">
+        <div class="modal-dialog" role="document">
+            <div class="modal-content">
+                <div class="modal-header">
+                    <h5 class="modal-title">警告</h5>
+                    <button type="button"  class="close" data-dismiss="modal" aria-label="Close">
+                        <span aria-hidden="true">×</span>
+                    </button>
+                </div>
+                <div class="modal-body">
+                    <h5 class="text-danger">是否删除当前节点下的所有定额?</h5>
+                </div>
+                <div class="modal-footer">
+                    <button type="button" class="btn btn-danger" id="delRationConfirm">确认</button>
+                    <button type="button" class="btn btn-secondary"  data-dismiss="modal">取消</button>
+                </div>
+            </div>
+        </div>
+    </div>
     <!-- JS. -->
     <script src="/lib/jquery/jquery.min.js"></script>
     <script src="/lib/tether/tether.min.js"></script>

+ 58 - 3
web/maintain/billsGuidance_lib/js/billsGuidance.js

@@ -977,14 +977,53 @@ const billsGuidance = (function () {
             $.bootstrapLoading.end();
         });
     }
+
+    // 删除定额(嵌套删除自身及后代定额)
+    function delRations() {
+        const selected = bills.tree.selected.guidance.tree.selected;
+        if (!selected) {
+            return;
+        }
+        if (selected.data.type === itemType.ration) {
+            del({ row: selected.serialNo(), col: 0, rowCount: 1, colCount: 1  });
+            return;
+        }
+        const rations = selected.getPosterity().filter(item => item.data.type === itemType.ration);
+        if (!rations.length) {
+            return;
+        }
+        const updateDatas = rations.map(item => ({ updateType: updateType.del, findData: { ID: item.data.ID } }));
+        const rationIDs = rations.map(r => r.data.ID);
+        $.bootstrapLoading.start();
+        updateGuideItems(updateDatas, function () {
+            const guideSheet = guideItem.workBook.getSheet(0);
+            const treeNodes = bills.tree.selected.guidance.tree.items.filter(item => !rationIDs.includes(item.data.ID));
+            const state = bills.tree.selected.guidance.tree.getExpState(treeNodes);
+            const treeData = treeNodes.map(item => item.data);
+            initTree(bills.tree.selected.guidance, guideSheet, guideItem.treeSetting, treeData);
+            bills.tree.selected.guidance.tree.setExpandedByState(bills.tree.selected.guidance.tree.items, state);
+            renderSheetFunc(guideSheet, function () {
+                TREE_SHEET_HELPER.refreshNodesVisible(bills.tree.selected.guidance.tree.roots, guideSheet, true);
+            });
+            //设置底色
+            setNodesColor(guideSheet, bills.tree.selected.guidance.tree.items);
+            //项目指引初始焦点
+            guideItemInitSel(guideSheet.getActiveRowIndex() ? guideSheet.getActiveRowIndex() : 0);
+            $.bootstrapLoading.end();
+            guideItem.workBook.focus(true)
+        });
+
+
+    }
+
     //项目指引删除操作
     //@return {void}
-    function del(){
+    function del(selArea = null){
         $.bootstrapLoading.start();
         let controller = bills.tree.selected.guidance.controller;
         let selNodes = [];
         let sheet = guideItem.workBook.getSheet(0);
-        let sel = sheet.getSelections()[0];
+        let sel = selArea ? selArea : sheet.getSelections()[0];
         if(sel){
             sel.row =  sel.row === -1 ? 0 : sel.row;
             for(let i = 0; i < sel.rowCount; i++){
@@ -1016,6 +1055,7 @@ const billsGuidance = (function () {
             }
         }
         updateGuideItems(updateDatas, function () {
+            console.log(blockNodes);
             controller.m_delete(blockNodes);
             guideItemInitSel(sheet.getActiveRowIndex());
             refreshBtn(bills.tree.selected.guidance.tree.selected);
@@ -1400,13 +1440,24 @@ const billsGuidance = (function () {
                                     let pasteNode = bills.tree.selected.guidance.tree.items[target.row];
                                     pasteBlock(pasteNode);
                                 }},
+                            "delRations": {
+                                name: '删除定额',
+                                disabled: function () {
+                                    let node = bills.tree.selected.guidance.tree.items[target.row];
+                                    return locked || !node
+                                },
+                                icon: "fa-remove",
+                                callback: function (key, opt) {
+                                    $('#delRationAlert').modal('show');
+                                }
+                            },
                             "del": {
                                 name: '删除',
                                 disabled: function () {
                                     let node = bills.tree.selected.guidance.tree.items[target.row];
                                     return locked || !node
                                 },
-                                icon: "fa-arrow-left",
+                                icon: "fa-remove",
                                 callback: function (key, opt) {
                                     $('#delAlert').modal('show');
                                 }
@@ -1452,6 +1503,10 @@ const billsGuidance = (function () {
             del();
             $('#delAlert').modal('hide');
         });
+        $('#delRationConfirm').click(function () {
+            delRations();
+            $('#delRationAlert').modal('hide');
+        });
         $('#del').click(function () {
             $('#delAlert').modal('show');
         });