From 47d88278d3d3999d0f53c37027c1a8fc776f3fcb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=98=89=E7=A5=A5=20=E8=A9=B9?= Date: Mon, 18 Mar 2024 00:11:54 +0800 Subject: [PATCH] updates --- Controllers/ApiController.cs | 58 +++- Models/DbTableClass.cs | 19 ++ Models/kolProjectDetail.cs | 8 +- wwwroot/assets/javascript/custom/kollist.js | 310 +++++++++++++++++- .../assets/javascript/custom/projectlist.js | 2 + 5 files changed, 389 insertions(+), 8 deletions(-) diff --git a/Controllers/ApiController.cs b/Controllers/ApiController.cs index 84ac638..8b09f97 100644 --- a/Controllers/ApiController.cs +++ b/Controllers/ApiController.cs @@ -56,6 +56,34 @@ namespace Journeys_WantHome.Controllers this._httpContextAccessor = httpContextAccessor; } + [Route("kolProjectList")] + public ActionResult KolProjectList(IFormCollection obj) { + kolProjectListResult ret = new kolProjectListResult(); + authToken token = new authToken(this._httpContextAccessor); + if (token.user_isLogin == false) + { + HttpContext.Response.Cookies.Delete("token_key"); + ret.ret = "no"; + ret.err_code = "99999"; + ret.message = "非登入狀態!"; + return Content(JsonConvert.SerializeObject(ret), "application/json;charset=utf-8"); + } + + string kol_uid = obj["kol_uid"].ToString(); + + List kolProjects = conn.Query("select * from kolProject where kol_uid = @kol_uid order by kolProject_modifydate desc", new { kol_uid = kol_uid }).ToList(); + + foreach (kolProject item in kolProjects) + { + kolProjectDetail objItem = new kolProjectDetail(item.kolProject_uid); + ret.datas.Add(objItem); + } + + + ret.ret = "yes"; + return Content(JsonConvert.SerializeObject(ret), "application/json;charset=utf-8"); + } + [Route("kolProjectAddEditDelGet")] public ActionResult KolProjectAddEditDelGet(IFormCollection obj) { kolProjectResult ret = new kolProjectResult(); @@ -82,6 +110,24 @@ namespace Journeys_WantHome.Controllers string kolProjectImageArrayJson = obj["kolProjectImageArrayJson"].ToString().TrimEnd(','); string kolProject_memo = obj["kolProject_memo"].ToString(); + if (method == "get") { + + + kolProject kp = conn.QueryFirstOrDefault("select * from kolProject where kolProject_uid = @kolProject_uid", new { kolProject_uid = kolProject_uid }); + + if (kp == null) { + ret.ret = "no"; + ret.err_code = "10009"; + ret.message = "無此kolProject_uid資料!"; + return Content(JsonConvert.SerializeObject(ret), "application/json;charset=utf-8"); + } + + ret.data = new kolProjectDetail(kp.kolProject_uid); + ret.ret = "yes"; + return Content(JsonConvert.SerializeObject(ret), "application/json;charset=utf-8"); + + } + if (method == "add") { kolProject_uid = "kp_" + GlobalClass.CreateRandomCode(16); @@ -223,9 +269,11 @@ namespace Journeys_WantHome.Controllers conn.Insert(kolProjectLinks); conn.Insert(kolProjectImages); + + ret.data.kolProject = kp; ret.data.kolProjectEvaluates = kolProjectEvaluates; - ret.data.kolProjectPrices = kolProjectPrices; + ret.data.kolProjectPrices = conn.Query("select * from kolProjectPriceDetail where kolProject_uid = @kolProject_uid", new { kolProject_uid = kolProject_uid }).ToList(); ret.data.kolProjectLinks = kolProjectLinks; ret.data.kolProjectImages = kolProjectImages; ret.data.kolCooperateTypes = kolCooperateTypes; @@ -1204,6 +1252,14 @@ namespace Journeys_WantHome.Controllers } + public class kolProjectListResult + { + public string ret { get; set; } = "no"; + public string err_code { get; set; } = "0000"; + public string message { get; set; } = ""; + + public List datas { get; set; } = new List(); + } public class kolProjectResult { public string ret { get; set; } = "no"; diff --git a/Models/DbTableClass.cs b/Models/DbTableClass.cs index 6d7cd26..d9fea3f 100644 --- a/Models/DbTableClass.cs +++ b/Models/DbTableClass.cs @@ -20,6 +20,25 @@ public class DbTableClass public string kolProjectEvaluate_text { get; set; } = ""; } + [Table("kolProjectPriceDetail")] + public class kolProjectPriceDetail + { + [JsonIgnore] + [Key] + public int kolProjectPrice_sn { get; set; } + public string kolProjectPrice_uid { get; set; } = ""; + public string kolProject_uid { get; set; } = ""; + public string optionItem_uid { get; set; } = ""; + public string mediaItem_uid { get; set; } = ""; + public string kolProjectPrice_other { get; set; } = ""; + public string kolProjectPrice_num { get; set; } = ""; + public int kolProjectPrice_cost { get; set; } = 0; + public string kolProjectPrice_date { get; set; } = ""; + public DateTime kolProjectPrice_createdate { get; set; } = DateTime.Now; + public DateTime kolProjectPrice_modifydate { get; set; } = DateTime.Now; + public string optionItem_name { get; set; } = ""; + public string mediaItem_name { get; set; } = ""; + } [Table("kolProjectPrice")] public class kolProjectPrice diff --git a/Models/kolProjectDetail.cs b/Models/kolProjectDetail.cs index 5ff75a8..e6bc6a9 100644 --- a/Models/kolProjectDetail.cs +++ b/Models/kolProjectDetail.cs @@ -12,7 +12,7 @@ public class kolProjectDetail public kolProject kolProject = new kolProject(); public List kolProjectImages = new List(); public List kolProjectLinks = new List(); - public List kolProjectPrices = new List(); + public List kolProjectPrices = new List(); public List kolProjectEvaluates = new List(); public List kolCooperateTypes = new List(); public project project = new project(); @@ -23,11 +23,11 @@ public class kolProjectDetail } public kolProjectDetail(string kolProject_uid) { - kolProject = conn.QueryFirst("select * from kolProject where kolProject_uid = @kolProject_uid", new { kolProject_uid = kolProject_uid }); + kolProject = conn.QueryFirstOrDefault("select * from kolProject where kolProject_uid = @kolProject_uid", new { kolProject_uid = kolProject_uid }); - kolProjectImages = conn.Query("select * from kolProjectImages where kolProject_uid = @kolProject_uid", new { kolProject_uid = kolProject_uid }).ToList(); + kolProjectImages = conn.Query("select * from kolProjectImage where kolProject_uid = @kolProject_uid", new { kolProject_uid = kolProject_uid }).ToList(); kolProjectLinks = conn.Query("select * from kolProjectLink where kolProject_uid = @kolProject_uid", new { kolProject_uid = kolProject_uid }).ToList(); - kolProjectPrices = conn.Query("select * from kolProjectPrice where kolProject_uid = @kolProject_uid", new { kolProject_uid = kolProject_uid }).ToList(); + kolProjectPrices = conn.Query("select * from kolProjectPriceDetail where kolProject_uid = @kolProject_uid", new { kolProject_uid = kolProject_uid }).ToList(); kolProjectEvaluates = conn.Query("select * from kolProjectEvaluate where kolProject_uid = @kolProject_uid", new { kolProject_uid = kolProject_uid }).ToList(); kolCooperateTypes = conn.Query("select * from kolCooperateType where kolProject_uid = @kolProject_uid", new { kolProject_uid = kolProject_uid }).ToList(); diff --git a/wwwroot/assets/javascript/custom/kollist.js b/wwwroot/assets/javascript/custom/kollist.js index dea763f..530c49e 100644 --- a/wwwroot/assets/javascript/custom/kollist.js +++ b/wwwroot/assets/javascript/custom/kollist.js @@ -24,6 +24,7 @@ $(document).ready(function () { loadprojectList(); clearKolProjectTable(); initSubPhotoUpload(); + loadSubDataTable(); $('#kolSaveBtn').on('click', function () { var method = $('#method').val(); @@ -384,7 +385,7 @@ $(document).ready(function () { type: "post", data: formData, success: function (data, textStatus, jqXHR) { - var obj = data.kol; + var obj = data.data; if (data.ret == "yes") { if (method == "add") { @@ -392,7 +393,7 @@ $(document).ready(function () { } if (method == "edit") { - kolProjectTable.fnUpdate(obj, mainPos); + kolProjectTable.fnUpdate(obj, kolProjectPos); } $('#clientNewKolProjectModal').modal('toggle'); @@ -834,6 +835,158 @@ $(document).ready(function () { dataTables.init(); } + function loadSubDataTable() { + var dataTablesKolProject = { + init: function init() { + + this.bindUIActions(); + }, + bindUIActions: function bindUIActions() { + + // event handlers + this.table = this.handleDataTables(); + + // add buttons + //this.table.buttons().container().appendTo('#dt-buttons').unwrap(); + }, + handleDataTables: function handleDataTables() { + //$('#myTable').append(""); + return $('#dt-responsive-kolProject').DataTable({ + dom: '<\'text-muted\'Bif>\n <\'table-responsive\'trl>\n <\'mt-4\'p>', + lengthChange: false, + lengthMenu: [[25, 50, 100, -1], [25, 50, 100, "All"]], + pageLength: 25, + paging: false, + buttons: [ + ], + language: { + paginate: { + previous: '', + next: '' + }, + buttons: { + copyTitle: 'Data copied', + copyKeys: 'Use your keyboard or menu to select the copy command' + } + }, + autoWidth: false, + rowId: 'kolProject.kolProject_uid', + deferRender: true, + initComplete: function () { + $('#dt-responsive-kolProject').on('click', 'button', function () { + kolProjectTableButtonClick(this); + }); + }, + order: [[4, 'desc']], + info: false, + search: "搜尋:", + searching: false, + columnDefs: [ + { + targets: 0, + className: 'align-middle text-left', + orderable: false, + searchable: true, + render: function render(data, type, row, meta) { + + + return row.project.project_name; + + } + }, + { + targets: 1, + className: 'align-middle text-left', + orderable: false, + searchable: false, + render: function render(data, type, row, meta) { + + if (row.kolProject.kolProject_isExec == 'Y') { + return '合作執行'; + } + + if (row.kolProject.kolProject_isExec == 'N') { + if (row.kolProject.kolProject_noExecReason == '') { + return '未合作'; + } else { + return '未合作 (' + row.kolProject.kolProject_noExecReason + ')'; + } + } + + return ''; + + } + }, { + targets: 2, + orderable: false, + searchable: true, + render: function render(data, type, row, meta) { + var retTxt = ''; + $.each(row.kolProjectEvaluates, function () { + retTxt = retTxt + this.kolProjectEvaluate_text + ", "; + }); + + retTxt = retTxt.replace(/,\s*$/, ""); + + return retTxt; + } + }, { + targets: 3, + orderable: false, + searchable: true, + render: function render(data, type, row, meta) { + + + return row.kolProject.user_name; + } + }, { + targets: 4, + orderable: false, + searchable: true, + render: function render(data, type, row, meta) { + + return (new Date(row.kolProject.kolProject_modifydate)).format("yyyy/MM/dd hh:mm:ss"); + + } + }, { + targets: 5, + orderable: false, + searchable: false, + render: function render(data, type, row, meta) { + var ret = ''; + + ret += ''; + ret += ''; + return ret; + } + } + + ], + + }); + }, + handleSearchRecords: function handleSearchRecords() { + var self = this; + + $('#table-search, #filterBy').on('keyup change focus', function (e) { + var filterBy = $('#filterBy').val(); + var hasFilter = filterBy !== ''; + var value = $('#table-search').val(); + + self.table.search('').columns().search('').draw(); + + if (hasFilter) { + self.table.columns(filterBy).search(value).draw(); + } else { + self.table.search(value).draw(); + } + + }); + } + } + + dataTablesKolProject.init(); + } var url = "/Api/KolPhotoUpload"; @@ -987,6 +1140,126 @@ function loadCooperateItem() { }); } +function kolProjectTableButtonClick(obj) { + var type = obj.getAttribute('data-method'); + var uid = obj.getAttribute('data-uid'); + + kolProjectTable = $('#dt-responsive-kolProject').dataTable(); + kolProjectRowID = $('#' + uid); + kolProjectPos = kolProjectTable.fnGetPosition($('#' + uid)[0]); + + if (type == "edit") { + $('#kolProject_method').val('edit'); + $('#kolProject_uid').val(uid); + + var formData = { + method: "get", + kolProject_uid: uid + } + + $.ajax({ + url: "/Api/kolProjectAddEditDelGet", + type: "post", + data: formData, + success: function (data, textStatus, jqXHR) { + if (data.ret == "yes") { + clearKolProjectTable(); + + var obj = data.data; + $('#kolProject_method').val('edit'); + $('#kolProject_uid').val(uid); + $('#project_year').val(obj.project.project_year).trigger('change'); + $('#project_month').val(obj.project.project_month).trigger('change'); + + setTimeout(function () { $('#project_select').val(obj.project.project_uid).trigger('change'); }, 500); + + $.each(obj.kolCooperateTypes, function () { + $("input:checkbox[value='" + this.optionItem_uid + "']").prop('checked', true); + }); + + $.each(obj.kolProjectPrices, function () { + var trHtml = ""; + trHtml += ''; + trHtml += ' ' + this.optionItem_name + ' '; + trHtml += ' ' + this.mediaItem_name + ' '; + trHtml += ' ' + this.kolProjectPrice_num + ' '; + trHtml += ' ' + AppendComma(this.kolProjectPrice_cost) + ' '; + trHtml += ' ' + this.kolProjectPrice_date + ' '; + trHtml += ' ' + this.kolProjectPrice_other + ' '; + trHtml += ' ' + this.optionItem_uid + ' '; + trHtml += ' ' + this.mediaItem_uid + ' '; + trHtml += ' '; + trHtml += ' '; + trHtml += ' '; + trHtml += ' '; + trHtml += ' '; + trHtml += ''; + + $('#price_table tbody').append(trHtml); + }); + + $("input[name=kolProject_isExec][value=" + obj.kolProject.kolProject_isExec + "]").prop('checked', true).trigger('change'); + $('#kolProject_noExecReason').val(obj.kolProject.kolProject_noExecReason); + + $.each(obj.kolProjectEvaluates, function (key, value) { + $("input:checkbox[value='" + value.kolProjectEvaluate_text + "']").prop('checked', true); + }); + + $.each(obj.kolProjectLinks, function () { + var trHtml = ""; + trHtml += ''; + trHtml += ' ' + this.kolProjectLink_text + ''; + trHtml += ' ' + this.kolProjectLink_url + ' '; + trHtml += ' ' + this.kolProjectLink_text + ' '; + + trHtml += ' '; + trHtml += ' '; + trHtml += ' '; + trHtml += ' '; + trHtml += ''; + + $('#link_table tbody').append(trHtml); + }); + + $.each(obj.kolProjectImages, function () { + var ret = ''; + ret += '
'; + ret += ' '; + ret += '
'; + + var trHtml = ""; + trHtml += ''; + trHtml += ' ' + ret + ' '; + + trHtml += ' ' + this.kolProjectImage_desc + ' '; + trHtml += ' '; + trHtml += ' '; + trHtml += ' '; + trHtml += ' '; + trHtml += ''; + + $('#cut_table tbody').append(trHtml); + }); + + $('#kolProject_memo').val(obj.kolProject.kolProject_memo); + + + + $('#clientNewKolProjectModal').modal('toggle'); + } else { + alert(data.message); + + if (data.err_code == "9999") { + location.href = "/Home/Index"; + } + } + }, + error: function (jqXHR, textStatus, errorThrown) { + alert('網路或伺服器發生錯誤,請稍後重試!'); + } + }); + } +} function buttonPhotoClick(obj) { photoTr = $(obj).closest('tr'); @@ -1091,7 +1364,38 @@ function buttonClick2(obj) { if (type == "case") { $('#kolProject_kol_uid').val(uid); - $('#clientProjectModal').modal('toggle'); + + + var formData = { + kol_uid: uid + } + + $.ajax({ + url: "/Api/kolProjectList", + type: "post", + data: formData, + success: function (data, textStatus, jqXHR) { + if (data.ret == "yes") { + $('#dt-responsive-kolProject').dataTable().fnClearTable(); + if (data.datas.length > 0) { + + $('#dt-responsive-kolProject').dataTable().fnAddData(data.datas); + + kolProjectTable = $('#dt-responsive-kolProject').dataTable(); + $('#clientProjectModal').modal('toggle'); + } + } else { + alert(data.message); + + if (data.err_code == "9999") { + location.href = "/Home/Index"; + } + } + }, + error: function (jqXHR, textStatus, errorThrown) { + alert('網路或伺服器發生錯誤,請稍後重試!'); + } + }); } if (type == "del") { diff --git a/wwwroot/assets/javascript/custom/projectlist.js b/wwwroot/assets/javascript/custom/projectlist.js index e703bcf..f54a4ba 100644 --- a/wwwroot/assets/javascript/custom/projectlist.js +++ b/wwwroot/assets/javascript/custom/projectlist.js @@ -342,6 +342,8 @@ $(document).ready(function () { dataTables.init(); } + + }); function buttonClick2(obj) {