Procházet zdrojové kódy

feat: 添加成员选择标记功能

caipin před 3 dny
rodič
revize
1520ed2db1
1 změnil soubory, kde provedl 50 přidání a 4 odebrání
  1. 50 4
      app/view/contract/modal.ejs

+ 50 - 4
app/view/contract/modal.ejs

@@ -40,7 +40,9 @@
                                         <% group.groupList.forEach(item => { %>
                                         <% group.groupList.forEach(item => { %>
                                             <dd class="border-bottom p-2 mb-0 " data-id="<%- item.id %>">
                                             <dd class="border-bottom p-2 mb-0 " data-id="<%- item.id %>">
                                                 <p class="mb-0 d-flex"><span class="text-primary"><%- item.name %></span><span
                                                 <p class="mb-0 d-flex"><span class="text-primary"><%- item.name %></span><span
-                                                            class="ml-auto"><%- item.mobile %></span></p>
+                                                            class="ml-auto"><%- item.mobile %></span>
+                                                    <span class="selected-mark text-success ml-2" style="display:none;"><i class="fa fa-check"></i></span>
+                                                </p>
                                                 <span class="text-muted"><%- item.role %></span>
                                                 <span class="text-muted"><%- item.role %></span>
                                             </dd>
                                             </dd>
                                         <% });%>
                                         <% });%>
@@ -130,12 +132,15 @@
                     accountList.filter(item => item && (item.name.indexOf(newVal) !== -1 || (item.mobile && item.mobile.indexOf(newVal) !== -1))).forEach(item => {
                     accountList.filter(item => item && (item.name.indexOf(newVal) !== -1 || (item.mobile && item.mobile.indexOf(newVal) !== -1))).forEach(item => {
                         html += `<dd class="border-bottom p-2 mb-0 " data-id="${item.id}" >
                         html += `<dd class="border-bottom p-2 mb-0 " data-id="${item.id}" >
                         <p class="mb-0 d-flex"><span class="text-primary">${item.name}</span><span
                         <p class="mb-0 d-flex"><span class="text-primary">${item.name}</span><span
-                                class="ml-auto">${item.mobile || ''}</span></p>
+                                class="ml-auto">${item.mobile || ''}</span>
+                        <span class="selected-mark text-success ml-2" style="display:none;"><i class="fa fa-check"></i></span>         
+                        </p>
                         <span class="text-muted">${item.role || ''}</span>
                         <span class="text-muted">${item.role || ''}</span>
                     </dd>`
                     </dd>`
                     })
                     })
                     $('#authority-list .book-list').empty()
                     $('#authority-list .book-list').empty()
                     $('#authority-list .book-list').append(html)
                     $('#authority-list .book-list').append(html)
+                    syncSelectedMarks();
                 } else {
                 } else {
                     if (!$('#authority-list .acc-btn').length) {
                     if (!$('#authority-list .acc-btn').length) {
                         accountGroup.forEach((group, idx) => {
                         accountGroup.forEach((group, idx) => {
@@ -146,7 +151,9 @@
                             group.groupList.forEach(item => {
                             group.groupList.forEach(item => {
                                 html += `<dd class="border-bottom p-2 mb-0 " data-id="${item.id}" >
                                 html += `<dd class="border-bottom p-2 mb-0 " data-id="${item.id}" >
                                     <p class="mb-0 d-flex"><span class="text-primary">${item.name}</span><span
                                     <p class="mb-0 d-flex"><span class="text-primary">${item.name}</span><span
-                                            class="ml-auto">${item.mobile || ''}</span></p>
+                                            class="ml-auto">${item.mobile || ''}</span>
+                                        <span class="selected-mark text-success ml-2" style="display:none;"><i class="fa fa-check"></i></span>        
+                                    </p>
                                     <span class="text-muted">${item.role || ''}</span>
                                     <span class="text-muted">${item.role || ''}</span>
                                 </dd>`
                                 </dd>`
                             });
                             });
@@ -154,6 +161,7 @@
                         })
                         })
                         $('#authority-list .book-list').empty()
                         $('#authority-list .book-list').empty()
                         $('#authority-list .book-list').append(html)
                         $('#authority-list .book-list').append(html)
+                        syncSelectedMarks();
                     }
                     }
                 }
                 }
             }, 400);
             }, 400);
@@ -177,11 +185,13 @@
             return false
             return false
         });
         });
         // 添加到成员中
         // 添加到成员中
-        $('body').on('click', '#authority-list dl dd', function () {
+        $('body').on('click', '#authority-list dl dd', function (e) {
+            e.stopPropagation();
             const id = parseInt($(this).data('id'));
             const id = parseInt($(this).data('id'));
             if (!isNaN(id) && id !== 0) {
             if (!isNaN(id) && id !== 0) {
                 postData(auditSaveUrl, {type: 'add-audit', id: id}, function (result) {
                 postData(auditSaveUrl, {type: 'add-audit', id: id}, function (result) {
                     setList(result);
                     setList(result);
+                    syncSelectedMarks();
                 })
                 })
             }
             }
         });
         });
@@ -244,8 +254,43 @@
             }
             }
             $('#contract-audit-list').html(list);
             $('#contract-audit-list').html(list);
             $("#contract-audit-table").bootstrapTable('resetView');
             $("#contract-audit-table").bootstrapTable('resetView');
+            syncSelectedMarks();
         }
         }
 
 
+        // --- 新增:同步下拉菜单选中状态的函数 ---
+        function syncSelectedMarks() {
+            // 1. 获取表格中所有用户的 UID
+            const tableUids = new Set(); // 使用 Set 提高查找效率
+            $('#contract-audit-list tr').each(function() {
+                // 假设每个权限复选框的 value 都是用户的 uid
+                const $firstCheckbox = $(this).find('.permission-checkbox').first();
+                if ($firstCheckbox.length) {
+                    const uid = parseInt($firstCheckbox.val(), 10);
+                    if (!isNaN(uid)) {
+                        tableUids.add(uid);
+                    }
+                }
+            });
+
+            // 2. 遍历下拉菜单中的所有用户项 (dd),并根据 UID 状态更新 .selected-mark
+            $('.dropdown-menu .book-list dd[data-id]').each(function() {
+                const userId = parseInt($(this).data('id'), 10); // 获取 dd 的 data-id
+                const $mark = $(this).find('.selected-mark'); // 找到对应的标记 span
+
+                if (!isNaN(userId) && $mark.length > 0) {
+                    if (tableUids.has(userId)) {
+                        // 如果用户已在表格中,则显示勾选标记
+                        $mark.show();
+                    } else {
+                        // 如果用户不在表格中,则隐藏勾选标记
+                        $mark.hide();
+                    }
+                }
+            });
+        }
+        // --- 新增结束 ---
+
+        
         $('body').on('click', '.del-contract-audit-a', function () {
         $('body').on('click', '.del-contract-audit-a', function () {
             $('#del-audit-ids').val($(this).attr('data-id'));
             $('#del-audit-ids').val($(this).attr('data-id'));
             $('#del-contract-audit').modal('show');
             $('#del-contract-audit').modal('show');
@@ -257,6 +302,7 @@
                 // toastr.success(`成功添加 位用户`);
                 // toastr.success(`成功添加 位用户`);
                 $('#del-contract-audit').modal('hide');
                 $('#del-contract-audit').modal('hide');
                 setList(result);
                 setList(result);
+                syncSelectedMarks();
             })
             })
         });
         });