1.報名牌位 2.牌位列印

This commit is contained in:
2026-04-09 17:42:29 +08:00
parent 8fe243356e
commit c5fc2469d7
4 changed files with 520 additions and 323 deletions
+36 -2
View File
@@ -11,9 +11,9 @@
border-bottom: 1px solid #eee;
}
</style>
</asp:Content>
<asp:Content ID="Content4" ContentPlaceHolderID="footer_script" runat="Server">
<script>
Vue.filter('timeString', function (value, myFormat) {
return value == null || value == "" ? "" : moment(value).format(myFormat || 'YYYY-MM-DD, HH:mm:ss');
@@ -552,11 +552,38 @@
// 關閉編輯對話框
this.tablet_edit.show = false;
thiw.tablet_edit_new.show = false;
this.tablet_edit_new.show = false;
// 顯示成功訊息
this.snackbar.text = '牌位資料已更新';
this.snackbar.show = true;
} else if (event.data.source === 'editorNew.btn.click') {
const receivedData = event.data.data;
// 更新編輯中的項目
//if (receivedData.tabletItem && this.editedIndex > -1) {
if (receivedData.tabletItem) {
// 將 tablet_data 轉換為 JSON 字串
//this.editedItem.f_num_tablet = JSON.stringify(receivedData.tablet_data);
// 確保其他必要欄位保持不變
const currentItem = this.desserts[this.editedIndex];
//currentItem.f_num_tablet = JSON.stringify(receivedData.tablet_data);
this.editedItem = {
...currentItem,
f_num_tablet: JSON.stringify(receivedData.tablet_data),
style: receivedData.style
};
// 呼叫 save 方法
await this.save();
}
this.tablet_edit_new.show = false;
// 顯示成功訊息
this.snackbar.text = '牌位資料已更新';
this.snackbar.show = true;
}
});
@@ -585,6 +612,7 @@
'tablet_edit.show': {
handler(newVal) {
if (!newVal && this._savedEditedItem) {
// console.log("三小");
this.editedItem = $.extend(true, {}, this._savedEditedItem);
this._savedEditedItem = null;
}
@@ -593,6 +621,8 @@
'tablet_edit_new.show': {
handler(newVal) {
if (!newVal && this._savedEditedItem) {
//console.log("不合理");
//$("#tablet_edit_new_iframe").src = $("#tablet_edit_new_iframe").src;
this.editedItem = $.extend(true, {}, this._savedEditedItem);
this._savedEditedItem = null;
}
@@ -845,6 +875,9 @@
this.editedItem = $.extend(true, {}, item);
try {
console.log("衝啥");
//document.getElementById("tablet_edit_new_iframe").contentWindow.location.reload();
// 如果是新項目,先保存
if (this.editedItem.num <= 0 || this.editedItem.num === null || this.editedItem.num === undefined) {
this.editedItem.qty = 1;
@@ -859,6 +892,7 @@
// 保存當前的 editedItem 數據
const currentData = $.extend(true, {}, this.editedItem);
// 顯示對話框
this.tablet_edit_new.show = true;
// 立即恢復數據
this.editedItem = $.extend(true, {}, currentData);
+1 -1
View File
@@ -534,7 +534,7 @@
}
.sub-text {
font-size: ${ancestorFontSize}px ;/*0.8em;*/ /* 縮小字體 */
/*font-size: ${ancestorFontSize}px ;*//*0.8em;*/ /* 縮小字體 */
line-height: 1.2;
margin-top: 4px; /* 與上方林張的間距 */
white-space: normal; /* 避免自動換行 */
+304 -141
View File
@@ -4,9 +4,9 @@
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<link href="../../../js/bootstrap5/bootstrap.min.css" />
<link href="../../../js/fontawesome6/css/all.min.css" />
<link href="../../item/jquery-ui/jquery-ui.min.css" />
<link href="../../../js/bootstrap5/bootstrap.min.css" rel="stylesheet" />
<link href="../../../js/fontawesome6/css/all.min.css" rel="stylesheet" />
<link href="../../item/jquery-ui/jquery-ui.min.css" rel="stylesheet" />
<link href="../../../js/vuetify.css" rel="stylesheet" />
<link href="../../../js/mdi-font/css/materialdesignicons.min.css" rel="stylesheet" />
<script src="../../../js/vue.min.js"></script>
@@ -15,6 +15,7 @@
<script src="../../../js/bootstrap5/js/bootstrap.bundle.min.js"></script>
<script src="../../../js/jquery-4.0.0.min.js"></script>
<script src="../../item/jquery-ui/jquery-ui.min.js"></script>
<style>
.div_border {
border: 1px solid black;
@@ -54,16 +55,30 @@
<div class="row work_space">
<div class="col-8 div_border printArea"></div>
<div class="col-4 div_border" style="font-size:12px;">
<div class="row" style="height: 50%; width: 100%; overflow: auto;">
<div class="row" style="height: 50%; overflow: auto;">
<div style="display:inline-block;width:100%;height:30px;background-color:darkgray;">
<h1>已選</h1>
<div class="row">
<div class="col-12">
<h3>已選</h3>
</div>
<div class="col-10">
<div class="form-floating mb-3">
<input class="form-control" type="text" id="custom_txt" placeholder="請輸入名稱" />
<label for="custom_txt">請輸入名稱</label>
</div>
</div>
<div class="col-2">
<button type="button" class="custom_add" onclick="designer.addNewItem()" style="width:20px;height:20px;font-size:25px">+</button>
</div>
</div>
<ul class="selectedItem" style="margin-left:1rem;margin-right:1rem;">
</ul>
</div>
</div>
<div class="row" style="height: 50%; width: 100%; overflow: auto;">
<div class="row" style="height: 50%; overflow: auto;">
<div style="display:inline-block;width:100%;height:30px;background-color:darkgray;">
<h1>可選</h1>
<h3>可選</h3>
<ul class="canselectItem" style="margin-left: 1rem;margin-right:1rem;">
</ul>
</div>
@@ -73,7 +88,6 @@
</div>
</div>
<script type="text/javascript">
const designer = {
code: {
@@ -114,6 +128,8 @@
rightProperTitle: [],//右正名
address: "",//地址
alive: [],//陽上
tabletType: "A",
//toast:null,
bg: [
{ name: "黃1", path: "../../../admin/print/html/tablet-1_new.svg" },
{ name: "黃2", path: "../../../admin/print/html/tablet-1B_new.svg" },
@@ -126,6 +142,8 @@
.then(res => res.json())
.then(data => { this.phrases = data; })
.catch(err => console.error('載入 phrases.json 失敗:', err));
//this.toast = new bootstrap.Toast(document.querySelector(".toast"));
//this.toast.hide();
},
async getActItem() {
axios
@@ -136,6 +154,7 @@
this.pageSize = response.data.data.pageSize;
this.defaultStyle = response.data.data.defaultStyle;
this.selected.style = response.data.data.defaultStyle;
this.selectStyle.style = response.data.data.defaultStyle;
$("#styleSel").val(this.defaultStyle);
//this.getStyle();
@@ -145,6 +164,7 @@
},
async getAllStyleDetails() {
this.allStyleDetails.length = 0;
await axios
.post('/api/tablet/GetStyleDetailData', {})
.then(response => {
@@ -160,6 +180,7 @@
);
},
async getPaperSize() {
this.allSize.length = 0;
let self = this
await axios
.post('/api/tablet/GetPaperSize', {})
@@ -181,6 +202,7 @@
)
},
async getTabletElement() {
this.tabletElement.length = 0;
await axios
.post('/api/tablet/GetTabletElement', {})
.then(response => {
@@ -192,6 +214,7 @@
});
},
async getTabletStyles() {
this.allStyle.length = 0;
await axios
.post('/api/tablet/GetStyleData', {})
.then(response => {
@@ -209,7 +232,7 @@
});
},
async getData() {
console.log("getData:", this.tabletItem)
//console.log("getData:", this.tabletItem)
this.printData.length = 0;
this.properTitle.length = 0
this.alive.length = 0;
@@ -224,41 +247,63 @@
if (response.status == 200) {
self.printData = response.data;
self.printData.forEach(x => {
self.selectStyle = x;
if (x.style != null && x.style != undefined)
self.selectStyle.style = x.styleID;
if (x.f_num_tablet != "") {
let tablet = JSON.parse(x.f_num_tablet);
let mid_items = tablet.mid_items;
let left_items = tablet.left_items;
self.family_deceased_Y_selected.length = 0;
self.family_deceased_N_selected.length = 0;
Object.assign(self.family_deceased_N_selected, mid_items);
Object.assign(self.family_deceased_Y_selected, left_items);
//let mid = [];
//family_deceased_Y_selected family_deceased_N_selected
mid_items.forEach(y => {
self.properTitle.push(y.fam_name);
});
//let left = []
if (left_items) {
left_items.forEach(y => {
self.alive.push(y.fam_name);
});
}
}
});
this.render();
}
});
},
async render() {
$("#printArea").empty();
$(".printArea").empty();
$(".selectedItem").empty();
$(".canselectItem").empty();
let self = this;
self.tabletType = "A";
let canvas = $(` <div class="canvas-area flex-grow-1 overflow-auto d-flex flex-row align-items-center position-relative" ></div>`)
let nowPageWidth = 0;
let tabletpaper;
//列印紙張的尺寸
;
let mid = [];
Object.assign(mid, self.properTitle);
let left = []
Object.assign(left, self.alive);
//this.printData.forEach(x => {
let x = self.selectStyle;
let style = self.allStyle.find(y => y.styleID == x.style);
let style = self.allStyle.find(y => y.styleID == (x.style ? x.style : $("#styleSel").val()));
//console.log("style:",style)
if (x.style) {
} else {
self.selectStyle.style = style.styleID;
self.selected.style = style.styleID;
}
//用來印內容的尺寸
let size = self.allSize.find(y => y.paperID == style.paperSize);
let pageSize = self.allSize.find(y => y.paperID == style.printSize);
@@ -267,78 +312,44 @@
tabletpaper = $(` <div class="tablet-paper"></div>`)
let img = self.bg.find(y => y.name == style.backendImg);
let details = this.allStyleDetails.filter(y => y.styleID == x.style);
console.log("details:", details);
let details = this.allStyleDetails.filter(y => y.styleID == style.styleID);
let ancestorFontSize = 16;
details.forEach(d => {
if (d.isActive != "hidden") {
let element = self.tabletElement.find(y => y.elementID == d.elementID);
//let newFontSize = self.scaleFontSize(d.sampleContent, d.fontSize, d.width);
let newFontSize = 16;
newFontSize=self.scaleFontSize(mid, d.fontSize, d.textWidth);
let html = "";
let alive = "";
let yang = "";
let bi = "";
if (d.elementID === 'title1') {
/* let $namelist = $(`<div class='nameList'></div>`).css({
"writing-mode": "vertical rl",
display: "flex",
"flex-direction": "row",
"flex-wrap": "wrap",
margin: "auto",
width: `${d.width}px`,
height: `${d.height}px`,
border: "0px solid #ccc",
padding: "1px",
"font-family": style.fontFamily,
"letter-spacing": "0.1em",
"column-gap": "1px",
"row-gap": "1px",
"align-items": "center",
"justify-content": "space-between",
});
mid.forEach(z => {
let info = self.getTextInfo(z, newFontSize);
let spanWidth = mid.length > 1 ? newFontSize : d.width
let height = d.textHeight;
if (info.width >= d.textHeight) {
height = d.height;
if (mid.length == 0) {
mid.push("請選擇")
}
let $span = $(`<span class="nameSpan">${z}</span>`).css({
display: "block",
"min-height": `${height}px`,
"max-height": `${d.height}px`,
"max-width": `${spanWidth}px`,
//width: `${newFontSize}px`,
"text-align": "justify",
"text-align-last": "justify",
"margin-bottom": "20px",
"margin-left": "5px",
"text-justify": "inter-character",
"white-space": "pre-line",
//"justify-content":"center"
});
$namelist.append($span);
});
html = $namelist;*/
html = self.renderNameList(mid, d, newFontSize,style);
html = self.renderNameList(mid, d, newFontSize, style);
} else if (d.elementID === "alive") {
self.tabletType = "B";
if (left.length == 0) {
left.push("請選擇");
}
html = self.renderLiveList(left, d);
newFontSize = d.fontSize;
} else if (d.elementID === "titletriangle") {
if (mid.length == 0) {
mid.push("請選擇")
}
html = self.renderRoster(mid, d)
} else if (d.elementID === "combined") {
} else if (d.elementID === "combined" || d.elementID === "tricombined") {
ancestorFontSize = d.fontSize;
newFontSize = d.fontSize;
const parts = mid.join("\n").split('\n');
html = `<div class="ancestor-wrapper" style="width:${d.width}px !important;height:${d.height}px !important;" >
<span class="main-name" >${parts[0] || ''}</span>
<span class="sub-text">${parts[1] || ''}</span>
</div>`;
if (mid.length == 0) {
mid.push("請選擇")
}
html = self.renderCombined(mid, d);
}
if (newFontSize < 10) {
newFontSize = 10;
@@ -384,7 +395,7 @@
size:${pageSize.width}mm ${pageSize.height}mm !important;
margin:0;
}
html, body, form, .full-home, #printArea, .canvas-area {
html, body, form, .full-home, .printArea, .canvas-area {
height: auto !important;
width: auto !important;
overflow: visible !important; /*必須為 visible */
@@ -535,7 +546,6 @@
$("head").append(self.pageStyle);
$(canvas).append(tabletpaper);
$(".printArea").append(canvas);
//});
$(".tablet-element").on("click", function (e) {
e.preventDefault();
@@ -548,7 +558,7 @@
let self = this;
$(".selectedItem").empty();
$(".canselectItem").empty();
console.log(element);
if (element.hasClass("liveList")) {//陽上
//抓未往生的人出來
//self.familyMembers;
@@ -575,9 +585,14 @@
if (element.hasClass("ancestor-wrapper")) {//多姓氏合併,只允許用打的
self.properTitle.forEach(y => {
$(".selectedItem").append(`<li>${y}</li>`)
$(".selectedItem").append(`<li><span style="opacity:0.5">卍</span>
<span class="selected">${y}</span>
<span class="itemRemove" style="float:right ;margin-left:2rem;cursor:pointer;" >&minus;</span>
<span class="itemUp" style="float:right ;margin-left:2rem;cursor:pointer;">&#8593;</span>
<span class="itemDown" style="float:right ;margin-left:2rem;cursor:pointer;">&#8595;</span></li>`);
});
} else if (element.hasClass("nameList")) {//
} else if (element.hasClass("nameList") || element.hasClass("rosterList")) {//
self.properTitle.forEach(y => {
$(".selectedItem").append(`<li><span style="opacity:0.5">卍</span>
<span class="selected">${y}</span>
@@ -587,8 +602,11 @@
})
let items = []
self.familyMembers.forEach(x => {
if (x.deceased == false)
if (self.tabletType == "A" && x.deceased == false) {
items.push(x.fam_name);
} else if (self.tabletType == "B" && x.deceased == true) {
items.push(x.fam_name);
}
});
let finalItem = items.filter(y => !self.properTitle.includes(y))
finalItem.forEach(yy => {
@@ -599,18 +617,70 @@
self.bindEvent();
},
async addNewItem() {
let self = this;
let target = $(self.selectedElement).children().first();
//let fam = self.familyMembers.find(x => x.fam_name == target.text());
if (target.hasClass("liveList")) {
self.alive.push($("#custom_txt").val());
let obj = {
IsShuWen: false,
deceased: false,
fam_gender: "",
fam_name: $("#custom_txt").val(),
fam_file: "",
nospace: true,
num: 0,
option_break: false
}
self.family_deceased_Y_selected.push(obj);
} else if (target.hasClass("nameList") || target.hasClass("rosterList")) {
self.properTitle.push($("#custom_txt").val());
let obj = {
IsShuWen: false,
deceased: false,
fam_gender: "",
fam_name: $("#custom_txt").val(),
fam_file: "",
nospace: true,
num: 0,
option_break: false
}
self.family_deceased_N_selected.push(obj);
} else if (target.hasClass("ancestor-wrapper")) {
if (self.properTitle.length >= 2) {
alert("多姓氏合併必須第一個名稱為姓,第二個名稱為氏歷代祖先之類,且最多兩個名稱");
} else {
self.properTitle.push($("#custom_txt").val());
let obj = {
IsShuWen: false,
deceased: false,
fam_gender: "",
fam_name: $("#custom_txt").val(),
fam_file: "",
nospace: true,
num: 0,
option_break: false
}
self.family_deceased_N_selected.push(obj);
}
}
$("#custom_txt").val("");
self.renderItem($(self.selectedElement).children().first());
self.rerenderPart();
},
async bindEvent() {
let self = this;
$(".itemAppend").off("click");
$(".itemRemove").off("click");
$(".itemUp").off("click");
$(".itemDown").off("click");
$(".itemAppend").on("click", function (e) {
let curr = $(e.currentTarget.parentElement).find(".unselect").first();
let target = self.familyMembers.find(x => x.fam_name == curr.text());
if (target) {
if ($(self.selectedElement).children().first().hasClass("liveList")) {
self.alive.push(target.fam_name);
let obj = {
IsShuWen: false,
deceased: false,
@@ -622,7 +692,8 @@
option_break: false
}
self.family_deceased_Y_selected.push(obj);
} else if ($(self.selectedElement).children().first().hasClass("nameList")) {
} else if ($(self.selectedElement).children().first().hasClass("nameList") ||
$(self.selectedElement).children().first().hasClass("rosterList")) {
self.properTitle.push(target.fam_name);
let obj = {
@@ -635,7 +706,7 @@
num: target.num,
option_break: false
}
self.family_deceased_Y_selected.push(obj);
self.family_deceased_N_selected.push(obj);
}
}
self.renderItem($(self.selectedElement).children().first())
@@ -644,13 +715,16 @@
$(".itemRemove").on("click", function (e) {
let curr = $(e.currentTarget.parentElement).find(".selected").first();
//let target = self.alive.find(x => x == curr.text());
if ($(self.selectedElement).children().first().hasClass("liveList")) {
self.alive = self.alive.filter(x => x !== curr.text());
self.family_deceased_Y_selected.filter(x => x.fam_name != curr.text());
} else if ($(self.selectedElement).children().first().hasClass("nameList")) {
self.family_deceased_Y_selected=self.family_deceased_Y_selected.filter(x => x.fam_name != curr.text());
} else if ($(self.selectedElement).children().first().hasClass("nameList") ||
$(self.selectedElement).children().first().hasClass("rosterList")) {
self.properTitle = self.properTitle.filter(x => x !== curr.text());
self.family_deceased_Y_selected.filter(x => x.fam_name != curr.text());
self.family_deceased_N_selected=self.family_deceased_N_selected.filter(x => x.fam_name != curr.text());
} else if ($(self.selectedElement).children().first().hasClass("ancestor-wrapper")) {//
self.properTitle = self.properTitle.filter(x => x !== curr.text());
self.family_deceased_N_selected=self.family_deceased_N_selected.filter(x => x.fam_name != curr.text());
}
self.renderItem($(self.selectedElement).children().first());
self.rerenderPart();
@@ -667,14 +741,24 @@
[self.family_deceased_Y_selected[index - 1], self.family_deceased_Y_selected[index]] =
[self.family_deceased_Y_selected[index], self.family_deceased_Y_selected[index - 1]];
}
} else if ($(self.selectedElement).children().first().hasClass("nameList")) {
} else if ($(self.selectedElement).children().first().hasClass("nameList") ||
$(self.selectedElement).children().first().hasClass("rosterList")) {
let index = self.properTitle.indexOf(curr.text());
if (index == 0) {
} else {
[self.properTitle[index - 1], self.properTitle[index]] = [self.properTitle[index], self.alive[index - 1]];
[self.family_deceased_Y_selected[index - 1], self.family_deceased_Y_selected[index]] =
[self.family_deceased_Y_selected[index], self.family_deceased_Y_selected[index - 1]];
[self.properTitle[index - 1], self.properTitle[index]] = [self.properTitle[index], self.properTitle[index - 1]];
[self.family_deceased_N_selected[index - 1], self.family_deceased_N_selected[index]] =
[self.family_deceased_N_selected[index], self.family_deceased_N_selected[index - 1]];
}
} else if ($(self.selectedElement).children().first().hasClass("ancestor-wrapper") ) {
let index = self.properTitle.indexOf(curr.text());
if (index == 0) {
} else {
[self.properTitle[index - 1], self.properTitle[index]] = [self.properTitle[index], self.properTitle[index - 1]];
[self.family_deceased_N_selected[index - 1], self.family_deceased_N_selected[index]] =
[self.family_deceased_N_selected[index], self.family_deceased_N_selected[index - 1]];
}
}
self.renderItem($(self.selectedElement).children().first());
@@ -684,21 +768,31 @@
let curr = $(e.currentTarget.parentElement).find(".selected").first();
if ($(self.selectedElement).children().first().hasClass("liveList")) {
let index = self.alive.indexOf(curr.text());
if (index == self.alive.length) {
if (index == self.alive.length-1) {
} else {
[self.alive[index], self.alive[index + 1]] = [self.alive[index + 1], self.alive[index]];
[self.family_deceased_Y_selected[index], self.family_deceased_Y_selected[index + 1]] =
[self.family_deceased_Y_selected[index + 1], self.family_deceased_Y_selected[index]];
}
} else if ($(self.selectedElement).children().first().hasClass("nameList")) {
} else if ($(self.selectedElement).children().first().hasClass("nameList") ||
$(self.selectedElement).children().first().hasClass("rosterList")) {
let index = self.properTitle.indexOf(curr.text());
if (index == self.properTitle.length) {
if (index == self.properTitle.length-1) {
} else {
[self.properTitle[index], self.properTitle[index + 1]] = [self.properTitle[index + 1], self.properTitle[index]];
[self.family_deceased_Y_selected[index], self.family_deceased_Y_selected[index + 1]] =
[self.family_deceased_Y_selected[index + 1], self.family_deceased_Y_selected[index]];
[self.family_deceased_N_selected[index], self.family_deceased_N_selected[index + 1]] =
[self.family_deceased_N_selected[index + 1], self.family_deceased_N_selected[index]];
}
} else if ($(self.selectedElement).children().first().hasClass("ancestor-wrapper")) {
let index = self.properTitle.indexOf(curr.text());
if (index == self.properTitle.length-1) {
} else {
[self.properTitle[index], self.properTitle[index + 1]] = [self.properTitle[index + 1], self.properTitle[index]];
[self.family_deceased_N_selected[index], self.family_deceased_N_selected[index + 1]] =
[self.family_deceased_N_selected[index + 1], self.family_deceased_N_selected[index]];
}
}
@@ -708,41 +802,61 @@
},
async rerenderPart() {
let self = this;
let x = self.selectStyle;
let style = self.allStyle.find(y => y.styleID == x.style);
//用來印內容的尺寸
let size = self.allSize.find(y => y.paperID == style.paperSize);
let pageSize = self.allSize.find(y => y.paperID == style.printSize);
//包含空白用來折的尺寸
let printSize = self.allSize.find(y => y.paperID == style.printSize);
let details = self.allStyleDetails.filter(y => y.styleID == x.style);
if ($(self.selectedElement).children().first().hasClass("liveList")) {
$(self.selectedElement).empty();
//要重新render陽上
let left = []
Object.assign(left, self.alive);
//this.printData.forEach(x => {
let x = self.selectStyle;
let style = self.allStyle.find(y => y.styleID == x.style);
//用來印內容的尺寸
let size = self.allSize.find(y => y.paperID == style.paperSize);
let pageSize = self.allSize.find(y => y.paperID == style.printSize);
//包含空白用來折的尺寸
let printSize = self.allSize.find(y => y.paperID == style.printSize);
let details = self.allStyleDetails.filter(y => y.styleID == x.style);
let d = details.find(y => y.elementID == "alive");
let html = self.renderLiveList(left, d);
$(self.selectedElement).append(html);
} else {
if ($(self.selectedElement).children().first().hasClass("nameList")) {
$(self.selectedElement).empty();
//要重新render陽上
let mid = []
Object.assign(mid, self.properTitle);
//this.printData.forEach(x => {
let x = self.selectStyle;
let style = self.allStyle.find(y => y.styleID == x.style);
//用來印內容的尺寸
let size = self.allSize.find(y => y.paperID == style.paperSize);
let pageSize = self.allSize.find(y => y.paperID == style.printSize);
//包含空白用來折的尺寸
let printSize = self.allSize.find(y => y.paperID == style.printSize);
let details = self.allStyleDetails.filter(y => y.styleID == x.style);
//要重新render陽上
if ($(self.selectedElement).children().first().hasClass("nameList")) {
$(self.selectedElement).empty();
let d = details.find(y => y.elementID == "title1");
let newfontSize = self.scaleFontSize(mid, d.fontSize, d.textWidth)
if (newfontSize < 10) {
newfontSize = 10;
}
$(self.selectedElement).css("font-size", newfontSize);
let html = self.renderNameList(mid, d, style.fontSize, style);
$(self.selectedElement).append(html);
} else if ($(self.selectedElement).children().first().hasClass("rosterList")) {
$(self.selectedElement).empty();
let d = details.find(y => y.elementID == "titletriangle");
let newfontSize = self.scaleFontSize(mid, d.fontSize, d.textWidth)
if (newfontSize < 10) {
newfontSize = 10;
}
$(self.selectedElement).css("font-size", newfontSize);
let html = self.renderRoster(mid, d);
$(self.selectedElement).append(html);
} else if ($(self.selectedElement).children().first().hasClass("ancestor-wrapper")) {
$(self.selectedElement).empty();
let d = details.find(y => y.elementID == "combined");
let newfontSize = self.scaleFontSize(mid, d.fontSize, d.textWidth)
if (newfontSize < 10) {
newfontSize = 10;
}
$(self.selectedElement).css("font-size", newfontSize);
let html = self.renderCombined(mid, d);
$(self.selectedElement).append(html);
}
}
},
@@ -757,12 +871,16 @@
//},
changeStyle() {
let self = this;
this.selected.style = $("#styleSel").val();
this.selectStyle.style = $("#styleSel").val();
//console.log("changeStyle:",this.selectStyle);
this.render();
},
fix2(val) {
return Number.parseFloat(val).toFixed(2);
},
renderNameList(mid,d,newFontSize,style) {
renderNameList(mid, d, newFontSize, style) {
let self = this;
let $namelist = $(`<div class='nameList'></div>`).css({
"writing-mode": "vertical rl",
@@ -866,6 +984,16 @@
if (bot.length) h.append(this.renderNameGroups(bot, el));
return h
},
renderCombined(mid,d) {
ancestorFontSize = d.fontSize;
newFontSize = d.fontSize;
const parts = mid.join("\n").split('\n');
html = `<div class="ancestor-wrapper" style="width:${d.width}px !important;height:${d.height}px !important;" >
<span class="main-name" >${parts[0] || ''}</span>
<span class="sub-text">${parts[1] || ''}</span>
</div>`;
return html
},
renderNameGroups(items, el) {
let g = $(`<div class="rosterspan"></div>`).css({
"display": "flex",
@@ -891,7 +1019,7 @@
//if (dStyle.elementID === 'title1') {//表示是一般正名,也就是牌位正中間的一般格式,排法是上下上下
if ((Math.ceil(txtContent.length / 2) * font.width) * 2 > parseFloat(elementWidth)) {
let newfontSize = parseInt(fontSize) - 1;
if (newfontSize <= 8) {
if (newfontSize <= 10) {
return newfontSize;
}
//console.log("newfontSize:",newfontSize)
@@ -933,22 +1061,22 @@
//console.log("tabletItem:", designer.tabletItem);
//拚牌位的內容
let self = this;
let target = self.familyMembers.filter(x => self.alive.includes(x.fam_name));
designer.family_deceased_Y_selected.length = 0;
self.alive.forEach(x => {
let t = target.find(y => y.fam_name == x);
let obj = {
IsShuWen: false,
deceased: false,
fam_gender: "",
fam_name: t.fam_name,
fam_file: "",
nospace: true,
num: t.num,
option_break: false
}
designer.family_deceased_Y_selected.push(obj);
});
//let target = self.familyMembers.filter(x => self.alive.includes(x.fam_name));
//designer.family_deceased_Y_selected.length = 0;
//self.alive.forEach(x => {
// let t = target.find(y => y.fam_name == x);
// let obj = {
// IsShuWen: false,
// deceased: false,
// fam_gender: "",
// fam_name: t.fam_name,
// fam_file: "",
// nospace: true,
// num: t.num,
// option_break: false
// }
// designer.family_deceased_Y_selected.push(obj);
//});
//console.log(designer.family_deceased_Y_selected, designer.family_deceased_N_selected);
let tablet = { mid_items: designer.family_deceased_N_selected, left_items: designer.family_deceased_Y_selected, style: designer.selectStyle.style }
@@ -981,14 +1109,38 @@
await axios
.post('/api/order/SaveDetailData', pro_order_detail)
.then(response => {
console.log(response);
let tablet_data = {
mid_items: self.family_deceased_N_selected,
left_items: self.family_deceased_Y_selected,
style: self.selectStyle.style
}
const ret = {
source: 'editorNew.btn.click',
data: {
tabletItem: this.tabletItem,
tablet_data: tablet_data,
style: self.selectStyle.style
}
};
window.parent.postMessage(ret, '/');
//$.toast({
// heading: 'Success',
// text: 'Your action was completed successfully!',
// showHideTransition: 'slide', // fade, slide, plain
// icon: 'success', // info, warning, error, success
// position: 'top-left',
// loaderBg: '#4CAF50', // loader background color
// hideAfter: 3000 // auto close after 3 seconds
//});
//$(".toast-body").empty();
//$(".toast-body").html("ok");
//this.toast.show();
});
//console.log("pro_order_detail:",pro_order_detail);
},
reset() {
designer.code = { style: [] };
designer.selected = {
style: ""
@@ -1025,13 +1177,21 @@
designer.rightProperTitle = [];//右正名
designer.address = "";//地址
designer.alive = [];//陽上
designer.tabletType= "A";
$(".printArea").empty();
$(".selectItem").empty();
$(".canselectItem").empty();
},
async resetScreen() {
$(".printArea").empty();
$(".selectItem").empty();
$(".canselectItem").empty();
}
}
$(() => $(window).on("message", function (event) {
//designer.reset();
let e = event.originalEvent;
if (e.origin === window.parent.location.origin) {
//console.log('editor.html - origin check passed');
@@ -1051,20 +1211,20 @@
designer.tabletItem = receivedData.tabletItem;
}
//console.log("actitem:", receivedData.tabletItem.actitem_num_selected.val);
console.log("receivedData::", receivedData);
if (receivedData.tabletItem.style) {
designer.selected.style = receivedData.tabletItem.style;
} else {
designer.selected.style = "";
}
console.log("actitem:", receivedData.tabletItem.actitem_num_selected.val);
designer.actitem = receivedData.tabletItem.actitem_num_selected.val;
//console.log("actitem:",receivedData.tabletItem.actitem_num_selected.val);
// 處理 f_num_tablet 資料
if (designer.tabletItem.f_num_tablet) {
try {
const data = JSON.parse(designer.tabletItem.f_num_tablet);
console.log("阿巫醫ㄟ喔:", data)
if (designer.item_type === 'B') {
// B類型:超渡、超薦等
designer.family_deceased_Y_selected = data.mid_items || [];
@@ -1103,15 +1263,18 @@
console.error('解析牌位資料時發生錯誤:', e);
}
}
designer.resetScreen();
designer.getActItem().then(() => delay(300)).then(() => designer.getData());
designer.getActItem();
designer.getData();
}
}
console.log(e.origin, window.parent.location.origin)
})
)
);
function delay(ms) {
return new Promise(resolve => setTimeout(resolve, ms));
}
$(() => designer.init().then(() => designer.getTabletElement().
then(() => designer.getPaperSize().
then(() => designer.getTabletStyles().
+2 -2
View File
@@ -46,8 +46,8 @@
</appSettings>
<connectionStrings>
<!--SQL用-->
<add name="shopConn" providerName="System.Data.SqlClient" connectionString="Data Source=192.168.5.27;Initial Catalog=17168erp_c;User ID=sa;Password=linux@mssql1234;Encrypt=False;TrustServerCertificate=True;Provider=SQLOLEDB;Connection Timeout=10;" />
<add name="ezEntities" providerName="System.Data.EntityClient" connectionString="metadata=res://*/App_Code.Model.Model.csdl|res://*/App_Code.Model.Model.ssdl|res://*/App_Code.Model.Model.msl;provider=System.Data.SqlClient;provider connection string=&quot;Data Source=192.168.5.27;Initial Catalog=17168erp_c;User ID=sa;Password=linux@mssql1234;Encrypt=False;TrustServerCertificate=True;Connection Timeout=10;&quot;" />
<add name="shopConn" providerName="System.Data.SqlClient" connectionString="Data Source=192.168.5.20;Initial Catalog=17168erp_c;User ID=sa;Password=linux@mssql1234;Encrypt=False;TrustServerCertificate=True;Provider=SQLOLEDB;Connection Timeout=10;" />
<add name="ezEntities" providerName="System.Data.EntityClient" connectionString="metadata=res://*/App_Code.Model.Model.csdl|res://*/App_Code.Model.Model.ssdl|res://*/App_Code.Model.Model.msl;provider=System.Data.SqlClient;provider connection string=&quot;Data Source=192.168.5.20;Initial Catalog=17168erp_c;User ID=sa;Password=linux@mssql1234;Encrypt=False;TrustServerCertificate=True;Connection Timeout=10;&quot;" />
<!--
-->
<!--SQL用-->