|
@@ -0,0 +1,435 @@
|
|
|
+
|
|
|
+const NameChange = function (obj) {
|
|
|
+ if (obj.value.length > 100) {
|
|
|
+ obj.classList.add('is-invalid');
|
|
|
+ } else {
|
|
|
+ obj.classList.remove('is-invalid');
|
|
|
+ }
|
|
|
+};
|
|
|
+
|
|
|
+$(document).ready(function() {
|
|
|
+ const projectTreeObj = (function(setting){
|
|
|
+ const ProjectTree = createDragTree(setting.treeSetting);
|
|
|
+ ProjectTree.loadDatas(setting.source);
|
|
|
+ const TableObj = $(setting.table);
|
|
|
+
|
|
|
+ const Utils = {
|
|
|
+ getRowTdHtml: function (node, tree) {
|
|
|
+ const html = [];
|
|
|
+ // 名称
|
|
|
+ html.push('<td width="20%" class="in-' + node.tree_level + '">');
|
|
|
+ if (node.is_folder) {
|
|
|
+ if (node.children.length > 0) {
|
|
|
+ html.push('<span onselectstart="return false" style="{-moz-user-select:none}" class="fold-switch mr-1" title="收起" cid="'+ node.sort_id +'"><i class="fa fa-minus-square-o"></i></span> <i class="fa fa-folder-o"></i> ', node.name);
|
|
|
+ } else {
|
|
|
+ html.push('<i class="fa fa-folder-o"></i> ', node.name);
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ html.push(`<span class="text-muted mr-2">${tree.isLastSibling(node) ? '└' : '├'}</span>`);
|
|
|
+ html.push('<a href="javascript: void(0)" name="name" id="' + node.id + '">', node.name, '</a>');
|
|
|
+ }
|
|
|
+ html.push('</td>');
|
|
|
+ // 概预算标准
|
|
|
+ if (node.is_folder) {
|
|
|
+ html.push(`<td class="text-center"></td>`);
|
|
|
+ } else {
|
|
|
+ if (node.std_name) {
|
|
|
+ html.push(`<td class="text-center">${node.std_name}</td>`);
|
|
|
+ } else {
|
|
|
+ html.push(`<td class="text-center"><button class="btn btn-outline-primary btn-sm ml-1" name="set-std">选择</button></td>`);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // 创建时间
|
|
|
+ if (node.is_folder) {
|
|
|
+ html.push(`<td class="text-center"></td>`);
|
|
|
+ html.push(`<td class="text-center"></td>`);
|
|
|
+ } else {
|
|
|
+ html.push(`<td class="text-center">${moment(node.create_time).format('YYYY-MM-DD')}</td>`);
|
|
|
+ html.push(`<td class="text-center">${node.management || ''}</td>`);
|
|
|
+ }
|
|
|
+ // 操作
|
|
|
+ html.push(`<td>`);
|
|
|
+ html.push('<button class="btn btn-outline-primary btn-sm ml-1" name="edit">编辑</button>');
|
|
|
+ html.push('<button class="btn btn-outline-danger btn-sm ml-1" name="del">删除</button>');
|
|
|
+ if (!node.is_folder) html.push('<button class="btn btn-outline-primary btn-sm ml-1" name="member">成员管理</button>');
|
|
|
+ html.push('</td>');
|
|
|
+ return html.join('');
|
|
|
+ },
|
|
|
+ getNodeTrHtml: function (node, tree) {
|
|
|
+ const html = [];
|
|
|
+ html.push(`<tr tree_id="${node.id}" draggable="true">`);
|
|
|
+ html.push(Utils.getRowTdHtml(node, tree));
|
|
|
+ html.push(`</tr>`);
|
|
|
+ return html.join('');
|
|
|
+ },
|
|
|
+ reloadTable: function () {
|
|
|
+ const html = [];
|
|
|
+ for (const node of ProjectTree.nodes) {
|
|
|
+ html.push(Utils.getNodeTrHtml(node, ProjectTree));
|
|
|
+ }
|
|
|
+ TableObj.html(html.join(''));
|
|
|
+ },
|
|
|
+ getSelectNode: function() {
|
|
|
+ const selectId = $('tr.table-active').attr('tree_id');
|
|
|
+ return selectId ? ProjectTree.getItems(selectId) : null;
|
|
|
+ },
|
|
|
+ getSelectNodeId: function() {
|
|
|
+ const selectId = $('tr.table-active').attr('tree_id');
|
|
|
+ return selectId || setting.treeSetting.rootId;
|
|
|
+ },
|
|
|
+ refreshAddButton: function() {
|
|
|
+ const select = this.getSelectNode();
|
|
|
+ $('[href="#add-folder"]').attr('disabled', select && select.tree_level >= 4);
|
|
|
+ },
|
|
|
+ refreshTreeTable: function(result) {
|
|
|
+ ProjectTree.loadDatas(result);
|
|
|
+ Utils.reloadTable();
|
|
|
+ },
|
|
|
+ refreshRow: function(result) {
|
|
|
+ const refreshData = ProjectTree.loadPostData(result);
|
|
|
+ if (!refreshData.update) return;
|
|
|
+ for (const u of refreshData.update) {
|
|
|
+ $(`tr[tree_id=${u.id}]`).html(Utils.getRowTdHtml(u, ProjectTree));
|
|
|
+ }
|
|
|
+ },
|
|
|
+ dropTo: function() {
|
|
|
+ console.log(Utils.dragNode.name, Utils.dropNode.name);
|
|
|
+ if (!Utils.dropNode.is_folder) {
|
|
|
+ toastr.warning('请将文件夹或者项目拖动到目标文件夹下');
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ const posterity = ProjectTree.getPosterity(Utils.dragNode);
|
|
|
+ const maxLevelFolder = posterity.reduce((prev, cur) => { return cur.is_folder ? Math.max(cur.tree_level, prev) : prev; }, Utils.dragNode.tree_level);
|
|
|
+ const resultMaxLevelFolder = Utils.dropNode.tree_level + maxLevelFolder - Utils.dragNode.tree_level + 1;
|
|
|
+ if (resultMaxLevelFolder > 4) {
|
|
|
+ toastr.warning('文件夹不可超过4层');
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ postData('/subproj/dragTo', { drag_id: Utils.dragNode.id, drop_id: Utils.dropNode.id }, function (result){
|
|
|
+ Utils.refreshTreeTable(result);
|
|
|
+ });
|
|
|
+ delete Utils.dragNode;
|
|
|
+ delete Utils.dropNode;
|
|
|
+ },
|
|
|
+ };
|
|
|
+
|
|
|
+ Utils.reloadTable();
|
|
|
+ $('body').on('click', 'tr[tree_id]', function() {
|
|
|
+ if ($(this).hasClass('table-active')) {
|
|
|
+ $(this).removeClass('table-active');
|
|
|
+ } else {
|
|
|
+ $('tr[tree_id].table-active').removeClass('table-active');
|
|
|
+ $(this).addClass('table-active');
|
|
|
+ }
|
|
|
+ Utils.refreshAddButton();
|
|
|
+ });
|
|
|
+ $('body').on('dragstart', 'tr[tree_id]', function(e) {
|
|
|
+ Utils.dragNode = ProjectTree.getItems(e.target.getAttribute('tree_id'));
|
|
|
+ });
|
|
|
+ $('body').on('drop', 'tr[tree_id]', function(e) {
|
|
|
+ Utils.dropNode = ProjectTree.getItems(e.currentTarget.getAttribute('tree_id'));
|
|
|
+ Utils.dropTo();
|
|
|
+ });
|
|
|
+ $('body').on('dragover', 'tr[tree_id]', function(e) {
|
|
|
+ const parent = ProjectTree.getItems(e.currentTarget.getAttribute('tree_id'));
|
|
|
+ return !parent || !parent.is_folder || parent.tree_level > 3 || parent.id === Utils.dragNode.id;
|
|
|
+ });
|
|
|
+
|
|
|
+ $('body').on('click', 'button[name=del]', function(e) {
|
|
|
+ const treeId = $(this).parent().parent().attr('tree_id');
|
|
|
+ const node = ProjectTree.getItems(treeId);
|
|
|
+ if (node.is_folder) {
|
|
|
+ $('.modal-title', '#del').html('确认删除文件夹');
|
|
|
+ $('#del-hint').attr('tree_id', treeId).html(`确定删除「<strong style="word-break: break-word;">${node.name}</strong>」及其下所有内容?`)
|
|
|
+ } else {
|
|
|
+ $('.modal-title', '#del').html('确认删除标段');
|
|
|
+ $('#del-hint').attr('tree_id', treeId).html(`确定删除「<strong style="word-break: break-word;">${node.name}</strong>」?`)
|
|
|
+ }
|
|
|
+ $('#del').modal('show');
|
|
|
+ });
|
|
|
+ $('body').on('click', 'button[name=edit]', function(e) {
|
|
|
+ const treeId = $(this).parent().parent().attr('tree_id');
|
|
|
+ const node = ProjectTree.getItems(treeId);
|
|
|
+ $('#edit-project-name').attr('tree_id', treeId).val(node.name);
|
|
|
+ $('#edit-project').modal('show');
|
|
|
+ });
|
|
|
+ $('body').on('click', 'button[name=set-std]', function(e) {
|
|
|
+ const treeId = $(this).parent().parent().attr('tree_id');
|
|
|
+ const node = ProjectTree.getItems(treeId);
|
|
|
+ if (node.is_folder || node.std_id) return;
|
|
|
+ $('[name=std_id]').attr('tree_id', treeId);
|
|
|
+ $('#set-std').modal('show');
|
|
|
+ });
|
|
|
+ return { ProjectTree, TableObj, ...Utils };
|
|
|
+ })({
|
|
|
+ treeSetting: { id: 'id', pid: 'tree_pid', level: 'tree_level', order: 'tree_order', rootId: '-1' },
|
|
|
+ source: projectList,
|
|
|
+ table: '#projectList',
|
|
|
+ });
|
|
|
+
|
|
|
+ $('#add-folder').on('show.bs.modal', function(e) {
|
|
|
+ const select = projectTreeObj.getSelectNode();
|
|
|
+ if (select) {
|
|
|
+ if (select.is_folder) e.stopPropagation();
|
|
|
+ $('#folder-hint').html(`在文件夹 [${select.name}] 下新增`).show();
|
|
|
+ } else {
|
|
|
+ $('#folder-hint').hide();
|
|
|
+ }
|
|
|
+ $('#folder-name').val('');
|
|
|
+ });
|
|
|
+ $('#add-folder-ok').click(function() {
|
|
|
+ const tree_pid = projectTreeObj.getSelectNodeId();
|
|
|
+ const name = $('#folder-name').val();
|
|
|
+ if (!name || name.length > 100) return;
|
|
|
+ postData('/subproj/addFolder', { name, is_folder: 1, tree_pid }, function(result) {
|
|
|
+ projectTreeObj.refreshTreeTable(result);
|
|
|
+ $('#add-folder').modal('hide');
|
|
|
+ });
|
|
|
+ });
|
|
|
+
|
|
|
+ $('#add-project').on('show.bs.modal', function(e) {
|
|
|
+ const select = projectTreeObj.getSelectNode();
|
|
|
+ if (select) {
|
|
|
+ if (select.is_folder) e.stopPropagation();
|
|
|
+ $('#project-hint').html(`在文件夹 [${select.name}] 下新增`).show();
|
|
|
+ } else {
|
|
|
+ $('#project-hint').hide();
|
|
|
+ }
|
|
|
+ $('#project-name').val('');
|
|
|
+ });
|
|
|
+ $('#add-project-ok').click(function() {
|
|
|
+ const tree_pid = projectTreeObj.getSelectNodeId();
|
|
|
+ const name = $('#project-name').val();
|
|
|
+ if (!name || name.length > 100) return;
|
|
|
+ postData('/subproj/addProj', { name, is_folder: 1, tree_pid }, function(result) {
|
|
|
+ projectTreeObj.refreshTreeTable(result);
|
|
|
+ $('#add-project').modal('hide');
|
|
|
+ });
|
|
|
+ });
|
|
|
+ $('#del-ok').click(function() {
|
|
|
+ const id = $('#del-hint').attr('tree_id');
|
|
|
+ postData('/subproj/del', { id }, function(result) {
|
|
|
+ projectTreeObj.refreshTreeTable(result);
|
|
|
+ $('#del').modal('hide');
|
|
|
+ $('#del-hint').attr('tree_id', '');
|
|
|
+ });
|
|
|
+ });
|
|
|
+ $('#edit-project-ok').click(function() {
|
|
|
+ const nameObj = $('#edit-project-name');
|
|
|
+ const name = name.val();
|
|
|
+ if (!name || name.length > 100) return;
|
|
|
+ postData('/subproj/save', { id: nameObj.attr('tree_id'), name }, function(result) {
|
|
|
+ projectTreeObj.refreshRow(result);
|
|
|
+ $('#edit-project').modal('hide');
|
|
|
+ $('#edit-project-name').attr('tree_id', '');
|
|
|
+ });
|
|
|
+ });
|
|
|
+ $('#set-std-ok').click(function() {
|
|
|
+ const select = $('[name=std_id]:checked');
|
|
|
+ const id = select.attr('tree_id');
|
|
|
+ const std_id = parseInt(select.val());
|
|
|
+ postData('/subproj/save', { id, std_id }, function(result) {
|
|
|
+ projectTreeObj.refreshRow(result);
|
|
|
+ $('#set-std').modal('hide');
|
|
|
+ $('[name=std_id]').attr('tree_id', '');
|
|
|
+ });
|
|
|
+ });
|
|
|
+
|
|
|
+ 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
|
|
|
+ });
|
|
|
+ let orgMembers, newMembers;
|
|
|
+ const generateMemberHtml = function () {
|
|
|
+ const html = [];
|
|
|
+ for (const mem of newMembers) {
|
|
|
+ html.push('<tr>');
|
|
|
+ html.push(`<td>${mem.name}</td>`);
|
|
|
+ html.push(`<td>${mem.role}</td>`);
|
|
|
+ // 动态投资
|
|
|
+ const viewBudget = mem.budget_permission.indexOf(permissionConst.budget.view.value) >= 0;
|
|
|
+ html.push(`<td><div class="custom-control custom-checkbox mb-2">
|
|
|
+ <input type="checkbox" ptype="budget" sptype="view" uid="${mem.uid}" id="budgetview${mem.uid}" class="custom-control-input" ${(viewBudget ? 'checked' : '')}>
|
|
|
+ <label class="custom-control-label" for="budgetview${mem.uid}"></label></div></td>`);
|
|
|
+ const editBudget = mem.budget_permission.indexOf(permissionConst.budget.edit.value) >= 0;
|
|
|
+ html.push(`<td><div class="custom-control custom-checkbox mb-2">
|
|
|
+ <input type="checkbox" ptype="budgetEdit" sptype="edit" id="budgetedit${mem.uid}" uid="${mem.uid}" class="custom-control-input" ${(editBudget ? 'checked' : '')}>
|
|
|
+ <label class="custom-control-label" for="budgetedit${mem.uid}"></label></div></td>`);
|
|
|
+ // 电子文档
|
|
|
+
|
|
|
+ const fileView = mem.file_permission.indexOf(permissionConst.file.view.value) >= 0;
|
|
|
+ html.push(`<td><div class="custom-control custom-checkbox mb-2">
|
|
|
+ <input type="checkbox" ptype="file" sptype="view" uid="${mem.uid}" id="fileview${mem.uid}" class="custom-control-input" ${(fileView ? 'checked' : '')}>
|
|
|
+ <label class="custom-control-label" for="fileview${mem.uid}"></label></div></td>`);
|
|
|
+ const fileUpload = mem.file_permission.indexOf(permissionConst.file.upload.value) >= 0;
|
|
|
+ html.push(`<td><div class="custom-control custom-checkbox mb-2">
|
|
|
+ <input type="checkbox" ptype="file" sptype="upload" id="fileupload${mem.uid}" uid="${mem.uid}" class="custom-control-input" ${(fileUpload ? 'checked' : '')}>
|
|
|
+ <label class="custom-control-label" for="fileupload${mem.uid}"></label></div></td>`);
|
|
|
+ const fileEdit = mem.file_permission.indexOf(permissionConst.file.edit.value) >= 0;
|
|
|
+ html.push(`<td><div class="custom-control custom-checkbox mb-2">
|
|
|
+ <input type="checkbox" ptype="file" sptype="eidt" uid="${mem.uid}" id="fileedit${mem.uid}" class="custom-control-input" ${(fileEdit ? 'checked' : '')}>
|
|
|
+ <label class="custom-control-label" for="fileedit${mem.uid}"></label></div></td>`);
|
|
|
+ // 关联标段
|
|
|
+ const rela = mem.manage_permission.indexOf(permissionConst.manage.rela.value) >= 0;
|
|
|
+ html.push(`<td><div class="custom-control custom-checkbox mb-2">
|
|
|
+ <input type="checkbox" ptype="manage" sptype="rela" id="rela${mem.uid}" uid="${mem.uid}" class="custom-control-input" ${(rela ? 'checked' : '')}>
|
|
|
+ <label class="custom-control-label" for="rela${mem.uid}"></label></div></td>`);
|
|
|
+ html.push(`<td><a href="javascript: void(0);" class="btn btn-outline-danger btn-sm ml-1" name="del-member" uid="${mem.uid}">移除</a></td>`);
|
|
|
+ html.push('</tr>');
|
|
|
+ }
|
|
|
+ $('#member-list').html(html.join(''));
|
|
|
+ };
|
|
|
+ $('[data-target="#member"]').click(function(){
|
|
|
+ const tr = this.parentNode.parentNode;
|
|
|
+ curBudget.id = tr.getAttribute('tree_id');
|
|
|
+ curBudget.bid = tr.getAttribute('bid');
|
|
|
+ curBudget.name = tr.getAttribute('bname');
|
|
|
+ curBudget.rela_tender = tr.getAttribute('rela-tender');
|
|
|
+
|
|
|
+ });
|
|
|
+
|
|
|
+ $('body').on('click', 'button[name=member]', function(e) {
|
|
|
+ const treeId = $(this).parent().parent().attr('tree_id');
|
|
|
+ const node = projectTreeObj.ProjectTree.getItems(treeId);
|
|
|
+ if (node.is_folder) return;
|
|
|
+ $('#member-ok').attr('tree_id', treeId);
|
|
|
+ postData('/subproj/member', { id: treeId }, function (result) {
|
|
|
+ orgMembers = result;
|
|
|
+ newMembers = result;
|
|
|
+ generateMemberHtml();
|
|
|
+ $('#member').modal('show');
|
|
|
+ });
|
|
|
+ });
|
|
|
+ $('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;
|
|
|
+ }
|
|
|
+ newMembers.push({
|
|
|
+ uid: user.id,
|
|
|
+ name: user.name,
|
|
|
+ role: user.role,
|
|
|
+ budget_permission: [],
|
|
|
+ file_permission: [],
|
|
|
+ manage_permission: [],
|
|
|
+ });
|
|
|
+ generateMemberHtml();
|
|
|
+ });
|
|
|
+ $('#member').on('click', 'a[name="del-member"]', function () {
|
|
|
+ const id = parseInt(this.getAttribute('uid'));
|
|
|
+ newMembers.splice(newMembers.findIndex(x => { return x.uid === id}), 1);
|
|
|
+ generateMemberHtml();
|
|
|
+ });
|
|
|
+ $('#member-list').on('click', 'input', function () {
|
|
|
+ const id = parseInt(this.getAttribute('uid'));
|
|
|
+ const mem = newMembers.find(x => { return x.uid === id});
|
|
|
+ const pType = this.getAttribute('ptype'), spType = this.getAttribute('sptype');
|
|
|
+ if (this.checked) {
|
|
|
+ if (pType === 'budget' && spType === 'view') {
|
|
|
+ mem.budget_permission.push(parseInt(permissionConst.budget.view.value));
|
|
|
+ } else if (pType === 'budget' && spType === 'edit') {
|
|
|
+ mem.budget_permission.push(parseInt(permissionConst.budget.view.value));
|
|
|
+ if (mem.budget_permission.indexOf(permissionConst.budget.view.value) < 0) {
|
|
|
+ mem.budget_permission.push(parseInt(permissionConst.budget.edit.value));
|
|
|
+ $(`#budgetview${id}`)[0].checked = true;
|
|
|
+ }
|
|
|
+ } else if (pType === 'file' && spType === 'view') {
|
|
|
+ mem.file_permission.push(parseInt(permissionConst.file.view.value));
|
|
|
+ } else if (pType === 'file' && spType === 'upload') {
|
|
|
+ mem.file_permission.push(parseInt(permissionConst.file.upload.value));
|
|
|
+ if (mem.file_permission.indexOf(permissionConst.file.view.value) < 0) {
|
|
|
+ mem.file_permission.push(parseInt(permissionConst.file.view.value));
|
|
|
+ $(`#fileview${id}`)[0].checked = true;
|
|
|
+ }
|
|
|
+ } else if (pType === 'file' && spType === 'edit') {
|
|
|
+ mem.file_permission.push(parseInt(permissionConst.file.view.value));
|
|
|
+ if (mem.file_permission.indexOf(permissionConst.file.view.value) < 0) {
|
|
|
+ mem.file_permission.push(parseInt(permissionConst.file.view.value));
|
|
|
+ $(`#fileview${id}`)[0].checked = true;
|
|
|
+ }
|
|
|
+ } else if (pType === 'manage' && spType === 'rela') {
|
|
|
+ mem.manage_permission.push(parseInt(permissionConst.manage.rela.value));
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ if (pType === 'budget' && spType === 'view') {
|
|
|
+ mem.budget_permission = [];
|
|
|
+ $(`#budgetedit${id}`)[0].checked = false;
|
|
|
+ } else if (pType === 'budget' && spType === 'edit') {
|
|
|
+ mem.budget_permission.splice(mem.budget_permission.indexOf(permissionConst.budget.edit.value), 1);
|
|
|
+ } else if (pType === 'file' && spType === 'view') {
|
|
|
+ mem.file_permission = [];
|
|
|
+ $(`#fileupload${id}`)[0].checked = false;
|
|
|
+ $(`#fileedit${id}`)[0].checked = false;
|
|
|
+ } else if (pType === 'file' && spType === 'upload') {
|
|
|
+ mem.file_permission.splice(mem.file_permission.indexOf(permissionConst.file.upload.value), 1);
|
|
|
+ } else if (pType === 'file' && spType === 'edit') {
|
|
|
+ mem.file_permission.splice(mem.file_permission.indexOf(permissionConst.file.edit.value), 1);
|
|
|
+ } else if (pType === 'manage' && spType === 'rela') {
|
|
|
+ mem.manage_permission = [];
|
|
|
+ }
|
|
|
+ }
|
|
|
+ });
|
|
|
+ $('#member-ok').click(function(){
|
|
|
+ const id = this.getAttribute('tree_id');
|
|
|
+ postData('/subproj/memberSave', {id, member: newMembers}, function () {
|
|
|
+ $('#member').modal('hide');
|
|
|
+ })
|
|
|
+ });
|
|
|
+});
|