| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122 |
- window.buildTreeItems = function(deptTree, treeItems)
- {
- if(typeof(treeItems) == 'undefined') treeItems = [];
- for(i in deptTree)
- {
- let dept = deptTree[i];
- let treeItem = {key: dept.id, text: dept.name};
- treeItems = appendItems(treeItems, treeItem, dept.pId);
- }
- return treeItems;
- };
- window.appendItems = function(treeItems, treeItem, pid)
- {
- if(pid == 0)
- {
- treeItems.push(treeItem);
- return treeItems;
- }
- for(i in treeItems)
- {
- hasChild = typeof(treeItems[i].items) != 'undefined';
- if(treeItems[i].key == pid)
- {
- parentItem = treeItems[i];
- if(!hasChild) parentItem.items = [];
- hasCurrentItem = false;
- for(j in parentItem.items)
- {
- if(parentItem.items[j].key == treeItem.key) hasCurrentItem = true;
- }
- if(parentItem.checked != undefined) treeItem.checked = parentItem.checked;
- if(!hasCurrentItem) parentItem.items.push(treeItem);
- }
- else if(hasChild)
- {
- treeItems[i].items = appendItems(treeItems[i].items, treeItem, pid);
- }
- }
- return treeItems;
- };
- window.getSelectedDepts = function()
- {
- var selectedDepts = [];
- $('#deptList').find('.item-checkbox.checked').each(function()
- {
- id = $(this).closest('.tree-item').attr('z-key');
- selectedDepts.push(id);
- });
- return selectedDepts;
- };
- window.submitSelectedDepts = function()
- {
- const selectedDepts = getSelectedDepts();
- if(selectedDepts.length == 0) return zui.Modal.alert(noDeptError);
- let link = $.createLink('webhook', 'bind', "id=" + webhookID);
- link += link.indexOf('?') >= 0 ? '&' : '?';
- link += "selectedDepts=" + selectedDepts.join(',');
- $('.actions .save').attr('disabled', 'disabled');
- loadPage(link);
- };
- window.setItemChecked = function(clickDept)
- {
- const $startItem = $('#deptList li[z-key="' + clickDept + '"]');
- const $checkbox = $($startItem.children('[key="item"]'));
- const itemChecked = $checkbox.hasClass('checked') && $checkbox.find('.item-checkbox').hasClass('checked');
- const noAllChecked = $checkbox.hasClass('checked') && !$checkbox.find('.item-checkbox').hasClass('checked');
- $startItem.find('[key="item"]').toggleClass('checked', !itemChecked && !noAllChecked);
- $startItem.find('.item-checkbox').toggleClass('checked', !itemChecked && !noAllChecked);
- $startItem.find('.item-checkbox').find('input[type=checkbox]').prop('checked', !itemChecked && !noAllChecked);
- };
- const childrenLoaded = [];
- window.loadChildrenTree = function(e)
- {
- if(webhookType != 'feishuuser') return;
- const $deptList = $('#deptList');
- const $this = $(e.target);
- const $li = $this.closest('li');
- const deptID = $li.attr('z-key');
- let $checkbox = null;
- if($this.hasClass('item-checkbox')) $checkbox = $this;
- if($this.parent().hasClass('item-checkbox')) $checkbox = $this.parent();
- if($checkbox) return setItemChecked(deptID);
- if(childrenLoaded.includes(deptID) || deptID == 1) return;
- childrenLoaded.push(deptID);
- $deptList.addClass('loading');
- $.post(feishuUrl, {departmentID: deptID}, function(deptTree)
- {
- const tree = $deptList.zui('tree');
- deptTree = JSON.parse(deptTree);
- if(deptTree.length) tree.render(buildTreeItems(deptTree, tree.options.items));
- $deptList.removeClass('loading');
- });
- };
- window.loadDeptTree = function()
- {
- if(webhookType == 'feishuuser')
- {
- $.getJSON(feishuUrl, function(deptTree)
- {
- $('#loadPrompt').remove();
- tree = new zui.Tree('#deptList', {checkbox: true, checkOnClick: true, defaultNestedShow: true, onClickItem: loadChildrenTree, items: buildTreeItems(deptTree)});
- });
- }
- else
- {
- tree = new zui.Tree('#deptList', {checkbox: true, checkOnClick: true, defaultNestedShow: true, items: buildTreeItems(deptTree)});
- $('#loadPrompt').remove();
- }
- };
|