Procházet zdrojové kódy

feat: 公路建筑后台,清单规则库,插入行时,可输入行数。方便批量插入几百行。

zhangweicheng před 3 měsíci
rodič
revize
691ebc8dfd

Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 4004 - 3132
modules/bills_lib/models/bills_lib_interfaces.js


+ 24 - 2
web/maintain/bills_lib/html/qingdan.html

@@ -48,6 +48,9 @@
                               <a class="nav-link text-primary lock-btn-control" doing="false" fcsOnBills="true" id="insert" href="javascript: void(0);"><i class="fa fa-share" aria-hidden="true"></i>插入</a>
                           </li>
                           <li class="nav-item">
+                            <input class="lock-btn-control" style="width: 50px; height: 24px;margin-top:5px" id="insert_row" type="text" value="1" type="number" min="1"  step="1" />
+                         </li>
+                          <li class="nav-item">
                               <a class="nav-link text-primary lock-btn-control" doing="false" fcsOnBills="true" id ="delete" href="javascript:void (0)"><i class="fa fa-remove" aria-hidden="true"></i>删除</a>
                           </li>
                           <li class="nav-item">
@@ -425,12 +428,31 @@
         let btnUpMove = $('#upMove');
         let btnDownMove = $('#downMove');
         dbController.editData(controller);
-        btnInsert.click(function(){
+
+        function onInsert(){
             if(btnInsert.attr('doing') === 'false' && btnInsert.attr('fcsOnBills') === 'true'){
-                dbController.insert(controller, btnInsert);
+                let btnInsertRow = $('#insert_row').val();
+                if (isNaN(btnInsertRow) || btnInsertRow < 1) {
+                    alert(`请输入正确的行数。`);
+                    $('#insert_row').val('1');
+                    return;
+                }
+                btnInsertRow = parseInt(btnInsertRow) ;
+                dbController.insert(controller, btnInsert,btnInsertRow);
                 tools.clearData(jobsSpread.getActiveSheet());
                 tools.clearData(itemsSpread.getActiveSheet());
             }
+        }
+
+        btnInsert.click(function(){
+            onInsert()
+        });
+
+        $('#insert_row').on('keypress', function(e) {
+            // 检查是否按下的是 Enter 键(keyCode 13 或 which 13)
+            if (e.which === 13 || e.keyCode === 13) {
+                onInsert()
+            }
         });
         //删除清单
         $('#delConfirm').click(function () {

Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 924 - 634
web/maintain/bills_lib/scripts/bills_lib_ajax.js


+ 82 - 101
web/maintain/bills_lib/scripts/db_controller.js

@@ -1,116 +1,97 @@
 /**
  * Created by vian on 2017/4/12.
  */
+
+function getNewBIlls(controller, rowCount, billsLibId) {
+  let ParentID = -1;
+  let NextSiblingID = -1;
+  let sectionInfo = { first: null, second: null, third: null };
+  let updatePreData = null;
+  let insertBills = [];
+  if (controller.tree.items.length !== 0) {
+    let node = controller.tree.selected;
+    if (node) {
+      ParentID = node.getParentID();
+      sectionInfo = tools.getSectionInfo(node);
+      NextSiblingID = node.getNextSiblingID();
+      updatePreData = { ID: node.getID() };
+    } else {
+      let updateNode = controller.tree.roots[controller.tree.roots.length - 1];
+      updatePreData = { ID: updateNode.getID() };
+    }
+  } else {
+    controller.tree.maxNodeID(0);
+  }
+  for (let i = 0; i < rowCount; i++) {
+    let tem = {
+      ID: uuid.v1(),
+      ParentID,
+      NextSiblingID: -1,
+      sectionInfo,
+      billsLibId,
+    };
+    if (i === rowCount - 1) {
+      tem.NextSiblingID = NextSiblingID;
+    } else if (i !== 0) {
+      insertBills[i - 1].NextSiblingID = tem.ID;
+    }
+
+    if (i === 0 && updatePreData) {
+      updatePreData.NextSiblingID = tem.ID;
+    }
+    insertBills.push(tem);
+  }
+
+  insertBills = insertBills.reverse();
+  return { insertBills, updatePreData };
+}
+
 var dbController = {
   controller: null,
   currentEditData: null,
-  insert: function (controller, btn) {
+  insert: function (controller, btn, rowCount) {
     tools.btnClose(btn);
     btn.attr("doing", "true");
-    if (controller.tree.items.length === 0) {
-      controller.tree.maxNodeID(0);
-      let newNodeId = uuid.v1();
-      let sectionInfo = { first: null, second: null, third: null };
-      billsAjax.createBills(
-        userAccount,
-        billsLibId,
-        newNodeId,
-        -1,
-        -1,
-        null,
-        sectionInfo,
-        function () {
-          controller.insertByID(newNodeId);
-          controller.tree.selected.jobs = new Array();
-          controller.tree.selected.items = new Array();
-          controller.sheet.setTag(
-            controller.tree.selected.serialNo(),
-            0,
-            newNodeId
-          );
-          sheetBillsDatas = tools.getsheetDatas(
-            controller.sheet,
-            "bills",
-            controller
-          );
-          tools.btnAction(btn);
-          btn.attr("doing", "false");
-          controller.sheet.getParent().focus(true);
-        }
-      );
-    } else {
-      let node = controller.tree.selected;
-      if (node) {
-        var updateId = node.getID(),
-          createpid = node.getParentID(),
-          createnid = node.getNextSiblingID();
-        let newNodeId = uuid.v1();
-        let updatePreData = { ID: updateId, NextSiblingID: newNodeId };
-        let sectionInfo = tools.getSectionInfo(node);
-        billsAjax.createBills(
-          userAccount,
-          billsLibId,
-          newNodeId,
-          createpid,
-          createnid,
-          updatePreData,
-          sectionInfo,
-          function () {
-            controller.insertByID(newNodeId);
-            controller.tree.selected.jobs = new Array();
-            controller.tree.selected.items = new Array();
-            controller.sheet.setTag(
-              controller.tree.selected.serialNo(),
-              0,
-              newNodeId
-            );
-            sheetBillsDatas = tools.getsheetDatas(
-              controller.sheet,
-              "bills",
-              controller
-            );
-            tools.btnAction(btn);
-            btn.attr("doing", "false");
-            controller.sheet.getParent().focus(true);
+    let { insertBills, updatePreData } = getNewBIlls(
+      controller,
+      rowCount,
+      billsLibId
+    );
+    billsAjax.createBills(
+      userAccount,
+      billsLibId,
+      updatePreData,
+      insertBills,
+      function () {
+        if (updatePreData) {
+          const node = controller.tree.findNode(updatePreData.ID);
+          if (node) {
+            Object.assign(node.data, updatePreData);
           }
+        }
+
+        const treeData = insertBills.map((item) => ({
+          type: "new",
+          data: item,
+        }));
+        controller.m_insert(treeData);
+        controller.tree.selected.jobs = new Array();
+        controller.tree.selected.items = new Array();
+        controller.sheet.setTag(
+          controller.tree.selected.serialNo(),
+          0,
+          controller.tree.selected.getID()
         );
-      } else {
-        let updateNode =
-          controller.tree.roots[controller.tree.roots.length - 1];
-        let updateId = updateNode.getID();
-        //let newNodeId = controllers.tree.newNodeID();
-        let newNodeId = uuid.v1();
-        let updatePreData = { ID: updateId, NextSiblingID: newNodeId };
-        let sectionInfo = tools.getSectionInfo(node);
-        billsAjax.createBills(
-          userAccount,
-          billsLibId,
-          newNodeId,
-          -1,
-          -1,
-          updatePreData,
-          sectionInfo,
-          function () {
-            controller.insertByID(newNodeId);
-            controller.tree.selected.jobs = new Array();
-            controller.tree.selected.items = new Array();
-            controller.sheet.setTag(
-              controller.tree.selected.serialNo(),
-              0,
-              newNodeId
-            );
-            sheetBillsDatas = tools.getsheetDatas(
-              controller.sheet,
-              "bills",
-              controller
-            );
-            tools.btnAction(btn);
-            btn.attr("doing", "false");
-            controller.sheet.getParent().focus(true);
-          }
+        sheetBillsDatas = tools.getsheetDatas(
+          controller.sheet,
+          "bills",
+          controller
         );
+        tools.btnAction(btn);
+        btn.attr("doing", "false");
+        controller.sheet.getParent().focus(true);
       }
-    }
+    );
   },
 
   upLevel: function (controller, btn) {