From 1f8b1b7172e3f0df56c554ac64310ecfde64c771 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=98=89=E7=A5=A5=20=E8=A9=B9?= Date: Thu, 1 Feb 2024 18:59:15 +0800 Subject: [PATCH] =?UTF-8?q?update=20new=20=E5=AA=92=E9=AB=94=E8=A6=8F?= =?UTF-8?q?=E6=A0=BC=E7=B6=AD=E8=AD=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Controllers/ApiController.cs | 4 + Controllers/AuthApiController.cs | 301 +++++++++++++++++- Controllers/HomeController.cs | 16 + Journeys_WantHome.csproj | 6 +- Models/DbTableClass.cs | 16 + Models/kolMediaDetail.cs | 16 +- Models/mediaItemDetail.cs | 57 ++++ Views/Home/MediaItemList.cshtml | 77 +++++ Views/Shared/_LooperLayout.cshtml | 3 + .../assets/javascript/custom/mediaItemlist.js | 279 ++++++++++++++++ .../assets/javascript/custom/optionlist.js | 2 +- 11 files changed, 771 insertions(+), 6 deletions(-) create mode 100644 Models/mediaItemDetail.cs create mode 100644 Views/Home/MediaItemList.cshtml create mode 100644 wwwroot/assets/javascript/custom/mediaItemlist.js diff --git a/Controllers/ApiController.cs b/Controllers/ApiController.cs index 119ee73..6920cdb 100644 --- a/Controllers/ApiController.cs +++ b/Controllers/ApiController.cs @@ -56,6 +56,8 @@ namespace Journeys_WantHome.Controllers this._httpContextAccessor = httpContextAccessor; } + + [Route("updateTags")] public ActionResult UpdateTags(IFormCollection obj) { updatTagResult ret = new updatTagResult(); @@ -911,6 +913,8 @@ namespace Journeys_WantHome.Controllers } + + public class updatTagResult { public string ret { get; set; } = "no"; public string err_code { get; set; } = "0000"; diff --git a/Controllers/AuthApiController.cs b/Controllers/AuthApiController.cs index 17ec2a2..88b9027 100644 --- a/Controllers/AuthApiController.cs +++ b/Controllers/AuthApiController.cs @@ -59,6 +59,289 @@ namespace Journeys_WantHome.Controllers } + [Route("mediaSpecOrder")] + public ActionResult MediaSpecOrder(IFormCollection obj) + { + signinResult ret = new signinResult(); + + 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"); + } + + if (token.user_perm != "system") + { + ret.ret = "no"; + ret.err_code = "90001"; + ret.message = "此帳號無此api使用權限!"; + return Content(JsonConvert.SerializeObject(ret), "application/json;charset=utf-8"); + } + + string optionItem_uid = obj["optionItem_uid"].ToString(); + string orderJson = obj["order_json"].ToString(); + + if (optionItem_uid == "") + { + ret.ret = "no"; + ret.err_code = "00001"; + ret.message = "無option_uid資料!"; + return Content(JsonConvert.SerializeObject(ret), "application/json;charset=utf-8"); + } + + if (orderJson == "") + { + ret.ret = "no"; + ret.err_code = "00002"; + ret.message = "無order_json資料!"; + return Content(JsonConvert.SerializeObject(ret), "application/json;charset=utf-8"); + } + + dynamic orderObj; + + try + { + orderObj = JsonConvert.DeserializeObject(orderJson); + } + catch (Exception ex) + { + ret.ret = "no"; + ret.err_code = "00003"; + ret.message = "json文字轉成物件失敗 " + ex.Message; + return Content(JsonConvert.SerializeObject(ret), "application/json;charset=utf-8"); + + } + + int intOrder = 1; + + foreach (dynamic tmpObj in orderObj) + { + if (tmpObj.id != null) + { + string mediaItem_uid = tmpObj.id; + + mediaItem tmpItem = conn.QueryFirstOrDefault("select * from mediaItem where mediaItem_uid = @mediaItem_uid and optionItem_uid = @optionItem_uid", new { mediaItem_uid = mediaItem_uid, optionItem_uid = optionItem_uid }); + + if (tmpItem != null) + { + tmpItem.mediaItem_order = intOrder; + conn.Update(tmpItem); + } + + intOrder++; + } + + } + + ret.ret = "yes"; + + return Content(JsonConvert.SerializeObject(ret), "application/json;charset=utf-8"); + } + + [Route("addEditDelSpec")] + public ActionResult AddEditDelSpec(IFormCollection obj) + { + mediaSpecResult ret = new mediaSpecResult(); + + 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"); + } + + if (token.user_perm != "system") + { + ret.ret = "no"; + ret.err_code = "90001"; + ret.message = "此帳號無此api使用權限!"; + return Content(JsonConvert.SerializeObject(ret), "application/json;charset=utf-8"); + } + + string mediaItem_uid = obj["mediaItem_uid"].ToString(); + string optionItem_uid = obj["optionItem_uid"].ToString(); + string mediaItem_name = obj["mediaItem_name"].ToString(); + string method = obj["method"].ToString(); + + + if (optionItem_uid == "") + { + ret.ret = "no"; + ret.err_code = "00001"; + ret.message = "無optionItem_uid資料!"; + return Content(JsonConvert.SerializeObject(ret), "application/json;charset=utf-8"); + } + + if (method == "") + { + ret.ret = "no"; + ret.err_code = "0002"; + ret.message = "無method資料!"; + return Content(JsonConvert.SerializeObject(ret), "application/json;charset=utf-8"); + } + + if (method == "get") + { + mediaItem item = conn.QueryFirstOrDefault("select * from mediaItem where mediaItem_ishide = 'N' and mediaItem_uid = @mediaItem_uid and optionItem_uid = @optionItem_uid", new { mediaItem_uid = mediaItem_uid, optionItem_uid = optionItem_uid }); + + if (item == null) + { + ret.ret = "no"; + ret.err_code = "0003"; + ret.message = "無此筆資料!"; + return Content(JsonConvert.SerializeObject(ret), "application/json;charset=utf-8"); + } + + ret.ret = "yes"; + ret.mediaItem = item; + return Content(JsonConvert.SerializeObject(ret), "application/json;charset=utf-8"); + } + + if (method == "add") + { + if (mediaItem_name == "") + { + ret.ret = "no"; + ret.err_code = "0004"; + ret.message = "無項目名稱!"; + return Content(JsonConvert.SerializeObject(ret), "application/json;charset=utf-8"); + } + + mediaItem item = conn.QueryFirstOrDefault("select * from mediaItem where mediaItem_ishide = 'N' and optionItem_uid = @optionItem_uid and mediaItem_name = @mediaItem_name", new { optionItem_uid = optionItem_uid, mediaItem_name = mediaItem_name }); + + if (item != null) + { + ret.ret = "no"; + ret.err_code = "0005"; + ret.message = "此項目名稱已存在!"; + return Content(JsonConvert.SerializeObject(ret), "application/json;charset=utf-8"); + } + + List itemsList = conn.Query("select * from mediaItem where mediaItem_ishide = 'N' and optionItem_uid = @optionItem_uid", new { optionItem_uid = optionItem_uid }).ToList(); + + mediaItem_uid = "mitm_" + GlobalClass.CreateRandomCode(8); + item = new mediaItem(); + + item.mediaItem_uid = mediaItem_uid; + item.optionItem_uid = optionItem_uid; + item.mediaItem_name = mediaItem_name; + item.mediaItem_ishide = "N"; + item.mediaItem_userId = token.user_id; + item.mediaItem_order = itemsList.Count + 1; + + conn.Insert(item); + + ret.ret = "yes"; + ret.mediaItem = item; + return Content(JsonConvert.SerializeObject(ret), "application/json;charset=utf-8"); + } + + if (method == "edit") + { + if (mediaItem_name == "") + { + ret.ret = "no"; + ret.err_code = "0004"; + ret.message = "無項目名稱!"; + return Content(JsonConvert.SerializeObject(ret), "application/json;charset=utf-8"); + } + + mediaItem item = conn.QueryFirstOrDefault("select * from mediaItem where mediaItem_ishide = 'N' and optionItem_uid = @optionItem_uid and mediaItem_name = @mediaItem_name and mediaItem_uid <> @mediaItem_uid", new { optionItem_uid = optionItem_uid, mediaItem_name = mediaItem_name, mediaItem_uid = mediaItem_uid }); + + if (item != null) + { + ret.ret = "no"; + ret.err_code = "0005"; + ret.message = "此修改後項目名稱已被使用!"; + return Content(JsonConvert.SerializeObject(ret), "application/json;charset=utf-8"); + } + + mediaItem editItem = conn.QueryFirstOrDefault("select * from mediaItem where mediaItem_ishide = 'N' and mediaItem_uid = @mediaItem_uid and optionItem_uid = @optionItem_uid", new { mediaItem_uid = mediaItem_uid, optionItem_uid = optionItem_uid }); + + if (editItem == null) + { + ret.ret = "no"; + ret.err_code = "0003"; + ret.message = "無此筆資料!"; + return Content(JsonConvert.SerializeObject(ret), "application/json;charset=utf-8"); + } + + editItem.mediaItem_name = mediaItem_name; + editItem.mediaItem_userId = token.user_id; + editItem.mediaItem_modifydate = DateTime.Now; + + conn.Update(editItem); + ret.ret = "yes"; + ret.mediaItem = editItem; + return Content(JsonConvert.SerializeObject(ret), "application/json;charset=utf-8"); + } + + if (method == "del") + { + mediaItem editItem = conn.QueryFirstOrDefault("select * from mediaItem where mediaItem_ishide = 'N' and mediaItem_uid = @mediaItem_uid and optionItem_uid = @optionItem_uid", new { mediaItem_uid = mediaItem_uid, optionItem_uid = optionItem_uid }); + + if (editItem == null) + { + ret.ret = "no"; + ret.err_code = "0003"; + ret.message = "無此筆資料!"; + return Content(JsonConvert.SerializeObject(ret), "application/json;charset=utf-8"); + } + + editItem.mediaItem_userId = token.user_id; + editItem.mediaItem_modifydate = DateTime.Now; + editItem.mediaItem_ishide = "Y"; + + conn.Update(editItem); + ret.ret = "yes"; + + return Content(JsonConvert.SerializeObject(ret), "application/json;charset=utf-8"); + } + + return Content(JsonConvert.SerializeObject(ret), "application/json;charset=utf-8"); + } + + [Route("queryMediaSpecs")] + public ActionResult QueryMediaSpecs(IFormCollection obj) + { + mediaItemResult ret = new mediaItemResult(); + + 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"); + } + + if (token.user_perm != "system") + { + ret.ret = "no"; + ret.err_code = "90001"; + ret.message = "此帳號無此api使用權限!"; + return Content(JsonConvert.SerializeObject(ret), "application/json;charset=utf-8"); + } + + List mediaList = conn.Query("select * from optionItem where option_uid = 'media' and optionItem_ishide = 'N' order by optionItem_order").ToList(); + + foreach (optionItem item in mediaList) + { + mediaItemDetail mediaItemDetail = new mediaItemDetail(item); + ret.mediaSpecList.Add(mediaItemDetail); + } + ret.ret = "yes"; + return Content(JsonConvert.SerializeObject(ret), "application/json;charset=utf-8"); + } + [Route("optionItemOrder")] public ActionResult OptionItemOrder(IFormCollection obj) { signinResult ret = new signinResult(); @@ -870,8 +1153,16 @@ namespace Journeys_WantHome.Controllers return Content(JsonConvert.SerializeObject(ret), "application/json;charset=utf-8"); - } + } + public class mediaItemResult + { + public string ret { get; set; } = "no"; + public string err_code { get; set; } = "0000"; + public string message { get; set; } = ""; + + public List mediaSpecList = new List(); + } public class signinResult { public string ret = "no"; @@ -918,5 +1209,13 @@ namespace Journeys_WantHome.Controllers public string message = ""; public optionItem optionItem = new optionItem(); } + + public class mediaSpecResult + { + public string ret = "no"; + public string err_code = "0000"; + public string message = ""; + public mediaItem mediaItem = new mediaItem(); + } } } diff --git a/Controllers/HomeController.cs b/Controllers/HomeController.cs index 45dd89c..5aef589 100644 --- a/Controllers/HomeController.cs +++ b/Controllers/HomeController.cs @@ -52,6 +52,22 @@ namespace Journeys_WantHome.Controllers return View(); } + public IActionResult MediaItemList() + { + if (checkToken() == false) + { + HttpContext.Response.Cookies.Delete("token_key"); + return Redirect("~/Root/Login"); + } + + if (this._objToken.user_perm != "system") + { + return Redirect("~/"); + } + + return View(); + } + public IActionResult OptionList() { if (checkToken() == false) diff --git a/Journeys_WantHome.csproj b/Journeys_WantHome.csproj index b195a6c..45e6132 100644 --- a/Journeys_WantHome.csproj +++ b/Journeys_WantHome.csproj @@ -44,13 +44,13 @@ - + - - + + diff --git a/Models/DbTableClass.cs b/Models/DbTableClass.cs index dca7d9e..857413e 100644 --- a/Models/DbTableClass.cs +++ b/Models/DbTableClass.cs @@ -8,6 +8,22 @@ using Newtonsoft.Json.Linq; public class DbTableClass { + [Table("mediaItem")] + public class mediaItem + { + [JsonIgnore] + [Key] + public int mediaItem_sn { get; set; } + public string mediaItem_uid { get; set; } = ""; + public string optionItem_uid { get; set; } = ""; + public string mediaItem_name { get; set; } = ""; + public string mediaItem_ishide { get; set; } = "N"; + public int mediaItem_order { get; set; } = 999; + public DateTime mediaItem_createdate { get; set; } = DateTime.Now; + public DateTime mediaItem_modifydate { get; set; } = DateTime.Now; + public string mediaItem_userId { get; set; } = ""; + } + [Table("kolTag")] public class kolTag { diff --git a/Models/kolMediaDetail.cs b/Models/kolMediaDetail.cs index f80c21f..6ba3207 100644 --- a/Models/kolMediaDetail.cs +++ b/Models/kolMediaDetail.cs @@ -13,6 +13,8 @@ public class kolMediaDetail : kolMedia public string updateResult { get; set; } = ""; + public List mediaSpecItems { get; set; } = new List(); + private kolMedia _kolMedia; public kolMediaDetail() @@ -20,7 +22,7 @@ public class kolMediaDetail : kolMedia _kolMedia = new kolMedia(); } - public kolMediaDetail(string kolMakeup_uid) + public kolMediaDetail(string kolMedia_uid) { _kolMedia = conn.QueryFirstOrDefault("select * from kolMedia where kolMedia_uid = @kolMedia_uid", new { kolMedia_uid = kolMedia_uid }); @@ -44,6 +46,8 @@ public class kolMediaDetail : kolMedia this.option_name = result.option_name; this.optionItem_name = result.optionItem_name; } + + loadMediaItem(kolMedia_uid); } else { @@ -73,6 +77,16 @@ public class kolMediaDetail : kolMedia this.option_name = result.option_name; this.optionItem_name = result.optionItem_name; } + + loadMediaItem(kolMedia.optionItem_uid); + } + + void loadMediaItem(string kolMedia_uid) { + + List mediaItems = conn.Query("select * from mediaItem where mediaItem_ishide = 'N' and optionItem_uid = @optionItem_uid order by mediaItem_order", new { optionItem_uid = kolMedia_uid}).ToList(); + + mediaSpecItems = mediaItems; + } public bool dataUpdate() diff --git a/Models/mediaItemDetail.cs b/Models/mediaItemDetail.cs new file mode 100644 index 0000000..dfcb7da --- /dev/null +++ b/Models/mediaItemDetail.cs @@ -0,0 +1,57 @@ +using Dapper; +using Dapper.Contrib.Extensions; +using System.Data.SqlClient; +using static DbTableClass; +public class mediaItemDetail : optionItem +{ + DbConn dbConn = new DbConn(); + SqlConnection conn = new SqlConnection(GlobalClass.appsettings("ConnectionStrings:SQLConnectionString")); + + public List mediaSpecList = new List(); + + private optionItem _optionItem; + public mediaItemDetail() { + _optionItem = new optionItem(); + } + + public mediaItemDetail(string _optionItem_uid) { + + _optionItem = conn.QueryFirstOrDefault("select * from optionItem where optionItem_uid = @optionItem_uid", new { optionItem_uid = _optionItem_uid }); + + if (_optionItem != null) + { + Type dataType = _optionItem.GetType(); + + foreach (var prop in dataType.GetProperties()) + { + string propName = prop.Name; + var valueProperty = dataType.GetProperty(propName); + object propValue = valueProperty.GetValue(_optionItem, null); + + this.GetType().GetProperty(propName).SetValue(this, propValue); + } + + mediaSpecList = conn.Query("select * from mediaItem where mediaItem_ishide = 'N' and optionItem_uid = @optionItem_uid order by mediaItem_order", new { optionItem_uid = _optionItem_uid}).ToList(); + } + else { + _optionItem = new optionItem(); + } + } + + public mediaItemDetail(optionItem _obj) { + _optionItem = _obj; + + Type dataType = _optionItem.GetType(); + + foreach (var prop in dataType.GetProperties()) + { + string propName = prop.Name; + var valueProperty = dataType.GetProperty(propName); + object propValue = valueProperty.GetValue(_optionItem, null); + + this.GetType().GetProperty(propName).SetValue(this, propValue); + } + + mediaSpecList = conn.Query("select * from mediaItem where mediaItem_ishide = 'N' and optionItem_uid = @optionItem_uid order by mediaItem_order", new { optionItem_uid = _optionItem.optionItem_uid }).ToList(); + } +} diff --git a/Views/Home/MediaItemList.cshtml b/Views/Home/MediaItemList.cshtml new file mode 100644 index 0000000..38d7860 --- /dev/null +++ b/Views/Home/MediaItemList.cshtml @@ -0,0 +1,77 @@ +@* + For more information on enabling MVC for empty projects, visit https://go.microsoft.com/fwlink/?LinkID=397860 +*@ +@{ + Layout = "_LooperLayout"; +} + +@section Style { + +} + +@section Script { + + + +} + +
+ +
+ +

報價規格選項維護

+
+ +
+ + + +
+ +
+
+
+ + +
+ +
\ No newline at end of file diff --git a/Views/Shared/_LooperLayout.cshtml b/Views/Shared/_LooperLayout.cshtml index 6b15c75..6bad6fe 100644 --- a/Views/Shared/_LooperLayout.cshtml +++ b/Views/Shared/_LooperLayout.cshtml @@ -144,6 +144,9 @@ + diff --git a/wwwroot/assets/javascript/custom/mediaItemlist.js b/wwwroot/assets/javascript/custom/mediaItemlist.js new file mode 100644 index 0000000..f32de76 --- /dev/null +++ b/wwwroot/assets/javascript/custom/mediaItemlist.js @@ -0,0 +1,279 @@ +var tmpNestableObj; +var tmpNestableItem; + +$(document).ready(function () { + + loadMediaCard(); + + $('#optionItemDialogSaveBtn').click(function () { + var method = $('#method').val(); + var mediaItem_uid = $('#mediaItem_uid').val(); + var optionItem_uid = $('#optionItem_uid').val(); + var mediaItem_name = $('#mediaItem_name').val(); + + if (method == 'add') { + if (mediaItem_name == '') { + alert('請輸入項目名稱!'); + return; + } + + var formData = { + optionItem_uid: optionItem_uid, + mediaItem_name: mediaItem_name, + method: method + } + + $.ajax({ + url: "/AuthApi/addEditDelSpec", + type: "post", + data: formData, + success: function (data, textStatus, jqXHR) { + if (data.ret == "yes") { + var obj = data.mediaItem; + + tmpNestableObj.children().append(optionItemHtml(obj)); + + $('#optionItemModal').modal('toggle'); + + } else { + alert(data.message); + + if (data.err_code == "99999") { + location.href = "/Root/Login"; + } + } + }, + error: function (jqXHR, textStatus, errorThrown) { + alert('網路或伺服器發生錯誤,請稍後重試!'); + } + }); + } + + if (method == 'edit') { + if (mediaItem_name == '') { + alert('請輸入項目名稱!'); + return; + } + + var formData = { + mediaItem_uid: mediaItem_uid, + optionItem_uid: optionItem_uid, + mediaItem_name: mediaItem_name, + method: method + } + + $.ajax({ + url: "/AuthApi/addEditDelSpec", + type: "post", + data: formData, + success: function (data, textStatus, jqXHR) { + if (data.ret == "yes") { + var obj = data.mediaItem; + + tmpNestableItem.text(obj.mediaItem_name); + + $('#optionItemModal').modal('toggle'); + + } else { + alert(data.message); + + if (data.err_code == "99999") { + location.href = "/Root/Login"; + } + } + }, + error: function (jqXHR, textStatus, errorThrown) { + alert('網路或伺服器發生錯誤,請稍後重試!'); + } + }); + } + + + }); +}); + +function loadMediaCard() { + var formData = { + option_uid: 'media' + } + + $.ajax({ + url: "/AuthApi/queryMediaSpecs", + type: "post", + data: formData, + success: function (data, textStatus, jqXHR) { + if (data.ret == "yes") { + var obj = data.mediaSpecList; + var items = ""; + $.each(obj, function (index, item) { + $('#card_group').append(cardHtml(item)); + $('#' + item.optionItem_uid).nestable(); + + $('#' + item.optionItem_uid).on('change', function () { + nestableChange(this); + }); + }); + + //items = '
    ' + items + '
'; + + //$('#nestable05').children().html(items); + + // $('#nestable05').nestable(); + + // $('#nestable05').on('change', function () { + // nestableChange(this); + //}); + + } else { + alert(data.message); + + if (data.err_code == "99999") { + location.href = "/Root/Login"; + } + } + }, + error: function (jqXHR, textStatus, errorThrown) { + alert('網路或伺服器發生錯誤,請稍後重試!'); + } + }); +} + +function cardHtml(mediaOption) { + var html = ""; + html += ""; + html += "
"; + html += " "; + html += "
"; + html += "
" + mediaOption.optionItem_name + "
"; + html += "
"; + html += " "; + html += "
    "; + html += "
  1. "; + + $.each(mediaOption.mediaSpecList, function (index, item) { + html += optionItemHtml(item); + }); + + + html += "
"; + html += "
"; + html += " "; + html += "
"; + html += " Add Menu Item"; + html += "
"; + html += "
"; + html += "
"; + + return html; +} + +function optionItemHtml(item) { + var html = "
  • \n
    \n \n
    ").concat(item.mediaItem_name, "
    \n
    \n \n \n
    \n
  • "); + return html; +} + +function addItem(obj) { + //alert($(obj).attr("data-type")); + + $('#optionItem_name').val($(obj).parent().parent().find('.card-header.border-bottom-0').text()); + $('#method').val('add'); + $('#optionItem_uid').val($(obj).attr("data-type")); + $('#optionItemModal').modal('toggle'); + + tmpNestableObj = $(obj).parent().parent().find('.dd'); + + +} + +function editBtnClick(obj) { + tmpNestableItem = $(obj).parent().parent().find("[data-name='option_name']"); + var optionItem_name = $(obj).parent().parent().find("[data-name='option_name']").text(); + var option_name = $(obj).parent().parent().parent().parent().parent().parent().find('.card-header.border-bottom-0').text(); + + $('#method').val('edit'); + $('#option_name').val(option_name); + $('#optionItem_uid').val($(obj).attr("data-parent-uid")); + $('#mediaItem_uid').val($(obj).attr("data-uid")); + $('#optionItemModal').modal('toggle'); + + + + $('#mediaItem_name').val(optionItem_name).trigger("change"); + + $('#optionItemModal').modal('toggle'); +} + +function delBtnClick(obj) { + + + if (confirm('確定刪除此筆資料? 刪掉後,網紅中有勾選此項目的此項目紀錄會消失,新增一筆相同名稱的項目也無法復原!')) { + if (confirm('再次確認要刪除此筆資料?')) { + tmpNestableItem = $(obj).parent().parent().find("[data-name='option_name']"); + var optionItem_name = $(obj).parent().parent().find("[data-name='option_name']").text(); + var option_name = $(obj).parent().parent().parent().parent().parent().parent().find('.card-header.border-bottom-0').text(); + var optionItem_uid = $(obj).attr("data-parent-uid"); + var mediaItem_uid = $(obj).attr("data-uid"); + + var formData = { + mediaItem_uid: mediaItem_uid, + optionItem_uid: optionItem_uid, + method: 'del' + } + + $.ajax({ + url: "/AuthApi/addEditDelSpec", + type: "post", + data: formData, + success: function (data, textStatus, jqXHR) { + if (data.ret == "yes") { + tmpNestableItem.parent().remove(); + + } else { + alert(data.message); + + if (data.err_code == "99999") { + location.href = "/Root/Login"; + } + } + }, + error: function (jqXHR, textStatus, errorThrown) { + alert('網路或伺服器發生錯誤,請稍後重試!'); + } + }); + } + } +} + +function nestableChange(obj) { + //alert($(obj).attr("data-type")); + //alert(window.JSON.stringify($(obj).nestable('serialize'))); + + var optionItem_uid = $(obj).attr("data-type"); + var order_json = window.JSON.stringify($(obj).nestable('serialize')); + + var formData = { + optionItem_uid: optionItem_uid, + order_json: order_json + } + + $.ajax({ + url: "/AuthApi/mediaSpecOrder", + type: "post", + data: formData, + success: function (data, textStatus, jqXHR) { + if (data.ret == "yes") { + + + } else { + //alert(data.message); + + if (data.err_code == "99999") { + location.href = "/Root/Login"; + } + } + }, + error: function (jqXHR, textStatus, errorThrown) { + alert('網路或伺服器發生錯誤,請稍後重試!'); + } + }); +} \ No newline at end of file diff --git a/wwwroot/assets/javascript/custom/optionlist.js b/wwwroot/assets/javascript/custom/optionlist.js index f02b74c..e0774c0 100644 --- a/wwwroot/assets/javascript/custom/optionlist.js +++ b/wwwroot/assets/javascript/custom/optionlist.js @@ -405,4 +405,4 @@ function addItem(obj) { $('#optionItemModal').modal('toggle'); tmpNestableObj = $(obj).parent().parent().find('.dd'); -} \ No newline at end of file +}