Browse Source

修改密码设置显示层级关系

laiguoran 4 years ago
parent
commit
f2fdca3568
1 changed files with 74 additions and 16 deletions
  1. 74 16
      app/public/js/shenpi.js

+ 74 - 16
app/public/js/shenpi.js

@@ -9,6 +9,7 @@
  */
  */
 const tenderTree = [];
 const tenderTree = [];
 let parentId = 0;
 let parentId = 0;
+let selects;
 // 查询方法
 // 查询方法
 function findNode (key, value, arr) {
 function findNode (key, value, arr) {
     for (const a of arr) {
     for (const a of arr) {
@@ -603,19 +604,20 @@ $(document).ready(function () {
         getValue: {
         getValue: {
             pwd: function (data) {
             pwd: function (data) {
                 let txt = '';
                 let txt = '';
-                if (data.is_leaf) {
-                    if (data.pwd && data.pwd !== '' && data.pwd !== null) {
-                        txt = data.pwd;
-                    } else {
-                        txt = '请输入密码';
-                    }
+                // console.log(data);
+                // if (data.is_leaf) {
+                if (data.pwd && data.pwd !== '' && data.pwd !== null) {
+                    txt = data.pwd;
+                } else if(data.can_edit) {
+                    txt = '请输入密码';
                 }
                 }
+                // }
                 return txt;
                 return txt;
             }
             }
         },
         },
         readOnly: {
         readOnly: {
             pwd: function (data) {
             pwd: function (data) {
-                return !data.is_leaf;
+                return !data.can_edit;
             },
             },
         },
         },
     };
     };
@@ -642,18 +644,24 @@ $(document).ready(function () {
             }
             }
         },
         },
         setAllRightPwd: function(uid) {
         setAllRightPwd: function(uid) {
-            const selects = [];
+            selects = [];
             for (const l of ledgerTree.datas) {
             for (const l of ledgerTree.datas) {
                 const coo = _.find(ledger_cooperation_list, { 'ledger_id': l.ledger_id, 'user_id': parseInt(uid) });
                 const coo = _.find(ledger_cooperation_list, { 'ledger_id': l.ledger_id, 'user_id': parseInt(uid) });
                 if (l.pwd && !coo) {
                 if (l.pwd && !coo) {
                     delete l.pwd;
                     delete l.pwd;
+                    l.can_edit = true;
                     selects.push(l);
                     selects.push(l);
                 } else if(coo) {
                 } else if(coo) {
                     l.pwd = coo.pwd;
                     l.pwd = coo.pwd;
+                    l.can_edit = true;
+                    selects.push(l);
+                } else if (l.can_edit === false) {
+                    l.can_edit = true;
                     selects.push(l);
                     selects.push(l);
                 }
                 }
             }
             }
             if(selects.length > 0) {
             if(selects.length > 0) {
+                updateByCanEdit(ledgerTree.nodes, _.filter(ledger_cooperation_list, { user_id: parseInt(uid) }), false);
                 const refreshNode = ledgerTree.loadPostData({update: selects});
                 const refreshNode = ledgerTree.loadPostData({update: selects});
                 ledgerSpreadObj.refreshTree(ledgerSpread.getActiveSheet(), refreshNode);
                 ledgerSpreadObj.refreshTree(ledgerSpread.getActiveSheet(), refreshNode);
                 ledgerSpreadObj.setFontColor();
                 ledgerSpreadObj.setFontColor();
@@ -762,14 +770,22 @@ $(document).ready(function () {
                 };
                 };
                 postData('/tender/' + cur_tenderid + '/shenpi/audit/save', data, function (result) {
                 postData('/tender/' + cur_tenderid + '/shenpi/audit/save', data, function (result) {
                     const lcindex = _.findIndex(ledger_cooperation_list, { ledger_id: select.ledger_id, user_id });
                     const lcindex = _.findIndex(ledger_cooperation_list, { ledger_id: select.ledger_id, user_id });
+                    let flag = false;
                     if(lcindex !== -1) {
                     if(lcindex !== -1) {
                         validText === '' ? ledger_cooperation_list.splice(lcindex, 1) : ledger_cooperation_list.splice(lcindex, 1, result);
                         validText === '' ? ledger_cooperation_list.splice(lcindex, 1) : ledger_cooperation_list.splice(lcindex, 1, result);
+                        flag = validText === '';
                     } else {
                     } else {
                         ledger_cooperation_list.push(result);
                         ledger_cooperation_list.push(result);
+                        flag = false;
                     }
                     }
                     $('#cooperation-num').text(ledger_cooperation_list.length);
                     $('#cooperation-num').text(ledger_cooperation_list.length);
                     setLeftTable(ledgerTree.datas, ledger_cooperation_list, user_id, $('#stage_audits option:selected').text());
                     setLeftTable(ledgerTree.datas, ledger_cooperation_list, user_id, $('#stage_audits option:selected').text());
-                    const refreshNode = ledgerTree.loadPostData({update: select});
+                    selects = [select];
+                    if(select) {
+                        setAllChildrenCanEdit(select, flag);
+                        setParentCanEdit(ledgerTree.nodes, select.ledger_pid, flag);
+                    }
+                    const refreshNode = ledgerTree.loadPostData({update: selects});
                     ledgerSpreadObj.refreshTree(info.sheet, refreshNode);
                     ledgerSpreadObj.refreshTree(info.sheet, refreshNode);
                     ledgerSpreadObj.setFontColor();
                     ledgerSpreadObj.setFontColor();
                 });
                 });
@@ -836,6 +852,9 @@ $(document).ready(function () {
                 const yb = _.find(accountList, { 'id': cur_uid });
                 const yb = _.find(accountList, { 'id': cur_uid });
                 setLeftTable(ledgerList, ledger_cooperation_list, cur_uid, yb.name + '(原报)');
                 setLeftTable(ledgerList, ledger_cooperation_list, cur_uid, yb.name + '(原报)');
                 // treeCalc.calculateAll(ledgerTree);
                 // treeCalc.calculateAll(ledgerTree);
+                selects = [];
+                updateByCanEdit(ledgerTree.nodes, _.filter(ledger_cooperation_list, { user_id: cur_uid }), false);
+                ledgerTree.loadPostData({update: selects});
                 console.log(ledgerTree);
                 console.log(ledgerTree);
                 SpreadJsObj.loadSheetData(ledgerSpread.getActiveSheet(), SpreadJsObj.DataType.Tree, ledgerTree);
                 SpreadJsObj.loadSheetData(ledgerSpread.getActiveSheet(), SpreadJsObj.DataType.Tree, ledgerTree);
                 ledgerSpreadObj.setFontColor();
                 ledgerSpreadObj.setFontColor();
@@ -866,7 +885,13 @@ $(document).ready(function () {
             setLeftTable(ledgerTree.datas, ledger_cooperation_list, user_id, $('#stage_audits option:selected').text());
             setLeftTable(ledgerTree.datas, ledger_cooperation_list, user_id, $('#stage_audits option:selected').text());
             const select = _.find(ledgerTree.datas, { ledger_id });
             const select = _.find(ledgerTree.datas, { ledger_id });
             delete select.pwd;
             delete select.pwd;
-            const refreshNode = ledgerTree.loadPostData({update: select});
+            // const refreshNode = ledgerTree.loadPostData({update: select});
+            selects = [select];
+            if(select) {
+                setAllChildrenCanEdit(select, true);
+                setParentCanEdit(ledgerTree.nodes, select.ledger_pid, true);
+            }
+            const refreshNode = ledgerTree.loadPostData({update: selects});
             ledgerSpreadObj.refreshTree(ledgerSpread.getActiveSheet(), refreshNode);
             ledgerSpreadObj.refreshTree(ledgerSpread.getActiveSheet(), refreshNode);
             ledgerSpreadObj.setFontColor();
             ledgerSpreadObj.setFontColor();
             $('#cooperation-num').text(ledger_cooperation_list.length);
             $('#cooperation-num').text(ledger_cooperation_list.length);
@@ -985,6 +1010,11 @@ function setRightData(datas, coolist) {
             if(l.level === 4 && l.is_leaf === false) {
             if(l.level === 4 && l.is_leaf === false) {
                 l.is_leaf = true;
                 l.is_leaf = true;
             }
             }
+            const coo = _.find(coolist, { 'ledger_id': l.ledger_id, 'user_id': cur_uid });
+            if(coo) {
+                l.pwd = coo.pwd;
+            }
+            l.can_edit = true;
             newdatas.push(l);
             newdatas.push(l);
         }
         }
     }
     }
@@ -993,15 +1023,43 @@ function setRightData(datas, coolist) {
         if (!child && !nd.is_leaf) {
         if (!child && !nd.is_leaf) {
             nd.is_leaf = true;
             nd.is_leaf = true;
         }
         }
-        if(nd.is_leaf) {
-            const coo = _.find(coolist, { 'ledger_id': nd.ledger_id, 'user_id': cur_uid });
-            if(coo) {
-                nd.pwd = coo.pwd;
-            }
-        }
     }
     }
     return newdatas;
     return newdatas;
 }
 }
+function updateByCanEdit(datas, coolist, flag) {
+    for (const coo of coolist) {
+        const ledgerInfo = _.find(datas, { 'ledger_id': coo.ledger_id });
+        if(ledgerInfo) {
+            setAllChildrenCanEdit(ledgerInfo, flag);
+            setParentCanEdit(datas, ledgerInfo.ledger_pid, flag);
+        }
+    }
+}
+function setParentCanEdit(datas, id, flag) {
+    if(id !== -1) {
+        const pl = _.find(datas, { 'ledger_id': id });
+        // 判断父节点下所有子节点有无pwd,有则为false
+        if (pl) {
+            console.log(pl.children);
+            const existfalse = _.find(pl.children, function (item) {
+                return item.can_edit === false || (item.pwd && item.pwd !== '' && item.pwd !== null);
+            });
+            console.log(existfalse, flag);
+            pl.can_edit = existfalse ? false : flag;
+            selects.push(pl);
+            setParentCanEdit(datas, pl.ledger_pid, flag);
+        }
+    }
+}
+function setAllChildrenCanEdit(ledgerInfo, flag) {
+    if (ledgerInfo.children && ledgerInfo.children.length > 0) {
+        for(const li of ledgerInfo.children) {
+            li.can_edit = flag;
+            selects.push(li);
+            setAllChildrenCanEdit(li, flag);
+        }
+    }
+}
 
 
 function setLeftTable(ledgerList, coolist, uid, title) {
 function setLeftTable(ledgerList, coolist, uid, title) {
     $('#stage_audit').text(title);
     $('#stage_audit').text(title);