You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
342 lines
7.5 KiB
342 lines
7.5 KiB
import store from '@/store'
|
|
|
|
function genCard(vcard) {
|
|
let vcardLink;
|
|
if (vcard.url.trim().length > 0) {
|
|
if (vcard.nc_func.indexOf("nourl") !== -1) {
|
|
vcardLink = {
|
|
type: "text",
|
|
text: vcard.url,
|
|
color: "#FFFFFF",
|
|
align: "end",
|
|
};
|
|
} else {
|
|
vcardLink = {
|
|
type: "text",
|
|
text: vcard.url,
|
|
color: "#FFFFFF",
|
|
align: "end",
|
|
action: {
|
|
type: "uri",
|
|
label: "action",
|
|
uri: vcard.url,
|
|
},
|
|
};
|
|
}
|
|
} else {
|
|
vcardLink = {
|
|
type: "text",
|
|
text: " ",
|
|
color: "#FFFFFF",
|
|
align: "end",
|
|
};
|
|
}
|
|
|
|
let vcardAddr;
|
|
if (vcard.address.trim().length > 0) {
|
|
vcardAddr = {
|
|
type: "box",
|
|
layout: "vertical",
|
|
contents: [
|
|
{
|
|
type: "text",
|
|
text: vcard.address.substr(0, 3),
|
|
size: "sm",
|
|
},
|
|
{
|
|
type: "text",
|
|
text:
|
|
vcard.address.substr(3).length > 0 ? vcard.address.substr(3) : " ",
|
|
size: "sm",
|
|
wrap: true,
|
|
maxLines: 2,
|
|
},
|
|
],
|
|
position: "absolute",
|
|
offsetTop: "30%",
|
|
offsetStart: "25%",
|
|
width: "40%",
|
|
height: "60px",
|
|
action: {
|
|
type: "uri",
|
|
label: "action",
|
|
uri: `https://www.google.com.tw/maps/place/${encodeURIComponent(
|
|
vcard.address
|
|
)}`,
|
|
},
|
|
};
|
|
} else {
|
|
vcardAddr = {
|
|
type: "box",
|
|
layout: "vertical",
|
|
contents: [
|
|
{
|
|
type: "text",
|
|
text: " ",
|
|
size: "sm",
|
|
},
|
|
],
|
|
position: "absolute",
|
|
offsetTop: "30%",
|
|
offsetStart: "25%",
|
|
width: "40%",
|
|
height: "60px",
|
|
};
|
|
}
|
|
|
|
if (vcard.title.trim().length == 0) {
|
|
vcard.title = " ";
|
|
}
|
|
|
|
let vcardTel;
|
|
|
|
if (vcard.tel.trim().length == 0) {
|
|
vcardTel = {
|
|
type: "text",
|
|
text: " ",
|
|
align: "end",
|
|
};
|
|
} else {
|
|
vcardTel = {
|
|
type: "text",
|
|
text: vcard.tel,
|
|
align: "end",
|
|
action: {
|
|
type: "uri",
|
|
label: "action",
|
|
uri: "tel:" + vcard.tel,
|
|
},
|
|
};
|
|
}
|
|
|
|
let vcardPhone;
|
|
|
|
if (vcard.phone.trim().length == 0) {
|
|
vcardPhone = {
|
|
type: "text",
|
|
text: " ",
|
|
align: "end",
|
|
};
|
|
} else {
|
|
vcardPhone = {
|
|
type: "text",
|
|
text: vcard.phone,
|
|
align: "end",
|
|
action: {
|
|
type: "uri",
|
|
label: "action",
|
|
uri: "tel:" + vcard.phone,
|
|
},
|
|
};
|
|
}
|
|
|
|
let vcardAvatar;
|
|
if (vcard.avatar.trim().length > 0) {
|
|
vcardAvatar = {
|
|
type: "image",
|
|
url: vcard.avatar,
|
|
action: {
|
|
type: "uri",
|
|
label: "action",
|
|
uri: vcard.nfcurl + "&cardid=1",
|
|
},
|
|
aspectMode: "cover",
|
|
size: "full",
|
|
};
|
|
} else {
|
|
vcardAvatar = {
|
|
type: "text",
|
|
text: " ",
|
|
size: "xs",
|
|
};
|
|
}
|
|
|
|
let vcardEmail;
|
|
|
|
if (vcard.email.trim().length > 0) {
|
|
vcardEmail = {
|
|
type: "text",
|
|
text: vcard.email,
|
|
color: "#333334",
|
|
size: "sm",
|
|
weight: "bold",
|
|
action: {
|
|
type: "uri",
|
|
label: "action",
|
|
uri: `mailto:${vcard.email}`,
|
|
},
|
|
align: "end",
|
|
};
|
|
} else {
|
|
vcardEmail = {
|
|
type: "text",
|
|
text: " ",
|
|
color: "#333334",
|
|
size: "sm",
|
|
weight: "bold",
|
|
align: "end",
|
|
};
|
|
}
|
|
|
|
let card = {
|
|
altText: "UTel電子名片",
|
|
type: "flex",
|
|
contents: {
|
|
type: "bubble",
|
|
size: "giga",
|
|
body: {
|
|
type: "box",
|
|
layout: "vertical",
|
|
contents: [
|
|
{
|
|
type: "image",
|
|
url: "https://card."+store.state.domain+"/images/tpl02_bg.png",
|
|
size: "full",
|
|
aspectMode: "cover",
|
|
aspectRatio: "4:3",
|
|
gravity: "top",
|
|
},
|
|
{
|
|
type: "box",
|
|
layout: "vertical",
|
|
contents: [vcardAvatar],
|
|
position: "absolute",
|
|
offsetTop: "13%",
|
|
offsetStart: "3%",
|
|
width: "75px",
|
|
height: "75px",
|
|
cornerRadius: "100px",
|
|
},
|
|
{
|
|
type: "box",
|
|
layout: "vertical",
|
|
contents: [
|
|
{
|
|
type: "box",
|
|
layout: "vertical",
|
|
contents: [
|
|
{
|
|
type: "text",
|
|
text: "加入好友",
|
|
align: "center",
|
|
color: "#ffffff",
|
|
weight: "bold",
|
|
margin: "xs",
|
|
size: "xs",
|
|
},
|
|
],
|
|
backgroundColor: "#ffcc5b",
|
|
width: "100%",
|
|
cornerRadius: "5px",
|
|
action: {
|
|
type: "uri",
|
|
label: "action",
|
|
uri: "https://line.naver.jp/ti/p/~" + vcard.line,
|
|
},
|
|
paddingTop: "5px",
|
|
paddingBottom: "5px",
|
|
},
|
|
{
|
|
type: "box",
|
|
layout: "vertical",
|
|
contents: [
|
|
{
|
|
type: "text",
|
|
text: "分享名片",
|
|
align: "center",
|
|
color: "#ffffff",
|
|
weight: "bold",
|
|
margin: "xs",
|
|
size: "xs",
|
|
},
|
|
],
|
|
backgroundColor: "#ffcc5b",
|
|
width: "100%",
|
|
cornerRadius: "5px",
|
|
margin: "md",
|
|
paddingTop: "5px",
|
|
paddingBottom: "5px",
|
|
},
|
|
],
|
|
position: "absolute",
|
|
offsetStart: "10%",
|
|
width: "20%",
|
|
offsetBottom: "16%",
|
|
action: {
|
|
type: "uri",
|
|
label: "action",
|
|
uri: `${process.env.VUE_APP_SEND_URL}/?userid=${vcard.user_id}&cardid=1`,
|
|
},
|
|
},
|
|
{
|
|
type: "box",
|
|
layout: "vertical",
|
|
contents: [
|
|
{
|
|
type: "text",
|
|
text: vcard.name,
|
|
},
|
|
],
|
|
position: "absolute",
|
|
offsetTop: "13%",
|
|
offsetStart: "25%",
|
|
width: "90px",
|
|
},
|
|
{
|
|
type: "box",
|
|
layout: "vertical",
|
|
contents: [
|
|
{
|
|
type: "text",
|
|
text: vcard.title,
|
|
},
|
|
],
|
|
position: "absolute",
|
|
offsetTop: "13%",
|
|
offsetStart: "51%",
|
|
width: "50%",
|
|
},
|
|
vcardAddr,
|
|
{
|
|
type: "box",
|
|
layout: "vertical",
|
|
contents: [vcardPhone, vcardTel],
|
|
position: "absolute",
|
|
offsetTop: "30%",
|
|
offsetEnd: "5%",
|
|
width: "30%",
|
|
},
|
|
{
|
|
type: "box",
|
|
layout: "vertical",
|
|
contents: [
|
|
{
|
|
type: "text",
|
|
text: vcard.company,
|
|
size: "lg",
|
|
color: "#EFEFEF",
|
|
align: "end",
|
|
weight: "bold",
|
|
},
|
|
vcardLink,
|
|
],
|
|
position: "absolute",
|
|
offsetTop: "65%",
|
|
offsetEnd: "5%",
|
|
width: "60%",
|
|
},
|
|
],
|
|
paddingAll: "0px",
|
|
action: {
|
|
type: "uri",
|
|
label: "action",
|
|
uri: vcard.nfcurl + "&cardid=1",
|
|
},
|
|
},
|
|
},
|
|
};
|
|
return { card: JSON.stringify(card) };
|
|
}
|
|
|
|
export { genCard };
|