123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153 |
- '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 += `<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>
- <span class="text-muted">${item.role || ''}</span></dd>`
- });
- $('.book-list').empty();
- $('.book-list').append(html);
- } else {
- if (!$('.acc-btn').length) {
- accountGroup.forEach((group, idx) => {
- if (!group) return;
- html += `<dt><a href="javascript: void(0);" class="acc-btn" data-groupid="${idx}" data-type="hide"><i class="fa fa-plus-square"></i>
- </a> ${group.groupName}</dt>
- <div class="dd-content" data-toggleid="${idx}">`;
- 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>
- <span class="text-muted">${item.role || ''}</span>
- </dd>`
- });
- html += '</div>';
- });
- $('.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(`<tr uid="${user.uid}">`);
- html.push(`<td>${user.name}</td>`, `<td>${user.role}</td>`);
- 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(`<td class="text-center"><input type="checkbox" data-block="${block.key}" data-value="${p.value}" ${checked}></td>`);
- }
- }
- html.push(`<td><a href="javascript: void(0)" class="btn btn-outline-danger btn-sm ml-1" name="del-member">移除</a></td>`);
- html.push('</tr>');
- 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 }
- };
|