tree.ashx 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. <%@ WebHandler Language="C#" Class="tree" %>
  2. using System;
  3. using System.Web;
  4. using System.Web.SessionState;
  5. using System.Data;
  6. using System.Text;
  7. using System.Collections;
  8. using System.Collections.Generic;
  9. using Newtonsoft.Json;
  10. using Newtonsoft.Json.Linq;
  11. using Curtain.DataAccess;
  12. using DK.XuWei.WebMes;
  13. /// <summary>
  14. /// 导航菜单
  15. /// xuwei create 2019-12-28
  16. /// </summary>
  17. public class tree : IHttpHandler, IReadOnlySessionState
  18. {
  19. public void ProcessRequest(HttpContext context)
  20. {
  21. context.Response.ContentType = "text/plain";
  22. using(IDataAccess conn = DataAccess.Create())
  23. {
  24. //按功能权限过滤显示树菜单(有子节点权限,不具备父节点权限,也要加进来)
  25. DataTable dt = conn.ExecuteDatatable(@"
  26. SELECT
  27. f.FUNCTIONCODE AS id,
  28. f.FUNCTIONLEVEL AS code,
  29. f.FUNCTIONNAME AS text,
  30. CASE
  31. WHEN
  32. --报表类
  33. (SUBSTR( FUNCTIONCODE, 1, 4) = '8070'
  34. AND LENGTH( FUNCTIONCODE ) = 6)
  35. --管理类
  36. OR
  37. (SUBSTR( FUNCTIONCODE, 1, 4) IN ('8090','8091','8092','8099')
  38. AND LENGTH( FUNCTIONCODE ) = 4)
  39. THEN
  40. 'closed'
  41. ELSE
  42. 'open'
  43. END AS state,
  44. f.URL AS url
  45. FROM
  46. TP_SYS_FUNCTION f
  47. WHERE
  48. f.IS_WEB = '1'
  49. AND valueflag = '1'
  50. AND
  51. (
  52. (f.FUNCTIONCODE IN (SELECT FUNCTIONCODE FROM TP_MST_USERRIGHT WHERE USERID = @USERID@ AND FUNCTIONCODE LIKE '80%'))
  53. OR (f.FUNCTIONCODE IN (SELECT SUBSTR( FUNCTIONCODE, 1, LENGTH( FUNCTIONCODE ) - 2 ) FROM TP_MST_USERRIGHT WHERE USERID = @USERID@ AND FUNCTIONCODE LIKE '80%'))
  54. OR (f.FUNCTIONCODE IN (SELECT SUBSTR( FUNCTIONCODE, 1, LENGTH( FUNCTIONCODE ) - 4 ) FROM TP_MST_USERRIGHT WHERE USERID = @USERID@ AND FUNCTIONCODE LIKE '80%'))
  55. OR (f.FUNCTIONCODE = '80')
  56. )
  57. ORDER BY
  58. f.FUNCTIONLEVEL,
  59. f.FUNCTIONCODE
  60. ",
  61. new CDAParameter("USERID",context.Session["userId"])
  62. );
  63. //添加动态报表菜单=================================
  64. //使用try容错,避免没有动态报表的出错
  65. //try
  66. //{
  67. // DataTable dtReport = conn.ExecuteDatatable(@"
  68. // SELECT
  69. // REPORTID AS id,
  70. // REPORTCODE AS code,
  71. // REPORTNAME AS text,
  72. // '/mes/dr/drmain/drmain_index.html?id='||REPORTID AS url
  73. // FROM
  74. // T_MST_DR_REPORT
  75. // WHERE
  76. // VALUEFLAG = '1'
  77. // ORDER BY
  78. // REPORTCODE
  79. // ",
  80. // new CDAParameter("USERID",context.Session["userId"])
  81. // );
  82. // //dt.Merge(dtReport);
  83. //}
  84. //catch
  85. //{
  86. //}
  87. //================================================
  88. string rootId = dt.Rows[0]["id"].ToString();
  89. string rootCode = dt.Rows[0]["code"].ToString();
  90. string rootText = dt.Rows[0]["text"].ToString();
  91. string children = Easyui.TableToEasyUITree(dt, rootCode);
  92. string jsonStr = "[{\"id\":\"" + rootId + "\",\"text\":\"" + rootText + "\"" + children + "}]";
  93. context.Response.Write(jsonStr);
  94. }
  95. }
  96. public bool IsReusable
  97. {
  98. get
  99. {
  100. return false;
  101. }
  102. }
  103. }