tender_list_order.js 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. 'use strict';
  2. /**
  3. *
  4. *
  5. * @author Mai
  6. * @date
  7. * @version
  8. */
  9. const tenderListOrder = (function () {
  10. let orderSetting = getLocalCache('zh-calc-tender-list-order');
  11. if (!orderSetting) orderSetting = 'name|up';
  12. function CompareStr (x, y) {
  13. // 根据mysql的GBK
  14. const regASC = /^[\x00-\x7F]/;
  15. if (regASC.test(x) || regASC.test(y)) {
  16. if (x > y) {
  17. return 1
  18. } else if (x < y) {
  19. return -1
  20. } else {
  21. return 0;
  22. }
  23. } else {
  24. return x.localeCompare(y, 'zh-CN');
  25. }
  26. }
  27. function reOrderTenders (orderStr) {
  28. if (orderStr) {
  29. orderSetting = orderStr;
  30. setLocalCache('zh-calc-tender-list-order', orderStr);
  31. }
  32. const orders = orderSetting.split('|');
  33. if (orders[0] === 'name') {
  34. tenders.sort(function (a, b) {
  35. // return orders[1] === 'up'
  36. // ? a[orders[0]].localeCompare(b[orders[0]], 'zh')
  37. // : -a[orders[0]].localeCompare(b[orders[0]], 'zh');
  38. return orders[1] === 'up'
  39. ? CompareStr(a[orders[0]], b[orders[0]])
  40. : CompareStr(b[orders[0]], a[orders[0]]);
  41. });
  42. } else if (orders[0] === 'create_time') {
  43. tenders.sort(function (a, b){
  44. return orders[1] === 'up'
  45. ? Date.parse(a[orders[0]]) - Date.parse(b[orders[0]])
  46. : Date.parse(b[orders[0]]) - Date.parse(a[orders[0]]);
  47. })
  48. }
  49. initTenderTree();
  50. $('.c-body').html(getTenderTreeHtml());
  51. localHideList();
  52. }
  53. function getOrderButton(field) {
  54. const orders = orderSetting.split('|');
  55. const button = field === orders[0]
  56. ? (orders[1] === 'up'
  57. ? '<i class="fa fa-sort-amount-asc" aria-hidden="true" onclick="tenderListOrder.reOrderTenders(\'' + field + '|down' + '\')"></i>'
  58. : '<i class="fa fa-sort-amount-desc" aria-hidden="true" onclick="tenderListOrder.reOrderTenders(\'' + field + '|up' + '\')"></i>')
  59. : '<i class="fa fa-sort" aria-hidden="true" onclick="tenderListOrder.reOrderTenders(\'' + field + '|up' + '\')"></i>';
  60. return '<a href="javascript:void(0)" class="btn btn-sm ml-1">' + button + '</a>';
  61. }
  62. return { reOrderTenders, getOrderButton }
  63. })();