소스 검색

fix: 报表树,操作时继承UUID,如果没有UUID的,就生成UUID

lishihao 1 개월 전
부모
커밋
054d87dbaa
2개의 변경된 파일47개의 추가작업 그리고 20개의 파일을 삭제
  1. 24 17
      modules/all_models/tpl_tree_node.js
  2. 23 3
      web/maintain/report/js/rpt_tpl_main.js

+ 24 - 17
modules/all_models/tpl_tree_node.js

@@ -19,27 +19,34 @@ let Schema = mongoose.Schema;
 // });
 
 let TplNodeSchema = new Schema({
-    nodeType: Number,   //节点类型:树节点(枝) 或 模板节点(叶), 统一结构
-    ID: Number,         //template节点ID,只有在nodeType是模板节点有效
-    refId: Number,      //引用报表模板id (引用 collection: rpt_templates)
-    name: String,       //显示名称
-    released: Boolean,  //是否已发布
-    items: []           //子节点
+  nodeType: Number, //节点类型:树节点(枝) 或 模板节点(叶), 统一结构
+  ID: Number, //template节点ID,只有在nodeType是模板节点有效
+  refId: Number, //引用报表模板id (引用 collection: rpt_templates)
+  name: String, //显示名称
+  released: Boolean, //是否已发布
+  items: [], //子节点
 });
 
 let RptTplTreeSchema = new Schema({
-    compilationId: String,      //编办的ObjectId
-    // engineerId: Number,         //工程专业Id(参考 /modules/common/const/engineering.js)
-    userId: String,             //用户名的object_id串
-    properties: [],             //这是一个预留的属性,假定未来还会有不同的划分细节(如:招标/投标/清单 ... etc)
-    name: String,               //显示名称
-    released: Boolean,          //是否已发布
-    isDeleted: Boolean,         //删除标记
-    flags: Schema.Types.Mixed,  //额外标记集合(这些标记可能会影响到前端显示,如‘计税方式’等)
-    items: []                   //TplNodeSchema entity
+  compilationId: String, //编办的ObjectId
+  // engineerId: Number,         //工程专业Id(参考 /modules/common/const/engineering.js)
+  userId: String, //用户名的object_id串
+  properties: [], //这是一个预留的属性,假定未来还会有不同的划分细节(如:招标/投标/清单 ... etc)
+  name: String, //显示名称
+  released: Boolean, //是否已发布
+  isDeleted: Boolean, //删除标记
+  flags: Schema.Types.Mixed, //额外标记集合(这些标记可能会影响到前端显示,如‘计税方式’等)
+  UUID: String,
+  items: [], //TplNodeSchema entity
 });
-RptTplTreeSchema.statics.findAndModify = function (query, sort, doc, options, callback) {
-    return this.collection.findAndModify(query, sort, doc, options, callback);
+RptTplTreeSchema.statics.findAndModify = function (
+  query,
+  sort,
+  doc,
+  options,
+  callback
+) {
+  return this.collection.findAndModify(query, sort, doc, options, callback);
 };
 
 mongoose.model("rpt_tpl_tree", RptTplTreeSchema, "rpt_tpl_tree");

+ 23 - 3
web/maintain/report/js/rpt_tpl_main.js

@@ -26,7 +26,6 @@ const valuationSelectorMap = {
   valuationSelector_changeBudget: "变更预算",
   valuationSelector_settlement: "结算",
 };
-
 let rptTplObj = {
   iniPage: function () {
     zTreeOprObj.getCompilationList();
@@ -190,6 +189,7 @@ let zTreeOprObj = {
         isDeleted: topNode.isDeleted,
         items: me.private_build_items(topNode.items, excludeNode),
         name: topNode.name,
+        UUID: topNode.UUID,
       };
     }
     return rst;
@@ -209,6 +209,7 @@ let zTreeOprObj = {
         released: isReleased,
         items: me.private_build_items(subNode.items, null),
         name: subNode.name,
+        UUID: subNode.UUID,
       };
       if (subNode.hasOwnProperty("flags")) {
         rst.flags = subNode.flags;
@@ -217,6 +218,17 @@ let zTreeOprObj = {
     return rst;
   },
 
+  generateRandomString() {
+    const charset =
+      "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
+    let randomString = "";
+    for (let i = 0; i < 10; i++) {
+      const randomIndex = Math.floor(Math.random() * charset.length);
+      randomString += charset[randomIndex];
+    }
+    return randomString;
+  },
+
   private_build_items: function (items, excludeNode) {
     let me = this,
       itemRst = null;
@@ -234,11 +246,14 @@ let zTreeOprObj = {
           ir.name = item.name;
           ir.ID = item.ID;
           ir.released = isReleased;
+          ir.UUID =
+            item.UUID ||
+            `${new Date().getTime()}_${this.generateRandomString()}`;
           if (item.hasOwnProperty("flags")) {
             ir.flags = item.flags;
           }
           // 同类表(associateRefIds)处理
-          if (item.hasOwnProperty('associateRefIds')) {
+          if (item.hasOwnProperty("associateRefIds")) {
             ir.associateRefIds = item.associateRefIds;
           }
           ir.items = me.private_build_items(item.items);
@@ -253,7 +268,12 @@ let zTreeOprObj = {
     let me = zTreeOprObj,
       sObj = $("#" + treeNode.tId + IDMark_Span);
 
-    if (treeNode.editNameFlag || $("#addBtn_" + treeNode.tId).length > 0 || treeNode.nodeType === RT.NodeType.TEMPLATE) return;
+    if (
+      treeNode.editNameFlag ||
+      $("#addBtn_" + treeNode.tId).length > 0 ||
+      treeNode.nodeType === RT.NodeType.TEMPLATE
+    )
+      return;
     if (treeNode.level === 0) {
       let addStr =
         "<span class='button star' id='addBtn_" +