瀏覽代碼

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

caipin 1 天之前
父節點
當前提交
86831ceb1b
共有 2 個文件被更改,包括 40 次插入5 次删除
  1. 37 4
      app/public/js/shares/tender_permission.js
  2. 3 1
      app/view/shares/tender_permission_modal.ejs

+ 37 - 4
app/public/js/shares/tender_permission.js

@@ -13,6 +13,29 @@ const MemberPermission = function() {
     // 搜索&展开收起
     let timer = null;
     let oldSearchVal = null;
+
+    const syncSelectedMarks = function() {
+        const selectedUids = new Set(); 
+        $('#member-list tr[uid]').each(function() {
+            const uid = parseInt($(this).attr('uid'), 10); 
+            if (!isNaN(uid)) {
+                selectedUids.add(uid);
+            }
+        });
+        $('.dropdown-menu .book-list dd[data-id]').each(function() {
+            const userId = parseInt($(this).data('id'), 10); 
+            const $mark = $(this).find('.selected-mark'); 
+
+            if (!isNaN(userId) && $mark.length > 0) {
+                if (selectedUids.has(userId)) {
+                    $mark.show(); 
+                } else {
+                    $mark.hide();
+                }
+            }
+        });
+    };
+
     $('#member-search').bind('input propertychange', function(e) {
         oldSearchVal = e.target.value;
         timer && clearTimeout(timer);
@@ -25,11 +48,14 @@ const MemberPermission = function() {
                     .forEach(item => {
                         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
-                                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></dd>`
                     });
                 $('.book-list').empty();
                 $('.book-list').append(html);
+                syncSelectedMarks();
             } else {
                 if (!$('.acc-btn').length) {
                     accountGroup.forEach((group, idx) => {
@@ -40,7 +66,9 @@ const MemberPermission = function() {
                         group.groupList.forEach(item => {
                             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
-                                            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>
                                 </dd>`
                         });
@@ -48,6 +76,7 @@ const MemberPermission = function() {
                     });
                     $('.book-list').empty();
                     $('.book-list').append(html);
+                    syncSelectedMarks();
                 }
             }
         }, 400);
@@ -70,7 +99,8 @@ const MemberPermission = function() {
         return false
     });
     // 添加
-    $('dl').on('click', 'dd', function () {
+    $('dl').on('click', 'dd', function (e) {
+        e.stopPropagation();
         const auditorId = parseInt($(this).data('id'));
         const user = accountList.find(x => { return x.id === auditorId; });
         const check = $(`tr[uid=${auditorId}]`, '#member-list');
@@ -79,9 +109,9 @@ const MemberPermission = function() {
             return;
         }
         $('#member-list').append(getUserPermissionHtml({ uid: user.id, name: user.name, role: user.role }));
+        syncSelectedMarks();
     });
 
-
     const getUserPermissionHtml = function(user) {
         const html = [];
         html.push(`<tr uid="${user.uid}">`);
@@ -109,16 +139,19 @@ const MemberPermission = function() {
         data.parts = permissionBlock.map(x => { return x.key; });
         const result = await postDataAsync(setting.loadUrl, data );
         $('#member-list').html(getPermissionHtml(result));
+        syncSelectedMarks();
     };
 
     const show = async function(info) {
         setting = info;
         await loadMemberPermission();
         $('#member').modal('show');
+        syncSelectedMarks();
     };
 
     $('#member').on('click', 'a[name="del-member"]', function () {
         $(this).parent().parent().remove();
+        syncSelectedMarks();
     });
 
     const getMemberPermission = function() {

+ 3 - 1
app/view/shares/tender_permission_modal.ejs

@@ -19,7 +19,9 @@
                                 <% group.groupList.forEach(item => { %>
                                 <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
-                                                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>
                                 </dd>
                                 <% });%>