xinyb
2024-04-23 2ef61846432762b570d5f2004a4551225da01324
提交 | 用户 | age
a6a76f 1 $(function(){
951b1b 2     layui.use(['layer','element', 'laypage'], function () {
da43d6 3         var element = layui.element; //Tab的切换功能,切换事件监听等,需要依赖element模块
X 4         var laypage = layui.laypage;
951b1b 5         var layer=layui.layer;
da43d6 6         var $ = layui.$;
c602a2 7         var itemColor="layui-bg-blue";
59940d 8         var Subscript=null;//要显示角标
5745f3 9         var sort = SortType || 'msgbyType';//默认
da43d6 10         var nowelem;//全局tab页卡对象
X 11         var nowback = 0;
12         var data = {
5745f3 13             'm': SortType || 'msgbyType',//默认
da43d6 14             'userCode': $('#usercode').val(),//用户代码
X 15             'hrCode': $('#usercode').val(),//用户代码
16             'isfinshed': 1,//是否已处理
17             'searchKey': '',//查询
18             'actionType': '',//审批类型
19             'num': 1,
20             'msgType': 1,//内容类型
21             'formid': 0,//功能号
22             'pageSize': 20,//默认每页返回20条数据
23             'pageIndex': 1 //页码
24         }
25         //监听tab1
26         element.on('tab(tab1)', function (elem) {
27             $('.sort a').removeClass('disable-button');
28             data.isfinshed = $(this).data('isfinshed');
29             data.actionType = $(this).data('actiontype');
30             nowback = 0;
31             data.formid = 0;
32             data.num = 1;
33             data.searchKey = '';
34             switch (elem.index) {
35                 case 0://待办
c602a2 36                     itemColor="";
c251f2 37                     element.tabChange('tab2', 1); //切换到:对应类型
da43d6 38                     break;
X 39                 case 1://已办
c602a2 40                     itemColor="layui-bg-gray";
c251f2 41                     element.tabChange('tab3', 1); //切换到:对应类型
da43d6 42                     break;
X 43                 case 2://在线交流
59940d 44                     itemColor="layui-bg-blue";
X 45                     element.tabChange('tab4', 4); //切换到:对应类型 4表示未读页卡
46                     break;
da43d6 47                 case 3://通知
c602a2 48                     itemColor="layui-bg-blue";
59940d 49                     element.tabChange('tab5', 4); //切换到:对应类型 4表示未读页卡
X 50                     // data.m = sort;
51                     // active(elem);
da43d6 52                     break;
59940d 53                 case 4://抄送我的
c602a2 54                     itemColor="layui-bg-blue";
59940d 55                     element.tabChange('tab6', 4); //切换到:对应类型 4表示未读页卡
d8ee82 56                     break;
da43d6 57                 default://搜索
X 58                     if (!$($('.sort a')[0]).hasClass('disable-button')) {
59                         $($('.sort a')[0]).addClass('disable-button');
60                     }
61                     if (data.m = 'msgbyType') {
62                         sort = 'msgv2';
63                         data.m = sort;
64                         $('.sort a').removeClass('sortColor');
65                         $($('.sort a')[1]).addClass('sortColor');
66                     }
951b1b 67                     data.num=10;
da43d6 68                     data.searchKey = $('#demoReload').val();
X 69                     active(elem);
70                     break;
a6a76f 71
da43d6 72             }
X 73         });
d8ee82 74         //监听tab2
da43d6 75         element.on('tab(tab2)', function (elem) {
X 76             data.msgType = $(this).attr('lay-id');
59940d 77             Subscript = (data.msgType == "1" ? this : null);
X 78             parmSet(elem);
da43d6 79         });
d8ee82 80         //监听tab3
da43d6 81         element.on('tab(tab3)', function (elem) {
59940d 82             Subscript=null;
X 83             parmSet(elem);
d8ee82 84         });
X 85         //监听tab4
86         element.on('tab(tab4)', function (elem) {
c251f2 87             data.msgType = $(this).attr('lay-id');
59940d 88             Subscript = (data.msgType == "4" ? this : null);
X 89             parmSet(elem);
da43d6 90         });
59940d 91         //监听tab5
X 92         element.on('tab(tab5)', function (elem) {
93             data.msgType = $(this).attr('lay-id');
94             Subscript = (data.msgType == "4" ? this : null);
95             parmSet(elem);
96         });
97         //监听tab6
98         element.on('tab(tab6)', function (elem) {
99             data.msgType = $(this).attr('lay-id');
100             Subscript = (data.msgType == "4" ? this : null);
101             parmSet(elem);
102         });
103
da43d6 104         //搜索按钮触发
X 105         $('.demoTable .layui-btn').on('click', function () {
106             search();
107         });
108         //搜索回车触发
109         $('.demoTable input').on('keydown', function (e) {
110             if (e.keyCode == 13) {
111                 search();
112             }
113         });
114         //排序触发
115         $('.sort a').on('click', function () {
116             if ($(this).hasClass('disable-button')) {
117                 return;
118             }
119             if (!$(this).hasClass('sortColor')) {
120                 $('.sort a').removeClass('sortColor');
121                 $(this).addClass('sortColor');
122             }
123             sort = $(this).data('type');
124             data.m = sort;
125             data.formid = 0;
126             data.num = 1;
127             active(nowelem);
128         });
129
59940d 130         var parmSet=function(elem){
X 131             nowback = 0;
132             data.formid = 0;
133             data.num = 1;
134             data.m = sort;
135             active(elem);
136         }
da43d6 137         //触发加载数据
X 138         var active = function (elem, label) {
139             try {
140                 var id = elem.elem[0].id;//获取到对应页卡id
141                 var refresh = $(elem.elem[0].lastElementChild).find('.layui-breadcrumb');//刷新span对象
142                 var collapse = $(elem.elem[0].lastElementChild).find('.layui-show').find('.layui-collapse');//内容div对象
143                 Tips('layui-icon layui-icon-loading layui-anim layui-anim-rotate layui-anim-loop', '正在加载中...', collapse);
144                 var array = [];
145                 data.pageIndex = 1;
146                 var s = 0;
147                 for (var n = 0; n < data.num; n++) {
148                     data.pageIndex = n + 1;
149                     $.post('/webmenu.do?m=' + data.m, data, function (res) {
150                         s++
151                         if (res != null && res.length > 0) {
152                             for (var r in res) {
153                                 var key = res[r].key;
154                                 var nuu = FFF(array, key);
155                                 if (nuu >= 0) {
156                                     var h = array[nuu].value.concat(res[r].value);
157                                     array[nuu].value = h;
158                                 } else {
159                                     res[r].sort = sorct(key);
160                                     array.push(res[r]);
161                                 }
162                             }
163                         }
164                         if (s == data.num) {
165                             array = array.sort((a, b) => a.sort.localeCompare(b.sort, 'zh'))
c84bc9 166                             elem.index = elem.index > 2 ? 2 : elem.index;
08c706 167                             if (data.searchKey != null && data.searchKey != '') {
59940d 168                                 collapse = collapse[5];
08c706 169                             } else {
X 170                                 collapse = collapse.length > elem.index ? collapse[elem.index] : collapse[0];
171                             }
da43d6 172                             getHtml(array, id, elem, label, refresh, collapse);
X 173                         }
174                     }).error(function () {
175                         Tips('layui-icon layui-icon-face-surprised', '获取数据的时候出错了!', elem);
176                         return;
177                     });
178                 }
9f1481 179                 getCountNum(true);//刷新角标数字
da43d6 180             } catch (e) {
X 181                 Tips('layui-icon layui-icon-face-surprised', '数据处理异常!', elem);
182                 return;
183             }
9f1481 184         }
X 185         //加载角标数字总数
186         var getCountNum=function (isAsync) {
187             $.ajaxSettings.async=isAsync;//是否异步处理
188             $.post('/webmenu.do?m=msgNumV2',function (data) {
189                 if (data != null && data.count != null && data.count > 0) {
190                     let list = data.list;
191                     let t;
192                     let tab = $(".tab1ul li");
193                     for (let i = 0; i < list.length; i++) {
c602a2 194                         let color="layui-bg-blue";
9f1481 195                         switch (list[i].ActionType) {
X 196                             case '审核':
197                                 t = tab.eq(0);
c602a2 198                                 color="";
9f1481 199                                 break;
X 200                             case '在线交流':
201                                 t = tab.eq(2);
202                                 break;
203                             case '通知':
204                                 t = tab.eq(3);
205                                 break
206                             case '抄送我的':
207                                 t = tab.eq(4);
208                                 break
209                         }
210                         t.find("span").remove();
211                         if (list[i].ActionCount == 0) {
212                             continue;
213                         }
c602a2 214                         t.append("<span class=\"layui-badge "+color+"\">" + list[i].ActionCount + "</span>");
9f1481 215                     }
X 216                 }
217             })
da43d6 218         }
X 219         var getHtml = function (res, id, elem, label, refresh, collapse) {
220             var html = "";
c84bc9 221             let counts=[];
X 222             let htttt=function(val){
223                 let html = '';
224                 html += '<div class="itemv2">';
225                 html += '<div><img src="' + val.largImagePath + '"/></div>';
226                 html += '<ul>';
227                 html += '<li>' + val.topicText + '</li>';
228                 html += '<li>' + (val.DocStatusName != null && val.DocStatusName != "" ? val.DocStatusName + ':' : '单据状态:')
229                     + ((val.CurcheckerName != null && val.CurcheckerName != "") ? val.CurcheckerName : '') + '</li>';
230                 html += '<li>[' + ((val.DocType != null && val.DocType != "") ? val.DocType + " / " : "") + (val.EnterName != null ? val.EnterName : "") + '提交]';
231                 html += '<span style="float: right;">' + val.inserttime + '</span></li>';
232                 html += '</ul>';
233                 html += '</div>';
234                 return html;
235             }
da43d6 236             if (res.length > 0) {
59940d 237                 let num=0;//角标数
da43d6 238                 switch (data.m) {
X 239                     case 'msgbyType':
240                         for (var i in res) {
241                             var t = (res[i].key != null && res[i].key != "" ? res[i].key : "其他");
242                             html += '<div class="layui-colla-item">';
243                             html += '<h3 class="layui-colla-title" style="height:25px;line-height:25px;">' + t + '</h3>';
bd49ac 244                             html += '<div class="layui-colla-content layui-show">';//' + (i == nowback ? "layui-show" : (nowback == t ? "layui-show" : "")) + '">';
da43d6 245                             for (var j in res[i].value) {
X 246                                 var val = res[i].value[j];
247                                 html += '<div class="item" title="' + val.FormName + '" data-formid="' + val.FormId + '" data-type="' + t + '">';
c602a2 248                                 html += '<span class="layui-badge '+itemColor+'">' + val.FormIdCount + '</span>';
da43d6 249                                 html += '<img src="' + val.largImagePath + '" /><br><span class="formName">'
X 250                                     + (val.FormName.length > 5 ? val.FormName.substring(0, 5) + "..." : val.FormName) + '</span>';
251                                 html += '</div>';
59940d 252                                 num+=val.FormIdCount;
da43d6 253                             }
X 254                             html += '</div></div>';
255                         }
256                         break;
257                     case 'msgv2':
258                     case 'msgTime':
259                         for (var v in res) {
260                             html += '<div class="layui-colla-item">';
261                             html += '<h3 class="layui-colla-title" style="height:25px;line-height:25px;">' + (res[v].key != null && res[v].key != "" ? res[v].key : "其他") + '</h3>';
c84bc9 262                             html += '<div id="pii'+v+'" class="layui-colla-content collapse-height layui-show">';//' + (v == 0 ? "layui-show" : "") + '">';
X 263                             for (let j in res[v].value) {
264                                 let val = res[v].value[j];
265                                 html+=htttt(val);
da43d6 266                             }
c84bc9 267                             html += '</div><div id="pageC'+v+'" data-it="pii'+v+'" class="pageCont" style="padding: 0px 14px;"></div></div>';
X 268                             counts['pageC'+v]=res[v].value;
da43d6 269                         }
X 270                         break;
271                     default:
272                         html = Tips('layui-icon layui-icon-face-surprised', '切换排序类型时候出错了!');
273                         break;
59940d 274                 }
X 275                 if (Subscript != null) {
276                     if(data.m=="msgbyType"){
277                         $(Subscript).find("span").remove();
278                     }
279                     if (num != 0) {
280                         $(Subscript).append("<span class=\"layui-badge " + itemColor + "\" style='margin-top: 13px'>" + num + "</span>");
281                     }
da43d6 282                 }
X 283             } else {
284                 html = Tips('layui-icon layui-icon-face-surprised', '没有需要办理的事宜');
285             }
286             $(collapse).html(html);
287             element.render('collapse', id + '-' + elem.index);
c84bc9 288             $(collapse).find(".pageCont").each(function () {
X 289                 let pii = $(this).data("it");
290                 let data = counts[this.id];
291                 if (data != null && data.length > 5) {
292                     laypage.render({
293                         elem: this
294                         , limit: 5
295                         , count: data.length //数据总数
296                         , jump: function (obj,first) {
297                             //模拟渲染
298                             $(collapse).find("#" + pii)[0].innerHTML = function () {
299                                 // document.getElementById(pii).innerHTML = function(){
300                                 let html = ''
301                                     , thisData = data.concat().splice(obj.curr * obj.limit - obj.limit, obj.limit);
302                                 layui.each(thisData, function (index, item) {
303                                     html += htttt(item);
304                                 });
305                                 return html;
306                             }();
307                         }
308                     });
309                 }
310             })
da43d6 311             //刷新和返回便签。
X 312             $(refresh).html((label != undefined ? label : "") + '<a href="#" data-formid="' + data.formid + '">刷新</a>');
313             var ref = '';
314             if (id == 'tab2') {
315                 ref = 'refresh0';
316             } else if (id == 'tab3') {
317                 ref = 'refresh1';
d8ee82 318             } else if (id == 'tab4') {
59940d 319                 ref = 'refresh2';
X 320             } else if (id == 'tab5') {
321                 ref = 'refresh3';
322             } else if (id == 'tab6') {
d8ee82 323                 ref = 'refresh4';
X 324             }else {
da43d6 325                 ref = 'refresh' + elem.index;
X 326             }
327             element.render('breadcrumb', ref);
328             $('.item').on('click', function () {
329                 nowback = $(this).data('type');
330                 data.formid = $(this).data('formid');
331                 data.m = 'msgv2';
332                 data.num = Math.ceil(Number($(this).find('.layui-badge').html()) / 20);
333                 active(elem, '<a href="#" data-formid="0">返回</a>');
334             });
335             $('.refresh a').on('click', function () {
336                 data.formid = $(this).data('formid');
337                 if (data.formid == 0) {
338                     data.num = 1;
339                     data.m = sort;
340                     active(elem);
341                 } else {
342                     active(elem, '<a href="#" data-formid="0">返回</a>');
343                 }
344             });
345             nowelem = elem;
346         }
347         var FFF = function (array, key) {
348             for (var a in array) {
349                 var jsonValue = array[a].key;//JSON.parse(array[a]);
350                 if (jsonValue == key) {
351                     return parseInt(a);
352                 }
353             }
354             return -1;
355         }
356         var sorct = function (sor) {
357             var z = sor;
358             switch (sor) {
359                 case '今天':
360                     z = 'a';
361                     break
362                 case '昨天':
363                     z = 'b';
364                     break
365                 case '星期一':
366                     z = 'c';
367                     break
368                 case '星期二':
369                     z = 'd';
370                     break
371                 case '星期三':
372                     z = 'e';
373                     break
374                 case '星期四':
375                     z = 'f';
376                     break
377                 case '星期五':
378                     z = 'g';
379                     break
380                 case '星期六':
381                     z = 'h';
382                     break
383                 case '星期日':
384                     z = 'i';
385                     break
386                 case '上周':
387                     z = 'j';
388                     break
389                 case '更早':
390                     z = 'k';
391                     break
392             }
393             return z;
394         }
395         //搜索
396         var search = function () {
951b1b 397             data.searchKey = $('#demoReload').val();
X 398             if (data.searchKey==""){
399                 layer.alert("请输入关键词搜索");
400                 return;
401             }
59940d 402             var exist = $("li[lay-id='other']").length; //判断是否存在tab
da43d6 403             if (exist == 0) {
X 404                 //新增一个Tab项
405                 element.tabAdd('tab1', {
406                     title: '<img src="/FangYuanAdmin/myImages/png/0187.png" class="layui-nav-img"/>搜索结果<i class="layui-icon layui-unselect layui-tab-close">ဆ</i>'//标题
59940d 407                     , content: '<div class="layui-collapse" lay-filter="tab7"></div>'//内容 lay-accordion添加是手提琴模式
X 408                     , id: '6' //lay-id
da43d6 409                 });
X 410                 //关闭
411                 $('.layui-tab-close').on('click', function () {
59940d 412                     element.tabDelete('tab1', '6');
da43d6 413                     element.tabChange('tab1', '1');
X 414                 });
415             }
59940d 416             element.tabChange('tab1', '6');
da43d6 417         }
X 418         //提示模板
419         var Tips = function (c, m, collapse) {
420             var text = '<div class="mask"><i class="' + c + '"></i><span>' + m + '</span></div>';
421             if (collapse != undefined) {
422                 $(collapse).html(text);
423             } else {
424                 return text;
425             }
426         }
427         //跳转界面
428         postT219001 = function (s1, s2, s3, s4, s5) {
429             parent.addTab(s1, s2, s3, s4, s5);
59940d 430             setTimeout(function () {
X 431                 getCountNum(false);//刷新角标
432                 if (Subscript != null) {
433                     let num = $(Subscript).find("span").text();
434                     if (num != null && num > 0) {
435                         if (num == 1) {
436                             $(Subscript).find("span").remove();
437                         } else {
438                             $(Subscript).find("span").text(num - 1);
439                         }
440                     }
441                 }
442             }, 1000)
da43d6 443         }
X 444         //加载完后切换到对应类型。
445         element.tabChange('tab1', '1');
446     });
a6a76f 447 })