From 9e90f6e2e7958310906ccb88489015bbd2bc02b8 Mon Sep 17 00:00:00 2001
From: liubp <1535785116@qq.com>
Date: 星期三, 24 十二月 2025 09:50:05 +0800
Subject: [PATCH] 权限页面完善,我的小区页面权限对接,费用明细详情页面,公共收益金编辑模态框

---
 public/pages/frame/role/role-a/role-a.js |   86 +++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 82 insertions(+), 4 deletions(-)

diff --git a/public/pages/frame/role/role-a/role-a.js b/public/pages/frame/role/role-a/role-a.js
index 2eaffbf..f0122a4 100644
--- a/public/pages/frame/role/role-a/role-a.js
+++ b/public/pages/frame/role/role-a/role-a.js
@@ -7,7 +7,11 @@
                 header: false
             },
             pgId: '', // 淇濆瓨瑙掕壊缂栫爜
-            privilegeData: [] // 淇濆瓨鏉冮檺鏁版嵁
+            privilegeData: [], // 淇濆瓨鏉冮檺鏁版嵁
+            pName: '鍏ㄩ儴', // 淇濆瓨鏉冮檺鍚嶇О锛岄粯璁や负"鍏ㄩ儴"
+            buttonPrivileges: [], // 淇濆瓨鎸夐挳鏉冮檺
+            labelPrivileges: [], // 淇濆瓨鏍囩鏉冮檺
+            dataPrivileges: [], // 淇濆瓨鏁版嵁鏉冮檺
         },
         _initMethod: function () {
             // 鑾峰彇URL鍙傛暟
@@ -15,6 +19,7 @@
             let pgId = '';
             let communityId = '';
             let type = '';
+            let pName = '鍏ㄩ儴'; // 榛樿鍊间负"鍏ㄩ儴"
             
             // 浼樺厛浠� hash 涓幏鍙栧弬鏁帮紙鍗曢〉搴旂敤浣跨敤 hash 璺敱锛�
             const hash = location.hash;
@@ -36,6 +41,8 @@
                         communityId = value;
                     } else if (key === 'type') {
                         type = value;
+                    } else if (key === 'pName') {
+                        pName = value;
                     }
                 }
             }
@@ -53,14 +60,25 @@
             if (!type) {
                 type = vc.getParam('type') || '';
             }
+            if (pName === '鍏ㄩ儴') {
+                pName = vc.getParam('pName') || '鍏ㄩ儴';
+            }
             
             // 濡傛灉缂哄皯蹇呰鍙傛暟锛屼娇鐢ㄩ粯璁ゅ�兼垨浠庡綋鍓嶇ぞ鍖鸿幏鍙�
             if (!communityId) {
                 communityId = vc.getCurrentCommunity().communityId;
             }
             
-            // 淇濆瓨 pgId 鍒� data 涓�
+            // 淇濆瓨 pgId銆乸Id 鍜� pName 鍒� data 涓�
             vc.component.pgId = pgId;
+            vc.component.pId = pId;
+            vc.component.pName = pName;
+            
+            // 鏇存柊椤甸潰鏍囬
+            const titleElement = document.querySelector('.role-a-container h3');
+            if (titleElement) {
+                titleElement.textContent = pName;
+            }
             
             // 璋冪敤鎺ュ彛
             if (pgId && communityId) {
@@ -81,6 +99,9 @@
                             // 鍒ゆ柇 json 鐨勭被鍨嬶紝濡傛灉宸茬粡鏄璞″垯鐩存帴浣跨敤锛屽惁鍒欒繘琛岃В鏋�
                             let data = typeof json === 'string' ? JSON.parse(json) : json;
                             vc.component.privilegeData = data;
+                            vc.component.buttonPrivileges = data.filter(item => item.type === '鎸夐挳');
+                            vc.component.labelPrivileges = data.filter(item => item.type === '鏍囩');
+                            vc.component.dataPrivileges = data.filter(item => item.type === '鏁版嵁');
                             vc.component.renderPrivileges(data);
                             vc.component.initCheckboxEvents();
                         } catch (e) {
@@ -106,10 +127,12 @@
             // 娓叉煋鏉冮檺澶嶉�夋
             renderPrivileges: function (data) {
                 const buttonContainer = document.getElementById('button-container');
+                const labelContainer = document.getElementById('label-container');
                 const dataContainer = document.getElementById('data-container');
                 
                 // 娓呯┖瀹瑰櫒
                 if (buttonContainer) buttonContainer.innerHTML = '';
+                if (labelContainer) labelContainer.innerHTML = '';
                 if (dataContainer) dataContainer.innerHTML = '';
                 
                 // 閬嶅巻鏁版嵁锛屾牴鎹� type 鍒涘缓瀵瑰簲鐨勫閫夋
@@ -122,6 +145,7 @@
                     
                     const label = document.createElement('label');
                     label.textContent = item.pName;
+                    label.style.paddingTop = '8px';
                     
                     const checkbox = document.createElement('input');
                     checkbox.type = 'checkbox';
@@ -129,14 +153,19 @@
                     checkbox.value = item.pId;
                     checkbox.setAttribute('data-pid', item.pId);
                     checkbox.setAttribute('data-type', item.type);
+                    checkbox.checked = true;
                     
-                    checkboxDiv.appendChild(label);
                     checkboxDiv.appendChild(checkbox);
+                    checkboxDiv.appendChild(label);
                     
                     // 鏍规嵁 type 娣诲姞鍒板搴斿鍣�
                     if (item.type === '鎸夐挳') {
                         if (buttonContainer) {
                             buttonContainer.appendChild(checkboxDiv);
+                        }
+                    } else if (item.type === '鏍囩') {
+                        if (labelContainer) {
+                            labelContainer.appendChild(checkboxDiv);
                         }
                     } else if (item.type === '鏁版嵁') {
                         if (dataContainer) {
@@ -161,8 +190,10 @@
                         });
                         // 鍚屾椂鏇存柊鎸夐挳鍜屾暟鎹尯鍩熺殑"鍏ㄩ儴"澶嶉�夋
                         const buttonAll = document.getElementById('button-all');
+                        const labelAll = document.getElementById('label-all');
                         const dataAll = document.getElementById('data-all');
                         if (buttonAll) buttonAll.checked = isChecked;
+                        if (labelAll) labelAll.checked = isChecked;
                         if (dataAll) dataAll.checked = isChecked;
                     });
                 }
@@ -181,7 +212,22 @@
                         self.updateAllCheckbox();
                     });
                 }
-                
+
+                // 鏍囩鍖哄煙鍏ㄩ儴澶嶉�夋
+                const labelAllCheckbox = document.getElementById('label-all');
+                if (labelAllCheckbox) {
+                    labelAllCheckbox.addEventListener('change', function () {
+                        const isChecked = this.checked;
+                        // 閫変腑鏍囩鍖哄煙鎵�鏈夊閫夋
+                        const labelCheckboxes = document.querySelectorAll('#label-container input[type="checkbox"][name="privilege"]');
+                        labelCheckboxes.forEach(function (cb) {
+                            cb.checked = isChecked;
+                        });
+                        // 妫�鏌ユ槸鍚﹂渶瑕佹洿鏂�"鍏ㄩ儴"澶嶉�夋
+                        self.updateAllCheckbox();
+                    });
+                }
+
                 // 鏁版嵁鍖哄煙鍏ㄩ儴澶嶉�夋
                 const dataAllCheckbox = document.getElementById('data-all');
                 if (dataAllCheckbox) {
@@ -213,6 +259,27 @@
                         self.savePrivileges();
                     });
                 }
+                
+                // 閲嶇疆鎸夐挳浜嬩欢
+                const resetButton = document.getElementById('reset');
+                if (resetButton) {
+                    resetButton.addEventListener('click', function () {
+                        // 閫変腑鎵�鏈夋潈闄愬閫夋
+                        const allCheckboxes = document.querySelectorAll('input[type="checkbox"][name="privilege"]');
+                        allCheckboxes.forEach(function (cb) {
+                            cb.checked = true;
+                        });
+                        // 閫変腑鎵�鏈�"鍏ㄩ儴"澶嶉�夋
+                        const allCheckbox = document.getElementById('all');
+                        const buttonAll = document.getElementById('button-all');
+                        const labelAll = document.getElementById('label-all');
+                        const dataAll = document.getElementById('data-all');
+                        if (allCheckbox) allCheckbox.checked = true;
+                        if (buttonAll) buttonAll.checked = true;
+                        if (labelAll) labelAll.checked = true;
+                        if (dataAll) dataAll.checked = true;
+                    });
+                }
             },
             // 鏇存柊"鍏ㄩ儴"澶嶉�夋鐘舵��
             updateAllCheckbox: function () {
@@ -237,6 +304,16 @@
                     buttonAll.checked = buttonAllChecked;
                 }
                 
+                // 鏇存柊鏍囩鍖哄煙
+                const labelCheckboxes = document.querySelectorAll('#label-container input[type="checkbox"][name="privilege"]');
+                const labelAllChecked = labelCheckboxes.length > 0 && Array.from(labelCheckboxes).every(function (cb) {
+                    return cb.checked;
+                });
+                const labelAll = document.getElementById('label-all');
+                if (labelAll) {
+                    labelAll.checked = labelAllChecked;
+                }
+
                 // 鏇存柊鏁版嵁鍖哄煙
                 const dataCheckboxes = document.querySelectorAll('#data-container input[type="checkbox"][name="privilege"]');
                 const dataAllChecked = dataCheckboxes.length > 0 && Array.from(dataCheckboxes).every(function (cb) {
@@ -263,6 +340,7 @@
                 
                 const requestData = {
                     pgId: vc.component.pgId,
+                    parentId: vc.component.pId,
                     pIds: pIds
                 };
                 

--
Gitblit v1.8.0