'use strict'; /** * * * @author Mai * @date 2025/7/18 * @version */ const MemberPermission = function() { let setting; // 搜索&展开收起 let timer = null; let oldSearchVal = null; $('#member-search').bind('input propertychange', function(e) { oldSearchVal = e.target.value; timer && clearTimeout(timer); timer = setTimeout(() => { const newVal = $('#member-search').val(); let html = ''; if (newVal && newVal === oldSearchVal) { accountList .filter(item => item && (item.name.indexOf(newVal) !== -1 || (item.mobile && item.mobile.indexOf(newVal) !== -1))) .forEach(item => { html += `

${item.name}${item.mobile || ''}

${item.role || ''}
` }); $('.book-list').empty(); $('.book-list').append(html); } else { if (!$('.acc-btn').length) { accountGroup.forEach((group, idx) => { if (!group) return; html += `
${group.groupName}
`; group.groupList.forEach(item => { html += `

${item.name}${item.mobile || ''}

${item.role || ''}
` }); html += '
'; }); $('.book-list').empty(); $('.book-list').append(html); } } }, 400); }); $('.book-list').on('click', 'dt', function () { const idx = $(this).find('.acc-btn').attr('data-groupid') const type = $(this).find('.acc-btn').attr('data-type') if (type === 'hide') { $(this).parent().find(`div[data-toggleid="${idx}"]`).show(() => { $(this).children().find('i').removeClass('fa-plus-square').addClass('fa-minus-square-o') $(this).find('.acc-btn').attr('data-type', 'show') }) } else { $(this).parent().find(`div[data-toggleid="${idx}"]`).hide(() => { $(this).children().find('i').removeClass('fa-minus-square-o').addClass('fa-plus-square') $(this).find('.acc-btn').attr('data-type', 'hide') }) } return false }); // 添加 $('dl').on('click', 'dd', function () { const auditorId = parseInt($(this).data('id')); const user = accountList.find(x => { return x.id === auditorId; }); const check = $(`tr[uid=${auditorId}]`, '#member-list'); if (check.length > 0) { toastr.error('请勿重复添加成员'); return; } $('#member-list').append(getUserPermissionHtml({ uid: user.id, name: user.name, role: user.role })); }); const getUserPermissionHtml = function(user) { const html = []; html.push(``); html.push(`${user.name}`, `${user.role}`); for (const block of permissionBlock) { for (const p of block.permission) { if (p.isDefault) continue; const checked = user[block.key] ? (user[block.key].indexOf(p.value) >= 0 ? 'checked' : '') : ''; html.push(``); } } html.push(`移除`); html.push(''); return html.join(''); }; const getPermissionHtml = function(member) { const html = []; for (const m of member) { html.push(getUserPermissionHtml(m)); } return html.join(''); }; const loadMemberPermission = async function() { const data = JSON.parse(JSON.stringify(setting.data)); data.parts = permissionBlock.map(x => { return x.key; }); const result = await postDataAsync(setting.loadUrl, data ); $('#member-list').html(getPermissionHtml(result)); }; const show = async function(info) { setting = info; await loadMemberPermission(); $('#member').modal('show'); }; $('#member').on('click', 'a[name="del-member"]', function () { $(this).parent().parent().remove(); }); const getMemberPermission = function() { const result = []; const trs = $('tr', '#member-list'); for (const tr of trs) { const user = { uid: tr.getAttribute('uid') }; for (const block of permissionBlock) { const defaultPermission = block.permission.find(x => { return x.isDefault; }); const permission = []; if (defaultPermission) permission.unshift(defaultPermission.value + ''); const checkedPermission = $(`[data-block=${block.key}]:checked`, tr); for (const cp of checkedPermission) { permission.push(cp.getAttribute('data-value')); } user[block.key] = permission; } result.push(user); } return result; }; $('#member-ok').click(function() { const data = JSON.parse(JSON.stringify(setting.data)); data.member = getMemberPermission(); data.permissionBlock = permissionBlock.map(x => { return x.key;}); postData(setting.saveUrl, data, function() { $('#member').modal('hide'); }); }); return { show } };