memberlist.html 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120
  1. {extend name="../../base/view/common/base" /}
  2. <!-- 主体 -->
  3. {block name="body"}
  4. <div class="p-page">
  5. <table class="layui-hide" id="test" lay-filter="test"></table>
  6. </div>
  7. <script type="text/html" id="toolbaruser">
  8. <button class="layui-btn layui-btn-sm" lay-event="add">+ 新增空间成员</button>
  9. </script>
  10. {/block}
  11. <!-- /主体 -->
  12. <!-- 脚本 -->
  13. {block name="script"}
  14. <script>
  15. const moduleInit = ['tool','tablePlus','oaPicker'];
  16. const id = {$detail.id};
  17. const group_uids = "{$detail.group_uids|default=''}";
  18. function removeDuplicateNumbers(str) {
  19. // 1. 按逗号分割字符串为数组
  20. const numbers = str.split(',');
  21. // 2. 使用Set记录唯一值 + filter保留首次出现的顺序
  22. const seen = new Set();
  23. const uniqueNumbers = numbers.filter(num => {
  24. if (seen.has(num)) return false;
  25. seen.add(num);
  26. return true;
  27. });
  28. // 3. 重新拼接为字符串
  29. return uniqueNumbers.join(',');
  30. }
  31. function removeSpecificNumber(str, target) {
  32. // 1. 将字符串按逗号分割成数组
  33. const numbers = str.split(',');
  34. // 2. 过滤掉所有指定的数字
  35. const filteredNumbers = numbers.filter(num => num !== target.toString());
  36. // 3. 重新拼接为字符串
  37. return filteredNumbers.join(',');
  38. }
  39. function gouguInit() {
  40. var table = layui.tablePlus, tool = layui.tool, form = layui.form, oaPicker = layui.oaPicker;
  41. layui.userTable = table.render({
  42. elem: '#test',
  43. title: '共享空间成员列表',
  44. cellMinWidth: 80,
  45. toolbar: '#toolbaruser',
  46. url: "/disk/api/memberlist", //数据接口
  47. where: { 'id': id },
  48. page: false, //开启分页
  49. limit: 9999,
  50. cols: [[ //表头
  51. {field: 'id', title: '编号', width: 80, align: 'center' }
  52. ,{field: 'name', title: '成员姓名', width: 100, align: 'center' }
  53. ,{field: 'position', title: '职位', align: 'center', width: 200}
  54. ,{field: 'department', title: '所在部门'}
  55. ,{title: '操作',fixed: 'right', align: 'center', width: 80,templet: function (d) {
  56. let html = '<span class="layui-btn layui-btn-danger layui-btn-xs" lay-event="remove">移除</span>';
  57. return html;
  58. }
  59. }
  60. ]]
  61. });
  62. //触发事件
  63. table.on('toolbar(test)', function(obj){
  64. var checkStatus = table.checkStatus(obj.config.id);
  65. switch(obj.event){
  66. case 'add':
  67. oaPicker.employeeInit({
  68. type: 2,
  69. callback: function (data) {
  70. let callback = function (e) {
  71. layer.msg(e.msg);
  72. if(e.code == 0){
  73. layui.userTable.reload();
  74. }
  75. }
  76. let select_id=[];
  77. for(var a=0; a<data.length;a++){
  78. select_id.push(data[a].id);
  79. }
  80. let ids = select_id.join(',');
  81. if(ids=='' || ids==0){
  82. return false;
  83. }
  84. if(group_uids!=''){
  85. ids = group_uids+','+ids;
  86. }
  87. ids = removeDuplicateNumbers(ids);
  88. tool.post("/disk/api/memberset", {group_uids: ids,id: id}, callback);
  89. }
  90. })
  91. break;
  92. };
  93. });
  94. //监听行工具事件
  95. table.on('tool(test)', function (obj) {
  96. let callback = function (e) {
  97. layer.closeAll();
  98. layer.msg(e.msg);
  99. if(e.code == 0){
  100. layui.userTable.reload();
  101. }
  102. }
  103. if (obj.event === 'remove') {
  104. tool.ask('确定要移除该成员吗?', function (index) {
  105. let ids = removeSpecificNumber(group_uids, obj.data.id);
  106. tool.post("/disk/api/memberset", {group_uids: ids,id: id}, callback);
  107. });
  108. }
  109. return;
  110. });
  111. }
  112. </script>
  113. {/block}
  114. <!-- /脚本 -->