diff --git a/web/App_Code/Model/ViewModel/follower.cs b/web/App_Code/Model/ViewModel/follower.cs index 7dc70c3..3ce690a 100644 --- a/web/App_Code/Model/ViewModel/follower.cs +++ b/web/App_Code/Model/ViewModel/follower.cs @@ -43,6 +43,7 @@ namespace Model.ViewModel public string country { get; set; } public string country2 { get; set; } public string phone_idcode { get; set; } // 電話/證號搜尋欄位 + public string cellphone { get; set; } } public class followers_tablet { diff --git a/web/App_Code/Model/ViewModel/order.cs b/web/App_Code/Model/ViewModel/order.cs index fc099b0..837041d 100644 --- a/web/App_Code/Model/ViewModel/order.cs +++ b/web/App_Code/Model/ViewModel/order.cs @@ -43,6 +43,8 @@ namespace Model.ViewModel public List details { get; set; } + public follower f_user { get; set; } + } public class pro_order_detail @@ -85,6 +87,10 @@ namespace Model.ViewModel public string follower_name { get; set; } public string full_description { get; set; } public string order_info { get; set; } + public string style { get; set; } + + public List mid_items { get; set; } + public List left_items { get; set; } } } \ No newline at end of file diff --git a/web/App_Code/api/activityController.cs b/web/App_Code/api/activityController.cs index a379a98..92bf1ef 100644 --- a/web/App_Code/api/activityController.cs +++ b/web/App_Code/api/activityController.cs @@ -1008,6 +1008,7 @@ public class activityController : ApiController { text = x.actItem?.subject, val = x.actItem_num, + style=x.actItem.defaultStyle }, price = x.price ?? 0, qty = x.qty ?? 0, diff --git a/web/App_Code/api/orderController.cs b/web/App_Code/api/orderController.cs index 41727d5..14413c4 100644 --- a/web/App_Code/api/orderController.cs +++ b/web/App_Code/api/orderController.cs @@ -2,6 +2,8 @@ using Model; using MyWeb; using Newtonsoft.Json; +using OfficeOpenXml.FormulaParsing.Excel.Functions.Text; +using Org.BouncyCastle.Utilities.Encoders; using PagedList; using System; using System.Activities.Expressions; @@ -202,6 +204,142 @@ public class orderController : ApiController var count = _db.pro_order.Count(); return count; } + + [HttpPost] + [Route("api/order/AddOrderWithDetail")] + public IHttpActionResult AddOrderWithDetail([FromBody] Model.ViewModel.pro_order q) + { + try + { + MyWeb.encrypt encrypt = new MyWeb.encrypt(); + //先塞信眾 + Model.follower follower = new Model.follower(); + follower.u_name = q.f_user.u_name; + follower.phone = encrypt.EncryptAutoKey(q.f_user.phone); + follower.cellphone = encrypt.EncryptAutoKey(q.f_user.cellphone); + follower.country = q.f_user.country; + follower.id_code = q.f_user.id_code; + follower.sex = q.f_user.sex; + follower.identity_type = q.f_user.identity_type; + follower.birthday = q.f_user.birthday; + string sex = q.f_user.sex; + follower.f_number = Model.follower.generate_f_number(sex); + _db.followers.Add(follower); + _db.SaveChanges(); + int _id = follower.num;//取回信眾的sql server自動編號 + Hashtable ht= new Hashtable(); + //再塞親友 + foreach (var detail in q.details) + { + //要考慮相同名字只能塞一次,下一個遇到要幫他塞回num + foreach (var mid in detail.mid_items) + { + if (ht.ContainsKey(mid.fam_name)) + { + mid.num = int.Parse(ht[mid.fam_name].ToString()); + continue; + } + Model.family_members fam = new Model.family_members(); + fam.follower_num = _id; + fam.fam_name = mid.fam_name; + fam.deceased = mid.deceased; + _db.family_members.Add(fam); + _db.SaveChanges(); + + mid.num = fam.num; + ht.Add(mid.fam_name, fam.num); + } + foreach (var left in detail.left_items) + { + if (ht.ContainsKey(left.fam_name)) + { + left.num =int.Parse( ht[left.fam_name].ToString()); + continue; + } + Model.family_members fam = new Model.family_members(); + fam.follower_num = _id; + fam.fam_name = left.fam_name; + fam.deceased = left.deceased; + _db.family_members.Add(fam); + _db.SaveChanges(); + left.num = fam.num; + ht.Add(left.fam_name, fam.num); + } + } + + //再來報名主檔 + Model.pro_order order = new Model.pro_order(); + order.order_no = createOrderNumber(); + order.up_time = DateTime.Now; + order.reg_time = DateTime.Now; + order.keyin1 = "A01"; + order.f_num = _id; + order.phone = !string.IsNullOrEmpty(q.f_user.phone)? + encrypt.EncryptAutoKey(q.f_user.phone): encrypt.EncryptAutoKey(q.f_user.cellphone); + order.activity_num = q.activity_num; + order.address = q.f_user.address; + order.demo = ""; + order.send_receipt=false; + _db.pro_order.Add(order); + //最後功德項目 + foreach (var detail in q.details) + { + Model.pro_order_detail o_detail = new Model.pro_order_detail(); + o_detail.order_no = order.order_no; + o_detail.actItem_num = detail.actItem_num; + o_detail.price = detail.price; + o_detail.qty = detail.qty; + o_detail.printed_files = detail.printed_files; + o_detail.style = detail.style; + Newtonsoft.Json.Linq.JArray mid_items = new Newtonsoft.Json.Linq.JArray(); + foreach (var data in detail.mid_items) + { + Newtonsoft.Json.Linq.JObject item = new Newtonsoft.Json.Linq.JObject(); + item["num"] = data.num; + item["fam_name"] = data.fam_name; + item["fam_gender"] = ""; + item["deceased"] = data.deceased; + item["fam_title"] = ""; + item["option_break"] = false; + item["IsShuWen"] = false; + mid_items.Add(item); + } + + Newtonsoft.Json.Linq.JArray left_items = new Newtonsoft.Json.Linq.JArray(); + foreach (var data in detail.left_items) + { + Newtonsoft.Json.Linq.JObject item = new Newtonsoft.Json.Linq.JObject(); + item["num"] = data.num; + item["fam_name"] = data.fam_name; + item["fam_gender"] = ""; + item["deceased"] = data.deceased; + item["fam_title"] = ""; + item["option_break"] = false; + item["IsShuWen"] = false; + left_items.Add(item); + } + Newtonsoft.Json.Linq.JObject tablet = new Newtonsoft.Json.Linq.JObject(); + tablet["mid_items"] = mid_items; + tablet["left_items"] = left_items; + o_detail.f_num_tablet = tablet.ToString(); + _db.pro_order_detail.Add(o_detail); + } + _db.SaveChanges(); + + return Ok(new + { + result = "Y",message="報名成功" + }); + } + catch (Exception ex) + { + return Ok(new + { + result = "N",message=ex.Message + }); + } + } + [HttpPost] [Route("api/order/GetList")] public IHttpActionResult GetList([FromBody] Model.ViewModel.pro_order q, int page, int pageSize = 10, diff --git a/web/admin/order/fastSignUp3.vue b/web/admin/order/fastSignUp3.vue index b050c88..3d00752 100644 --- a/web/admin/order/fastSignUp3.vue +++ b/web/admin/order/fastSignUp3.vue @@ -3,7 +3,10 @@
快速報名
- 儲存 +
+ 儲存 + 返回 +
@@ -27,7 +30,7 @@ - + @@ -53,14 +56,14 @@ label="護照號碼"> - + -
+
+ + + + + @@ -122,6 +140,7 @@ }, data() { return { + transfer_dialog: { show: false, message: "" }, message_dialog: { show: false, message: "" }, idNo: "", phoneNum: "", @@ -143,6 +162,12 @@ this.getActItem() }, methods: { + back01() { + this.$emit('custom-event', { action: 'signup1', item: this.num }); + }, + gotoSignUp4() { + this.$emit('custom-event', { action: 'signup4', item: this.num }); + }, renderDisabled(item) { if (item.disabled) { return "disabled-checkbox" @@ -181,7 +206,11 @@ //alert("相同條件不只一人") this.message_dialog.show = true this.message_dialog.message = "相同條件不只一人,請增加查詢條件" + } else if (response.data.list.length==0) { + this.transfer_dialog.show = true + this.transfer_dialog.message = "查無信眾資料" } else { + this.tablet_show = true this.follower = response.data.list[0] this.getOrder() diff --git a/web/admin/order/fastSignUp4.vue b/web/admin/order/fastSignUp4.vue new file mode 100644 index 0000000..720977a --- /dev/null +++ b/web/admin/order/fastSignUp4.vue @@ -0,0 +1,434 @@ + + + + + \ No newline at end of file diff --git a/web/admin/order/index4.aspx b/web/admin/order/index4.aspx index 7975684..ad7c70d 100644 --- a/web/admin/order/index4.aspx +++ b/web/admin/order/index4.aspx @@ -94,6 +94,7 @@ 'fastSignUp-component': httpVueLoader('./fastSignUp.vue'), 'fastSignUp2-component': httpVueLoader('./fastSignUp2.vue'), 'fastSignUp3-component': httpVueLoader('./fastSignUp3.vue'), + 'fastSignUp4-component': httpVueLoader('./fastSignUp4.vue'), }, watch: { options: { @@ -113,6 +114,9 @@ } else if (item.action === "add") { this.twoData=item.item.num this.currentView = "fastSignUp3-component" + } else if (item.action === "signup4") { + this.twoData = item.item + this.currentView = "fastSignUp4-component" } console.log("item.action:",this.twoData) },