From 476d347ed3026c087badd8a424709765d77c7104 Mon Sep 17 00:00:00 2001 From: dk96 Date: Tue, 17 Dec 2024 19:09:32 +0800 Subject: [PATCH] updates --- BackEnd/api/babyRecList.ashx | 1 + BackEnd/api/babyRecList.ashx.cs | 81 ++++++++++ BackEnd/api/lineData.ashx | 1 + BackEnd/api/lineData.ashx.cs | 129 +++++++++++++++ BackEnd/assets/javascript/custom/userList.js | 160 ++++++++++++++++++- BackEnd/userList.aspx | 73 ++++++++- abbott_2024_event.csproj | 8 + bin/abbott_2024_event.dll | Bin 64000 -> 67584 bytes 8 files changed, 451 insertions(+), 2 deletions(-) create mode 100644 BackEnd/api/babyRecList.ashx create mode 100644 BackEnd/api/babyRecList.ashx.cs create mode 100644 BackEnd/api/lineData.ashx create mode 100644 BackEnd/api/lineData.ashx.cs diff --git a/BackEnd/api/babyRecList.ashx b/BackEnd/api/babyRecList.ashx new file mode 100644 index 0000000..da814e3 --- /dev/null +++ b/BackEnd/api/babyRecList.ashx @@ -0,0 +1 @@ +<%@ WebHandler Language="C#" CodeBehind="babyRecList.ashx.cs" Class="abbott_2024_event.BackEnd.api.babyRecList" %> diff --git a/BackEnd/api/babyRecList.ashx.cs b/BackEnd/api/babyRecList.ashx.cs new file mode 100644 index 0000000..477542b --- /dev/null +++ b/BackEnd/api/babyRecList.ashx.cs @@ -0,0 +1,81 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Web; +using System.Runtime.Serialization.Json; +using System.Web.SessionState; +using Dapper; +using Dapper.Contrib.Extensions; +using System.Data.SqlClient; +using System.IO.Compression; + +namespace abbott_2024_event.BackEnd.api +{ + /// + /// babyRec 的摘要描述 + /// + public class babyRecList : IHttpHandler + { + SqlConnection conn = new SqlConnection(globalClass.appsettings("DBConnectionString")); + public authToken authToken; + public void ProcessRequest(HttpContext context) + { + result objRet = new result(); + DataContractJsonSerializer json = new DataContractJsonSerializer(objRet.GetType()); + context.Response.ContentType = "application/json;charset=utf-8"; + context.Response.AddHeader("Access-Control-Allow-Origin", "*"); + + string acceptEncoding = context.Request.Headers["Accept-Encoding"].ToString().ToUpperInvariant(); + if (!String.IsNullOrEmpty(acceptEncoding)) + { + if (acceptEncoding.Contains("GZIP")) + { + //输出流头部GZIP压缩 + context.Response.AppendHeader("Content-encoding", "gzip"); + context.Response.Filter = new GZipStream(context.Response.Filter, CompressionMode.Compress); + } + else if (acceptEncoding.Contains("DEFLATE")) + { + //输出流头部DEFLATE压缩 + context.Response.AppendHeader("Content-encoding", "deflate"); + context.Response.Filter = new DeflateStream(context.Response.Filter, CompressionMode.Compress); + } + } + + authToken objAuth = new authToken(); + + if (!objAuth.user_isLogin) + { + objRet.ret = "no"; + objRet.err_code = "0001"; + objRet.message = "尚未登入,請登入後使用"; + json.WriteObject(context.Response.OutputStream, objRet); + return; + } + + string baby_uid = (context.Request["baby_uid"] == null) ? "" : context.Request["baby_uid"].ToString(); + + objRet.recs = conn.Query("select * from babyRec where babyData_uid = @babyData_uid order by babyRec_recdate desc, babyRec_months desc", new { babyData_uid = baby_uid }).ToList(); + + objRet.ret = "yes"; + json.WriteObject(context.Response.OutputStream, objRet); + return; + } + + public class result + { + public string ret = "no"; + public string err_code = "0000"; + public string message = ""; + public List recs = new List(); + } + + public bool IsReusable + { + get + { + return false; + } + } + } +} \ No newline at end of file diff --git a/BackEnd/api/lineData.ashx b/BackEnd/api/lineData.ashx new file mode 100644 index 0000000..4498366 --- /dev/null +++ b/BackEnd/api/lineData.ashx @@ -0,0 +1 @@ +<%@ WebHandler Language="C#" CodeBehind="lineData.ashx.cs" Class="abbott_2024_event.BackEnd.api.lineData" %> diff --git a/BackEnd/api/lineData.ashx.cs b/BackEnd/api/lineData.ashx.cs new file mode 100644 index 0000000..493b5bf --- /dev/null +++ b/BackEnd/api/lineData.ashx.cs @@ -0,0 +1,129 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Web; +using System.Runtime.Serialization.Json; +using System.Web.SessionState; +using Dapper; +using Dapper.Contrib.Extensions; +using System.Data.SqlClient; +using System.IO.Compression; + +namespace abbott_2024_event.BackEnd.api +{ + /// + /// lineData 的摘要描述 + /// + public class lineData : IHttpHandler + { + SqlConnection conn = new SqlConnection(globalClass.appsettings("DBConnectionString")); + public authToken authToken; + public void ProcessRequest(HttpContext context) + { + result objRet = new result(); + DataContractJsonSerializer json = new DataContractJsonSerializer(objRet.GetType()); + context.Response.ContentType = "application/json;charset=utf-8"; + context.Response.AddHeader("Access-Control-Allow-Origin", "*"); + + string acceptEncoding = context.Request.Headers["Accept-Encoding"].ToString().ToUpperInvariant(); + if (!String.IsNullOrEmpty(acceptEncoding)) + { + if (acceptEncoding.Contains("GZIP")) + { + //输出流头部GZIP压缩 + context.Response.AppendHeader("Content-encoding", "gzip"); + context.Response.Filter = new GZipStream(context.Response.Filter, CompressionMode.Compress); + } + else if (acceptEncoding.Contains("DEFLATE")) + { + //输出流头部DEFLATE压缩 + context.Response.AppendHeader("Content-encoding", "deflate"); + context.Response.Filter = new DeflateStream(context.Response.Filter, CompressionMode.Compress); + } + } + + authToken objAuth = new authToken(); + + if (!objAuth.user_isLogin) + { + objRet.ret = "no"; + objRet.err_code = "0001"; + objRet.message = "尚未登入,請登入後使用"; + json.WriteObject(context.Response.OutputStream, objRet); + return; + } + + string line_uid = (context.Request["line_uid"] == null) ? "" : context.Request["line_uid"].ToString(); + + lineUser lineUser = conn.QueryFirstOrDefault("select * from lineUser where line_uid = @line_uid", new { line_uid = line_uid }); + + if (lineUser == null) + { + objRet.ret = "no"; + objRet.err_code = "0002"; + objRet.message = "無此Line Uid資料!"; + json.WriteObject(context.Response.OutputStream, objRet); + return; + } + + List list = conn.Query("select * from babyData where line_uid = @line_uid", new { line_uid = line_uid }).ToList(); + + objRet.user.line_uid = line_uid; + objRet.user.line_displayName = lineUser.line_displayName; + + foreach (babyData babyData in list) { + baby objData = new baby(); + objData.baby_uid = babyData.babyData_uid; + objData.baby_gender = babyData.babyData_sexual; + objData.baby_birthday = babyData.babyData_birthday.ToString("yyyy/MM/dd"); + objData.baby_name = babyData.babyData_name; + + objRet.user.babyDatas.Add(objData); + } + + objRet.ret = "yes"; + + json.WriteObject(context.Response.OutputStream, objRet); + return; + } + + public class result + { + public string ret = "no"; + public string err_code = "0000"; + public string message = ""; + public userData user = new userData(); + } + + public class userData + { + public string line_uid { get; set; } = ""; + public string line_displayName { get; set; } = ""; + public string testdate { get; set; } = ""; + + public List babyDatas = new List(); + } + + public class baby + { + public string baby_uid { get; set; } = ""; + public string baby_name { get; set; } = ""; + public string baby_gender { get; set; } = ""; + public string baby_birthday { get; set; } = ""; + public string baby_age { get; set; } = ""; + public string baby_months { get; set; } = ""; + public string baby_testdate { get; set; } = ""; + + public string baby_height { get; set; } = ""; + public double baby_percent { get; set; } = 0; + } + + public bool IsReusable + { + get + { + return false; + } + } + } +} \ No newline at end of file diff --git a/BackEnd/assets/javascript/custom/userList.js b/BackEnd/assets/javascript/custom/userList.js index 0c746ea..850abdd 100644 --- a/BackEnd/assets/javascript/custom/userList.js +++ b/BackEnd/assets/javascript/custom/userList.js @@ -56,11 +56,94 @@ $(document).ready(function () { loadDataTable(); + initSubTable(); - + $('#baby_select').on('change', function () { + loadBabyRec(); + }); + }); +function loadBabyRec() { + var baby_uid = $('#baby_select').val(); + + var formData = { + baby_uid: baby_uid + } + + $.ajax({ + url: "api/babyRecList.ashx", + type: "POST", + data: formData, + success: function (data, textStatus, jqXHR) { + if (data.ret == "yes") { + $('#dt-responsive-baby').dataTable().fnClearTable(); + if (data.recs.length > 0) { + + $('#dt-responsive-baby').dataTable().fnAddData(data.recs); + } + + } else { + alert(data.message); + + } + }, + error: function (jqXHR, textStatus, errorThrown) { + alert('网絡或伺服器发生错误,请稍后重试!'); + } + }); +} + +function buttonClick(obj) { + var uid = obj.getAttribute('data-uid'); + + var formData = { + line_uid: uid + } + + $.ajax({ + url: "api/lineData.ashx", + type: "POST", + data: formData, + success: function (data, textStatus, jqXHR) { + if (data.ret == "yes") { + $('#LineTitle').val("Line 名稱:" + data.user.line_displayName + ", Line Uid:" + data.user.line_uid); + + $("#baby_select option").remove(); + + $.each(data.user.babyDatas, function (i, item) { + + var gender = ""; + + if (item.baby_gender == "M") { + gender = "男"; + } else { + gender = "女"; + } + + var babyTxt = item.baby_name + " (" + gender + "), 生日:" + item.baby_birthday; + + $("#baby_select").append($("").attr("value", item.baby_uid).text(babyTxt)); + }); + + loadBabyRec(); + + $('#clientHistoryListModal').modal('toggle'); + + } else { + alert(data.message); + + } + }, + error: function (jqXHR, textStatus, errorThrown) { + alert('网絡或伺服器发生错误,请稍后重试!'); + } + }); + + +} + function loadDataTable() { var dataTables = { init: function init() { @@ -236,3 +319,78 @@ function loadDataTable() { dataTables.init(); } +function initSubTable() { + $("#dt-responsive-baby").DataTable({ + dom: '<\'text-muted\'Bi>\n <\'table-fixed\'trl>\n <\'mt-4\'p>', + lengthChange: true, + lengthMenu: [[10, 25, 50, -1], [10, 25, 50, "All"]], + pageLength: 25, + buttons: [], + language: { + paginate: { + previous: '', + next: '' + }, + buttons: { + copyTitle: 'Data copied', + copyKeys: 'Use your keyboard or menu to select the copy command' + } + }, + deferRender: true, + rowId: 'babyRec_uid', + deferRender: true, + order: [[0, 'desc']], + columns: [ + { data: 'babyRec_recdate', className: 'align-middle text-left', orderable: true, searchable: false }, + { data: 'babyRec_yearMonthStr', className: 'align-middle text-left', orderable: true, searchable: false }, + { data: 'babyRec_height', className: 'align-middle text-left', orderable: true, searchable: false }, + { data: 'babyRec_inpercent', className: 'align-middle text-left', orderable: true, searchable: false } + ], + columnDefs: [ + { + targets: 0, + orderable: true, + searchable: false, + render: function render(data, type, row, meta) { + tMonth = row.babyRec_recMonth; + tDay = row.babyRec_recDay; + + if (tDay < 10) { + tDay = '0' + tDay; + } + + if (tMonth < 10) { + tMonth = '0' + tMonth; + } + + return row.babyRec_recYear + "/" + tMonth + "/" + tDay; + + + + } + }, + { + targets: 3, + orderable: false, + searchable: false, + render: function render(data, type, row, meta) { + + if (row.babyRec_inpercent > 97) { + return "> 97%"; + } else { + return row.babyRec_inpercent + "%" + } + + + } + } + + ], + initComplete: function () { + + }, + info: false, + ordering: true, + paging: true + }); +} \ No newline at end of file diff --git a/BackEnd/userList.aspx b/BackEnd/userList.aspx index ed723cc..06e5a32 100644 --- a/BackEnd/userList.aspx +++ b/BackEnd/userList.aspx @@ -118,8 +118,79 @@ + +
+ +
- + diff --git a/abbott_2024_event.csproj b/abbott_2024_event.csproj index 2be8026..ae05e28 100644 --- a/abbott_2024_event.csproj +++ b/abbott_2024_event.csproj @@ -13319,6 +13319,9 @@ + + babyRecList.ashx + chgPassword.ashx @@ -13331,6 +13334,9 @@ ipList.ashx + + lineData.ashx + signin.ashx @@ -17888,6 +17894,8 @@ + + Web.config diff --git a/bin/abbott_2024_event.dll b/bin/abbott_2024_event.dll index 07ca58b9e38cb8b824c7cc0a396a885b2a25cc5d..5e02001d561fc685e03a4e8f1b2b7bd39e9068e7 100644 GIT binary patch delta 26234 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 delta 23026 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