快速報名增加可選哪一次法會,複製另一個牌位內容成新一張牌位

This commit is contained in:
2026-05-24 10:48:18 +08:00
parent 2724173216
commit 889e5679aa
7 changed files with 134 additions and 35 deletions
+1
View File
@@ -88,6 +88,7 @@ namespace Model.ViewModel
public string full_description { get; set; } public string full_description { get; set; }
public string order_info { get; set; } public string order_info { get; set; }
public string style { get; set; } public string style { get; set; }
public int? change_item_num { get; set; }
public List<family_members> mid_items { get; set; } public List<family_members> mid_items { get; set; }
public List<family_members> left_items { get; set; } public List<family_members> left_items { get; set; }
+1
View File
@@ -957,6 +957,7 @@ public class activityController : ApiController
{ {
text = x.actItem?.subject, text = x.actItem?.subject,
val = x.actItem_num, val = x.actItem_num,
style=x.actItem.defaultStyle
}, },
price = x.price ?? 0, price = x.price ?? 0,
qty = x.qty ?? 0, qty = x.qty ?? 0,
+8 -7
View File
@@ -834,6 +834,7 @@ public class orderController : ApiController
var last_order = _db.pro_order.Where(x => x.order_no == last_order_no).FirstOrDefault(); var last_order = _db.pro_order.Where(x => x.order_no == last_order_no).FirstOrDefault();
if (last_order != null) if (last_order != null)
{ {
new_pro_order.up_time = DateTime.Now; new_pro_order.up_time = DateTime.Now;
new_pro_order.reg_time = DateTime.Now; new_pro_order.reg_time = DateTime.Now;
new_pro_order.phone = last_order.phone; new_pro_order.phone = last_order.phone;
@@ -849,17 +850,17 @@ public class orderController : ApiController
foreach (var item1 in details) foreach (var item1 in details)
{ {//如果item1 change_item_num 有值且不為0,表示要複製過來
var last_detail = _db.pro_order_detail.Where(x => x.num == item1.num).FirstOrDefault(); var last_detail = _db.pro_order_detail.Where(x => x.num == item1.num).FirstOrDefault();
var detail = new pro_order_detail(); var detail = new pro_order_detail();
detail.order_no = new_pro_order.order_no; detail.order_no = new_pro_order.order_no;
detail.actItem_num = last_detail.actItem_num; detail.actItem_num = (item1.change_item_num!=null&&item1.change_item_num!=0)?item1.change_item_num: last_detail.actItem_num;
detail.f_num_tablet = last_detail.f_num_tablet; detail.f_num_tablet = last_detail.f_num_tablet;
detail.from_id = last_detail.from_id; detail.from_id = (item1.change_item_num != null && item1.change_item_num != 0) ? item.f_num: last_detail.from_id;
detail.price = last_detail.price; detail.price = (item1.change_item_num != null && item1.change_item_num != 0) ? item1.price : last_detail.price;
detail.qty = last_detail.qty; detail.qty = (item1.change_item_num != null && item1.change_item_num != 0) ? item1.qty : last_detail.qty;
detail.printed_files = last_detail.printed_files; detail.printed_files = (item1.change_item_num != null && item1.change_item_num != 0) ? item1.printed_files : last_detail.printed_files;
detail.style = last_detail.style; detail.style = (item1.change_item_num != null && item1.change_item_num != 0) ? item1.style : last_detail.style;
detail.UpdateTime = DateTime.Now; detail.UpdateTime = DateTime.Now;
detail.start_date = DateTime.Now;//這兩個要用活動的 detail.start_date = DateTime.Now;//這兩個要用活動的
detail.due_date = DateTime.Now;// detail.due_date = DateTime.Now;//
+1 -1
View File
@@ -277,7 +277,7 @@
this.$emit('custom-event', { action:'detail', item:item }); this.$emit('custom-event', { action:'detail', item:item });
}, },
getDetail(clearpage = false) { getDetail(clearpage = false) {
console.log("test"); //console.log("test");
const { sortBy, sortDesc, page, itemsPerPage } = this.options const { sortBy, sortDesc, page, itemsPerPage } = this.options
const params = { const params = {
sortBy: sortBy[0], sortDesc: sortDesc[0], sortBy: sortBy[0], sortDesc: sortDesc[0],
+118 -19
View File
@@ -64,22 +64,44 @@
</v-row> </v-row>
<hr class="hr-text" data-content="前次法會功德" v-if="follower.f_number!=undefined&&follower.f_number!=''"> <hr class="hr-text" data-content="前次法會功德" v-if="follower.f_number!=undefined&&follower.f_number!=''">
<v-row v-show="tablet_show">
<v-select :items="orders"
label="選擇法會"
item-text="subject" @change="changeOrderDetail()"
item-value="order_no" v-model="order_no">
</v-select>
</v-row>
<v-row v-show="tablet_show"> <v-row v-show="tablet_show">
<v-col cols="12" sm="12"> <v-col cols="12" sm="12">
<v-data-iterator :items="tablet_list" :items-per-page="-1" <v-data-iterator :items="tablet_list" :items-per-page="-1"
hide-default-footer> hide-default-footer>
<template v-slot:default="{ items }"> <template v-slot:default="{ items }">
<v-row> <v-row>
<v-col cols="3" md="3" v-for="(item, i) in items" :key="i"> <v-col cols="4" md="4" v-for="(item, i) in items" :key="i">
<v-card-title> <v-card-title>
<v-row>
<v-checkbox v-model="item.actitem_num_checked" <v-col col="12" md="12">
:disabled="item.disabled" class="custom-checkbox"> <v-checkbox v-model="item.actitem_num_checked"
<template v-slot:label> :disabled="item.disabled" class="custom-checkbox">
<h5 :class="renderDisabled(item)">{{ item.actitem_num_selected.text }}</h5> <template v-slot:label>
</template> <h5 :class="renderDisabled(item)">{{ item.actitem_num_selected.text }}</h5>
</v-checkbox> </template>
</v-checkbox>
</v-col>
</v-row>
<v-row>
<v-col cols="3" md="3">
<v-btn class="ms-auto" @click.prevent="copytablet(item)">複製為</v-btn>
</v-col>
<v-col cols="9" md="9">
<v-select :items="act_items"
label="選擇功德項目"
item-text="act_item_selected.text"
item-value="act_item_selected.val" v-model="item.changeActitem">
</v-select>
</v-col>
</v-row>
</v-card-title> </v-card-title>
<v-card-text> <v-card-text>
<div v-html="renderTabletContent(item)" style="font-size:20px;"></div> <div v-html="renderTabletContent(item)" style="font-size:20px;"></div>
@@ -106,7 +128,8 @@
{{ message_dialog.message }} {{ message_dialog.message }}
</v-card-title> </v-card-title>
<v-card-text> <v-card-text>
<v-btn @click.prevent="message_dialog.show=false">關閉</v-btn> <v-btn @click.prevent="message_dialog.show=false" v-if="!message_dialog.show_confirm">關閉</v-btn>
<v-btn @click.prevent="success_confirm()" v-if="message_dialog.show_confirm">確認</v-btn>
</v-card-text> </v-card-text>
</v-card> </v-card>
</template> </template>
@@ -141,7 +164,7 @@
data() { data() {
return { return {
transfer_dialog: { show: false, message: "" }, transfer_dialog: { show: false, message: "" },
message_dialog: { show: false, message: "" }, message_dialog: { show: false,show_confirm:false, message: "" },
idNo: "", idNo: "",
phoneNum: "", phoneNum: "",
name: "", name: "",
@@ -154,7 +177,10 @@
id_code: { type: String }, cellphone: { type: String } id_code: { type: String }, cellphone: { type: String }
}, },
search_options: { multiSort: false }, search_options: { multiSort: false },
tablet_show: false tablet_show: false,
activityes: [],
order_no: "",
copy_item: {}
} }
}, },
activated() { activated() {
@@ -175,6 +201,16 @@
return "enabled-checkbox" return "enabled-checkbox"
} }
}, },
copytablet(item) {
let t = this.act_items.find(x => x.act_item_selected.val == item.changeActitem)
let newTablet = structuredClone(item)
newTablet.id = this.tablet_list.length+1
newTablet.actitem_num_selected.val = t.act_item_selected.val
newTablet.actitem_num_selected.text = t.act_item_selected.text
newTablet.changeActitem = ""
newTablet.disabled=false
this.tablet_list.push(newTablet)
},
getActItem() { getActItem() {
this.act_items.length = 0 this.act_items.length = 0
this.search = { num: this.num } this.search = { num: this.num }
@@ -185,6 +221,12 @@
if (response.data.list) { if (response.data.list) {
this.act_items = response.data.list this.act_items = response.data.list
//if (this.act_items && this.act_items.length > 0) {
// this.act_items = this.act_items.map(x => ({
// ...x,selected:""
// }))
//}
console.log("QOO:",this.act_items)
} }
else else
console.log("查無資料"); console.log("查無資料");
@@ -235,7 +277,9 @@
if (response.data.list && response.data.list.length > 0) { if (response.data.list && response.data.list.length > 0) {
this.orders = response.data.list this.orders = response.data.list
this.orders = this.orders.filter(x => x.activity_num !== this.num) this.orders = this.orders.filter(x => x.activity_num !== this.num)
console.log("orders",this.orders)
if (this.orders && this.orders.length > 0) { if (this.orders && this.orders.length > 0) {
this.getOrderDetail() this.getOrderDetail()
} }
} }
@@ -244,6 +288,31 @@
}) })
.catch(error => console.log(error)) .catch(error => console.log(error))
}, },
changeOrderDetail() {
this.tablet_show = true
this.tablet_list.length = 0
let params = { sortBy: 'num', sortDesc: true, page: 1, pageSize: -1 };
let search1 = { order_no: this.order_no }
axios
.post(HTTP_HOST + 'api/order/GetItemList', search1, { params: params })
.then(response => {
if (response.data.list) {
this.tablet_list = response.data.list
this.tablet_list.forEach(x => {
let act_item = this.act_items.filter(y => y.act_item_selected.val === x.actitem_num_selected.val)
if (act_item && act_item.length > 0) {
x.disabled = false
} else {
x.disabled = true
}
x["changeActitem"] = ""
})
}
else
console.log("changeOrderDetail 查無資料");
})
.catch(error => console.log(error))
},
getOrderDetail() { getOrderDetail() {
this.tablet_show = true this.tablet_show = true
let params = { sortBy: 'num', sortDesc: true, page: 1, pageSize: -1 }; let params = { sortBy: 'num', sortDesc: true, page: 1, pageSize: -1 };
@@ -260,6 +329,7 @@
} else { } else {
x.disabled = true x.disabled = true
} }
x["changeActitem"]=""
}) })
} }
else else
@@ -271,24 +341,46 @@
let data = JSON.parse(item.f_num_tablet) let data = JSON.parse(item.f_num_tablet)
let left = data.left_items let left = data.left_items
let mid = data.mid_items let mid = data.mid_items
let mid_right = data.mid_right
let mid_left=data.mid_left
let returnVal = "" let returnVal = ""
if (left) { if (left) {
returnVal = "陽上:" + left.map(x => x.fam_name).join("、") returnVal = "陽上:" + left.map(x => x.fam_name).join("、")
} }
if (mid) { if (mid) {
returnVal = returnVal + "<br>標題:" + mid.map(x => x.fam_name).join("、") returnVal = returnVal + "<br>牌位正名:" + mid.map(x => x.fam_name).join("、")
} }
return returnVal if (mid_right) {
returnVal = returnVal + "<br>右正名:" + mid_right.map(x => x.fam_name).join("、")
}
if (mid_left) {
returnVal = returnVal + "<br>左正名:" + mid_left.map(x => x.fam_name).join("、")
}
return item.actitem_num_selected.val+":" + returnVal
},
success_confirm() {
this.message_dialog.show = false
this.message_dialog.show_confirm=false
this.follower = {}
this.tablet_list.length = 0
this.tablet_show=false
}, },
saveOrder() { saveOrder() {
let detail = [] let detail = []
//整理資料存檔//只要抓那個活動的那幾筆功德項目代號 //整理資料存檔//只要抓那個活動的那幾筆功德項目代號
this.tablet_list.forEach(x => { this.tablet_list.forEach(x => {
if (x.actitem_num_checked && x.actitem_num_checked == true) { if (x.actitem_num_checked && x.actitem_num_checked == true) {
detail.push({ num: x.num, order_no: x.order_no }) console.log("OOQ:", x.num)
console.log("saveOrder:", x, x.num, x.order_no) let actItem = this.act_items.find(y => y.act_item_selected.val == x.actitem_num_selected.val)
detail.push({
num: x.num, order_no: x.order_no, change_item_num: x.changeActitem,
price: actItem.price, qty: 1, style: actItem.act_item_selected.style, printed_files: actItem.files[0].num
})
// console.log("saveOrder:", x, x.num, x.order_no)
} }
}) })
//放主檔資料, //放主檔資料,
let main = { let main = {
activity_num: this.num, f_num: this.follower.num, activity_num: this.num, f_num: this.follower.num,
@@ -299,10 +391,17 @@
.post(HTTP_HOST + 'api/order/SaveWithDetails', main) .post(HTTP_HOST + 'api/order/SaveWithDetails', main)
.then(response => { .then(response => {
if (response.result && response.result === "Y") { if (response.result && response.result === "Y") {
console.log(); console.log("shit");
} }
console.log(response.message) console.log("蝦:", response)
}).catch(error => console.log(error)); this.message_dialog.show_confirm = true
this.message_dialog.show = true
this.message_dialog.message = response.message
}).catch(error => {
this.message_dialog.show = true
this.message_dialog.message =error
console.log(error)
});
} }
} }
} }
-2
View File
@@ -251,8 +251,6 @@
}, },
addOrderWithDetail() { addOrderWithDetail() {
//組資料,信眾資料,報名資料,功德資料 //組資料,信眾資料,報名資料,功德資料
console.log("addOrderWithDetail:",this.follower);
console.log("addOrderWithDetail:", this.tablets);
let details = [] let details = []
+5 -6
View File
@@ -42,9 +42,8 @@
let VueApp = new Vue({ let VueApp = new Vue({
el: '#app', el: '#app',
vuetify: new Vuetify(), vuetify: new Vuetify(),
activated() { mounted() {
this.getDetail(); this.getDetail();
}, },
data() { data() {
return { return {
@@ -87,7 +86,8 @@
hasPrice: '', hasPrice: '',
}, },
currentView: 'fastSignUp-component', currentView: 'fastSignUp-component',
twoData: {} twoData: {},
detail_table:[]
}; };
}, },
components: { components: {
@@ -107,7 +107,6 @@
}, },
methods: { methods: {
changeView(item) { changeView(item) {
console.log(item);
if (item.action === "detail") { if (item.action === "detail") {
this.twoData = item.item.num this.twoData = item.item.num
this.currentView = "fastSignUp2-component" this.currentView = "fastSignUp2-component"
@@ -119,9 +118,9 @@
this.currentView = "fastSignUp4-component" this.currentView = "fastSignUp4-component"
} else if (item.action === "signup1") { } else if (item.action === "signup1") {
this.twoData = item.item this.twoData = item.item
this.currentView = "fastSignUp1-component" this.currentView = "fastSignUp-component"
} }
console.log("item.action:",this.twoData) //console.log("item.action:",this.twoData)
}, },
getDetail() { getDetail() {
const { sortBy, sortDesc, page, itemsPerPage } = this.options const { sortBy, sortDesc, page, itemsPerPage } = this.options