still 牌位版面調整

This commit is contained in:
2026-04-10 17:24:46 +08:00
parent c5fc2469d7
commit 21a3ec6198
5 changed files with 311 additions and 31 deletions
@@ -8,7 +8,7 @@
<LastUsedPlatform>Any CPU</LastUsedPlatform>
<LaunchSiteAfterPublish>true</LaunchSiteAfterPublish>
<PublishProvider>FileSystem</PublishProvider>
<PublishUrl>D:\17168web</PublishUrl>
<PublishUrl>C:\17168web</PublishUrl>
<WebPublishMethod>FileSystem</WebPublishMethod>
<_TargetId>Folder</_TargetId>
<SiteUrlToLaunchAfterPublish />
+18
View File
@@ -914,6 +914,24 @@
$(`.tablet-element[id="${this.activeId}"]`).css({
position: "absolute", left: el.x + "mm", top: el.y + "mm", fontSize: el.style.fontSize + 'pt', fontFamily: el.style.fontFamily, "z-index": 9999, visibility: el.style.visibility
}).html(html);
} else if (this.activeId==="righttitle") {
$(`.tablet-element[id="${this.activeId}"]`).css({
position: "absolute", left: el.x + "mm", top: el.y + "mm", fontSize: el.style.fontSize + 'pt',
fontFamily: el.style.fontFamily, "z-index": 9999, visibility: el.style.visibility,
width:el.width,height:el.height
}).text(el.text);
} else if (this.activeId === "lefttitle") {
$(`.tablet-element[id="${this.activeId}"]`).css({
position: "absolute", left: el.x + "mm", top: el.y + "mm", fontSize: el.style.fontSize + 'pt',
fontFamily: el.style.fontFamily, "z-index": 9999, visibility: el.style.visibility,
width: el.width, height: el.height
}).text(el.text);
} else if (this.activeId === "address") {
$(`.tablet-element[id="${this.activeId}"]`).css({
position: "absolute", left: el.x + "mm", top: el.y + "mm", fontSize: el.style.fontSize + 'pt',
fontFamily: el.style.fontFamily, "z-index": 9999, visibility: el.style.visibility,
width: el.width, height: el.height
}).text(el.text);
} else {
$(`.tablet-element[id="${this.activeId}"]`).css({
position: "absolute", left: el.x + "mm", top: el.y + "mm", fontSize: el.style.fontSize + 'pt', fontFamily: el.style.fontFamily, "z-index": 9999, visibility: el.style.visibility
+2 -3
View File
@@ -875,8 +875,6 @@
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) {
@@ -952,7 +950,8 @@
...itemToSend,
title: this.titleword() // 確保標題被包含
},
familyMembers: familyMembers
familyMembers: familyMembers,
host: HTTP_HOST
};
iframe.contentWindow.postMessage(itemInfo, '*');
+35 -2
View File
@@ -301,6 +301,9 @@
let mid_items = tablet.mid_items;
let left_items = tablet.left_items;
let mid_left = tablet.mid_left;
let mid_right = tablet.mid_right;
let addr_items = tablet.addr_items;
let details = this.allStyleDetails.filter(y => y.styleID == x.style);
let mid = [];
@@ -313,6 +316,20 @@
left.push(y.fam_name);
});
}
let lefttitle = [];
if (mid_left) {
mid_left.forEach(y => {
lefttitle.push(y.fam_name);
});
}
let righttitle = [];
if (mid_right) {
mid_right.forEach(y => {
righttitle.push(y.fam_name);
});
}
let address = addr_items;
let ancestorFontSize = 16;
details.forEach(d => {
if (d.isActive != "hidden") {
@@ -379,6 +396,13 @@
<span class="main-name" >${parts[0] || ''}</span>
<span class="sub-text">${parts[1] || ''}</span>
</div>`;
} else if (d.elementID === "address") {
html = self.renderNormal(address, d)
} else if (d.elementID === "lefttitle") {
html = self.renderNormal(lefttitle, d)
}
else if (d.elementID === "righttitle") {
html = self.renderNormal(righttitle, d)
}
if (newFontSize < 10) {
newFontSize = 10;
@@ -765,10 +789,19 @@
"white-space": "pre-line"
})
items.forEach(x => {
g.append($(`<div class="" style="font-size:${el.fontSize}pt;letter-spacing: 10px;">${x}</div>`))
g.append($(`<div class="" style="letter-spacing: 10px;">${x}</div>`))
})
return g;
},
renderNormal(mid, d) {
console.log("renderNormal:", d)
let self = this;
let txt = $(`<div class='${d.elementID}'>${mid}</div>`).css({
"z-index": 9999, visibility: d.visibility,
width: d.width, height: d.height
});
return txt;
},
autoScale(names, base) {
const max = Math.max(...names.map(n => n.length), 0);
return max > 5 ? Math.max(base * (5 / max), base * 0.6) : base;
@@ -811,7 +844,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)
+253 -23
View File
@@ -78,7 +78,18 @@
</div>
<div class="row" style="height: 50%; overflow: auto;">
<div style="display:inline-block;width:100%;height:30px;background-color:darkgray;">
<h3>可選</h3>
<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="filter_txt"
onkeyup="designer.filterToSel()" placeholder="請輸入名稱" />
<label for="filter_txt">請輸入名稱</label>
</div>
</div>
</div>
<ul class="canselectItem" style="margin-left: 1rem;margin-right:1rem;">
</ul>
</div>
@@ -115,6 +126,9 @@
item: {},
family_deceased_Y_selected: [], // 超渡/超薦/超冤名單
family_deceased_N_selected: [], // 消災/陽上名單
family_left_title: [],
family_right_title: [],
family_address:"",
allStyle: [],
allStyleDetails: [],
allSize: [],
@@ -129,6 +143,7 @@
address: "",//地址
alive: [],//陽上
tabletType: "A",
http_host:"",
//toast:null,
bg: [
{ name: "黃1", path: "../../../admin/print/html/tablet-1_new.svg" },
@@ -247,24 +262,50 @@
if (response.status == 200) {
self.printData = response.data;
self.printData.forEach(x => {
if (x.style != null && x.style != undefined)
self.selectStyle.style = x.styleID;
if (x.style != null && x.style != undefined) {
self.selectStyle.style = x.style;
self.selected.style = x.style;
self.defaultStyle = x.style;
$("#styleSel").val(x.style)
}
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;
let mid_left = tablet.mid_left;
let mid_right = tablet.mid_right;
let address = tablet.addr_items;
self.family_deceased_Y_selected.length = 0;
self.family_deceased_N_selected.length = 0;
self.family_address = "";
self.family_left_title.length = 0;
self.family_right_title.length = 0;
Object.assign(self.family_deceased_N_selected, mid_items);
Object.assign(self.family_deceased_Y_selected, left_items);
Object.assign(self.family_left_title, mid_left);
Object.assign(self.family_right_title, mid_right);
self.family_address = tablet.addr_items;
//let mid = [];
//family_deceased_Y_selected family_deceased_N_selected
mid_items.forEach(y => {
self.properTitle.push(y.fam_name);
});
if (mid_left) {
mid_left.forEach(y => {
self.leftProperTitle.push(y.fam_name);
})
}
if (mid_right) {
mid_right.forEach(y => {
self.rightProperTitle.push(y.fam_name);
})
}
if (address) {
self.address = address;
}
//let left = []
if (left_items) {
left_items.forEach(y => {
@@ -293,6 +334,16 @@
Object.assign(mid, self.properTitle);
let left = []
Object.assign(left, self.alive);
let ltitle = [];
let rtitle = [];
let myAddress = [];
Object.assign(ltitle, self.leftProperTitle);
Object.assign(rtitle, self.rightProperTitle);
if (self.address!="") {
myAddress.push(self.address)
}
//this.printData.forEach(x => {
let x = self.selectStyle;
let style = self.allStyle.find(y => y.styleID == (x.style ? x.style : $("#styleSel").val()));
@@ -319,8 +370,7 @@
if (d.isActive != "hidden") {
let element = self.tabletElement.find(y => y.elementID == d.elementID);
let newFontSize = 16;
newFontSize=self.scaleFontSize(mid, d.fontSize, d.textWidth);
let newFontSize =self.scaleFontSize(mid, d.fontSize, d.width);
let html = "";
let alive = "";
let yang = "";
@@ -336,6 +386,8 @@
if (left.length == 0) {
left.push("請選擇");
}
newFontSize = self.scaleFontSize(left, d.fontSize, d.Width);
//newFontSize = d.fontSize;
html = self.renderLiveList(left, d);
} else if (d.elementID === "titletriangle") {
@@ -350,10 +402,26 @@
}
html = self.renderCombined(mid, d);
} else if (d.elementID === "lefttitle") {
if (ltitle.length == 0) {
ltitle.push("請選擇")
}
html = self.renderNormal(ltitle.join(""), d)
} else if (d.elementID === "righttitle") {
if (rtitle.length == 0) {
rtitle.push("請選擇")
}
html = self.renderNormal(rtitle.join(""), d)
} else if (d.elementID == "address") {
if (myAddress.length == 0) {
myAddress.push("請選擇")
}
html = self.renderNormal(myAddress.join(""), d)
}
if (newFontSize < 10) {
newFontSize = 10;
}
console.log("乎哈:", d.elementID, d.textWidth, newFontSize)
let content = $(`<div class="tablet-element vertical-text ">${element.sampleContent}</div>`)
.css({
position: "absolute", left: d.startX + "mm", top: d.startY + "mm", fontSize: newFontSize + 'px',
@@ -580,7 +648,17 @@
});
} else if (element.hasClass("address")) {//地址
$(".selectedItem").append(`<li><span style="opacity:0.5">卍</span>
<span class="selected">${self.address}</span>027
<span class="itemRemove" style="float:right ;margin-left:2rem;cursor:pointer;" >&minus;</span>`);
} else if (element.hasClass("lefttitle")) {//左正名
$(".selectedItem").append(`<li><span style="opacity:0.5">卍</span>
<span class="selected">${self.leftProperTitle.join("")}</span>
<span class="itemRemove" style="float:right ;margin-left:2rem;cursor:pointer;" >&minus;</span>`);
} else if (element.hasClass("righttitle")) {//右正名
$(".selectedItem").append(`<li><span style="opacity:0.5">卍</span>
<span class="selected">${self.rightProperTitle.join("")}</span>
<span class="itemRemove" style="float:right ;margin-left:2rem;cursor:pointer;" >&minus;</span>`);
} else {//其他都是正名
if (element.hasClass("ancestor-wrapper")) {//多姓氏合併,只允許用打的
@@ -620,6 +698,7 @@
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());
@@ -664,6 +743,62 @@
}
self.family_deceased_N_selected.push(obj);
}
} else if (target.hasClass("lefttitle")) {
//if (self.leftProperTitle.length >= 1) {
// alert("左正名");
//} else {
self.leftProperTitle.length = 0;
self.family_left_title.length = 0;
self.leftProperTitle.push($("#custom_txt").val());
let obj = {
IsShuWen: false,
deceased: false,
fam_gender: "",
fam_name: $("#custom_txt").val(),
fam_file: "",
nospace: true,
num: -1,
option_break: false
}
self.family_left_title.push(obj);
//self.family_deceased_N_selected.push(obj);
//}
} else if (target.hasClass("righttitle")) {
//if (self.rightProperTitle.length >= 1) {
// alert("右正名");
//} else {
self.rightProperTitle.length = 0;
self.family_right_title.length = 0;
self.rightProperTitle.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_right_title.push(obj);
//self.family_deceased_N_selected.push(obj);
//}
} else if (target.hasClass("address")) {
self.address=($("#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_address=self.address
//self.family_deceased_N_selected.push(obj);
}
$("#custom_txt").val("");
self.renderItem($(self.selectedElement).children().first());
@@ -717,14 +852,23 @@
let curr = $(e.currentTarget.parentElement).find(".selected").first();
if ($(self.selectedElement).children().first().hasClass("liveList")) {
self.alive = self.alive.filter(x => x !== curr.text());
self.family_deceased_Y_selected=self.family_deceased_Y_selected.filter(x => x.fam_name != curr.text());
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_N_selected=self.family_deceased_N_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.family_deceased_N_selected = self.family_deceased_N_selected.filter(x => x.fam_name != curr.text());
} else if ($(self.selectedElement).children().first().hasClass("address")) {
self.address = curr.text();
self.family_address = curr.text()
} else if ($(self.selectedElement).children().first().hasClass("lefttitle")) {
self.leftProperTitle = self.leftProperTitle.filter(x => x !== curr.text());
self.family_left_title = self.family_left_title = (x => x.fam_name !== curr.text());
} else if ($(self.selectedElement).children().first().hasClass("righttitle")) {
self.rightProperTitle = self.rightProperTitle.filter(x => x !== curr.text());
self.family_right_title = self.family_right_title = (x => x.fam_name !== curr.text());
}
self.renderItem($(self.selectedElement).children().first());
self.rerenderPart();
@@ -760,6 +904,24 @@
[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("address")) {
//self.address = curr.text();
} else if ($(self.selectedElement).children().first().hasClass("lefttitle")) {
let index = self.leftProperTitle.indexOf(curr.text());
if (index == 0) {
} else {
[self.leftProperTitle[index - 1], self.leftProperTitle[index]] = [self.leftProperTitle[index], self.properTitle[index - 1]];
}
} else if ($(self.selectedElement).children().first().hasClass("righttitle")) {
let index = self.rightProperTitle.indexOf(curr.text());
if (index == 0) {
} else {
[self.rightProperTitle[index - 1], self.rightProperTitle[index]] = [self.rightProperTitle[index], self.properTitle[index - 1]];
};
}
self.renderItem($(self.selectedElement).children().first());
self.rerenderPart();
@@ -794,6 +956,24 @@
[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("address")) {
//self.address = curr.text();
} else if ($(self.selectedElement).children().first().hasClass("lefttitle")) {
let index = self.leftProperTitle.indexOf(curr.text());
if (index == 0) {
} else {
[self.leftProperTitle[index], self.leftProperTitle[index+1]] = [self.leftProperTitle[index+1], self.properTitle[index]];
}
} else if ($(self.selectedElement).children().first().hasClass("righttitle")) {
let index = self.rightProperTitle.indexOf(curr.text());
if (index == 0) {
} else {
[self.rightProperTitle[index], self.rightProperTitle[index+1]] = [self.rightProperTitle[index+1], self.properTitle[index]];
};
}
self.renderItem($(self.selectedElement).children().first());
@@ -820,13 +1000,36 @@
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("lefttitle") ||
$(self.selectedElement).children().first().hasClass("righttitle") ||
$(self.selectedElement).children().first().hasClass("address")) {
//要重新render陽上
let data = []
if ($(self.selectedElement).children().first().hasClass("lefttitle")) {
$(self.selectedElement).empty();
Object.assign(data, self.leftProperTitle);
let d = details.find(y => y.elementID == "lefttitle");
let html = self.renderNormal(data, d);
//console.log("html:",html);
$(self.selectedElement).append(html);
} else if ($(self.selectedElement).children().first().hasClass("righttitle")) {
$(self.selectedElement).empty();
Object.assign(data, self.rightProperTitle);
let d = details.find(y => y.elementID == "righttitle");
let html = self.renderNormal(data, d);
$(self.selectedElement).append(html);
} else if ($(self.selectedElement).children().first().hasClass("address")) {
$(self.selectedElement).empty();
data.push(self.address);
let d = details.find(y => y.elementID == "address");
let html = self.renderNormal(data, d);
$(self.selectedElement).append(html);
}
//this.printData.forEach(x => {
} else {
let mid = []
Object.assign(mid, self.properTitle);
//要重新render陽上
if ($(self.selectedElement).children().first().hasClass("nameList")) {
$(self.selectedElement).empty();
let d = details.find(y => y.elementID == "title1");
@@ -863,13 +1066,6 @@
async itemAppend(e) {
//console.log(e);
},
//async getFamily() {
// let param = {};
// await axios
// .post('/api/familymembers/follower', { param: param })
// .then(response => { });
//},
changeStyle() {
let self = this;
this.selected.style = $("#styleSel").val();
@@ -880,6 +1076,15 @@
fix2(val) {
return Number.parseFloat(val).toFixed(2);
},
renderNormal(mid, d) {
console.log("renderNormal:",d)
let self = this;
let txt = $(`<div class='${d.elementID}'>${mid}</div>`).css({
"z-index": 9999, visibility: d.visibility,
width: d.width, height: d.height
});
return txt;
},
renderNameList(mid, d, newFontSize, style) {
let self = this;
let $namelist = $(`<div class='nameList'></div>`).css({
@@ -1003,7 +1208,7 @@
"white-space": "pre-line"
})
items.forEach(x => {
g.append($(`<div class="" style="font-size:${el.fontSize}pt;letter-spacing: 10px;">${x}</div>`))
g.append($(`<div class="" style="letter-spacing: 10px;">${x}</div>`))//font-size:${el.fontSize}pt;
})
return g;
},
@@ -1017,6 +1222,7 @@
//自動判斷縮小字型的規則,要同時縮小間距
//if (dStyle.elementID === 'title1') {//表示是一般正名,也就是牌位正中間的一般格式,排法是上下上下
//console.log("shit:", txtContent.join(","), (Math.ceil(txtContent.length / 2) * font.width) * 2, parseFloat(elementWidth))
if ((Math.ceil(txtContent.length / 2) * font.width) * 2 > parseFloat(elementWidth)) {
let newfontSize = parseInt(fontSize) - 1;
if (newfontSize <= 10) {
@@ -1057,6 +1263,19 @@
document.body.removeChild(span);
return result;
},
filterToSel() {
let allList = document.querySelector(".canselectItem").querySelectorAll("li"); //$(".canselectItem").querySelectorAll("li");
allList.forEach(x => {
let curr = $(x).children().eq(1);
x.setAttribute("style","display:none")
$(x).css("style", "display:none")
if (curr && curr.text().includes($("#filter_txt").val())) {
x.setAttribute("style", "display:")
} else {
}
});
},
async save() {
//console.log("tabletItem:", designer.tabletItem);
//拚牌位的內容
@@ -1079,7 +1298,15 @@
//});
//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 }
let tablet = {
mid_items: designer.family_deceased_N_selected,
left_items: designer.family_deceased_Y_selected,
style: designer.selectStyle.style,
mid_left: designer.family_left_title,
mid_right: designer.family_right_title,
addr_items: designer.family_address
}
console.log(JSON.stringify(tablet));
var pro_order_detail =
{
num: designer.tabletItem.num <= 0 ? null : designer.tabletItem.num,
@@ -1113,7 +1340,10 @@
let tablet_data = {
mid_items: self.family_deceased_N_selected,
left_items: self.family_deceased_Y_selected,
style: self.selectStyle.style
style: self.selectStyle.style,
mid_left: self.family_left_title,
mid_right: self.family_right_title,
addr_items: self.family_address
}
const ret = {
source: 'editorNew.btn.click',
@@ -1199,7 +1429,7 @@
const receivedData = e.data;
designer.family_deceased_Y_selected = [];
designer.family_deceased_N_selected = [];
designer.http_host = receivedData.host;
if (receivedData.tabletItem) {
//console.log('editor.html - updating tabletItem:', receivedData.tabletItem);
designer.tabletItem = receivedData.tabletItem;