You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
2896 lines
114 KiB
HTML
2896 lines
114 KiB
HTML
<!DOCTYPE html>
|
|
<html>
|
|
<head>
|
|
<meta charset="utf-8" />
|
|
<meta
|
|
name="viewport"
|
|
content="width=device-width, initial-scale=1, maximum-scale=1"
|
|
/>
|
|
<title>会议大屏</title>
|
|
<link rel="stylesheet" type="text/css" href="/webs/resourse/iconfont.css" />
|
|
<!-- <script src="/webs/resourse/fabric.js"></script> -->
|
|
<!-- <script src="/webs/resourse/fabric_3_6_2.js"></script>
|
|
<script src="/webs/resourse/moment.js"></script>
|
|
<script src="/webs/resourse/html2canvas.min.js"></script> -->
|
|
|
|
<script src="/webs/resourse/fabric_3_6_2.js"></script>
|
|
<script src="/webs/resourse/moment.js"></script>
|
|
<script src="/webs/resourse/html2canvas.min.js"></script>
|
|
|
|
<style>
|
|
body {
|
|
margin: 0;
|
|
padding: 0;
|
|
overflow: hidden;
|
|
}
|
|
|
|
.yt_content {
|
|
position: absolute;
|
|
z-index: 1;
|
|
overflow-x: hidden;
|
|
overflow-y: scroll;
|
|
}
|
|
|
|
.voteContent {
|
|
display: flex;
|
|
/* align-items: center; */
|
|
justify-content: center;
|
|
transform-origin: center center;
|
|
}
|
|
</style>
|
|
</head>
|
|
|
|
<body style="margin: 0; overflow: hidden">
|
|
<div id="yt_content" class="yt_content">
|
|
<div id="element" className="voteContent"></div>
|
|
</div>
|
|
|
|
<canvas id="canvas"></canvas>
|
|
<a style="font-family: 'fzxbs'; opacity: 0">字体测试</a>
|
|
</body>
|
|
<script type="text/javascript">
|
|
// 创建 FontFace 对象并加载字体文件
|
|
const font = new FontFace(
|
|
"fzxbs",
|
|
"url(/webs/resourse/fzxbs.ttf) format(truetype)"
|
|
);
|
|
font
|
|
.load()
|
|
.then(() => {
|
|
console.log("success");
|
|
})
|
|
.catch((err) => {
|
|
console.log("Failed to load font:");
|
|
});
|
|
|
|
const font1 = new FontFace(
|
|
"fzxbs",
|
|
"url(/webs/resourse/kaiti.ttf) format(truetype)"
|
|
);
|
|
font1
|
|
.load()
|
|
.then(() => {
|
|
console.log("success");
|
|
})
|
|
.catch((err) => {
|
|
console.log("Failed to load font:");
|
|
});
|
|
|
|
const font2 = new FontFace(
|
|
"fzxbs",
|
|
"url(/webs/resourse/heiti.ttf) format(truetype)"
|
|
);
|
|
font2
|
|
.load()
|
|
.then(() => {
|
|
console.log("success");
|
|
})
|
|
.catch((err) => {
|
|
console.log("Failed to load font:");
|
|
});
|
|
|
|
const font3 = new FontFace(
|
|
"fzxbs",
|
|
"url(/webs/resourse/songti.ttf) format(truetype)"
|
|
);
|
|
font3
|
|
.load()
|
|
.then(() => {
|
|
console.log("success");
|
|
})
|
|
.catch((err) => {
|
|
console.log("Failed to load font:");
|
|
});
|
|
|
|
const font4 = new FontFace(
|
|
"fzxbs",
|
|
"url(/webs/resourse/fangsong.ttf) format(truetype)"
|
|
);
|
|
font4
|
|
.load()
|
|
.then(() => {
|
|
console.log("success");
|
|
})
|
|
.catch((err) => {
|
|
console.log("Failed to load font:");
|
|
});
|
|
|
|
//添加文本标签start===============================
|
|
let handleSetText = (left, top, val) => {
|
|
// console.log(left,top,val)
|
|
const textWidth = val ? parseInt(val.width) : 200;
|
|
const textHeigth = val ? parseInt(val.height) : 100;
|
|
let textTop = 0;
|
|
if (val && val.verticalAlignment === "center") {
|
|
textTop = textTop + (textHeigth - val.fontSize) / 2;
|
|
} else if (val && val.verticalAlignment === "bottom") {
|
|
textTop = textTop + (textHeigth - val.fontSize);
|
|
}
|
|
let beforpara = "";
|
|
let afterpara = "";
|
|
const parmitems = val.systemParContent.split("Ψ");
|
|
if (parmitems.length > 1) {
|
|
beforpara = parmitems[0];
|
|
afterpara = parmitems[1];
|
|
}
|
|
|
|
let textContent =
|
|
beforpara + (val ? val.text + "" : "文本标签") + afterpara;
|
|
if (val.bindingFieldID == "0x1025") {
|
|
if (afterpara.includes("未按") && val.text == "0") {
|
|
textContent = "";
|
|
}
|
|
}
|
|
|
|
if (val.rowCount === "false") {
|
|
if (val && val.textTrimming !== "1") {
|
|
if (textContent.length * val.fontSize > textWidth) {
|
|
let num = Math.floor(textWidth / val.fontSize);
|
|
textContent = textContent.substr(0, num - 1) + "...";
|
|
}
|
|
} else {
|
|
if (textContent.length * val.fontSize > textWidth) {
|
|
let num = Math.floor(textWidth / val.fontSize);
|
|
textContent = textContent.substr(0, num);
|
|
}
|
|
}
|
|
}
|
|
|
|
const textBox = new fabric.Textbox(textContent, {
|
|
fill: val && val.foreground ? val.foreground : "#000",
|
|
fontSize: val && val.fontSize ? parseInt(val.fontSize) : 18,
|
|
fontWeight: val && val.fontWeight ? val.fontWeight : "normal",
|
|
fontStyle: val && val.fontStyle ? val.fontStyle : "normal",
|
|
fontFamily: val && val.fontFamily ? val.fontFamily : "SimSun",
|
|
textAlign:
|
|
val && val.horizontalAlignment ? val.horizontalAlignment : "",
|
|
shadow: val && val.effect == "true" ? shadow : null,
|
|
textTrimming: val && val.textTrimming ? val.textTrimming : "1",
|
|
width: textWidth,
|
|
left: 0,
|
|
top: textTop,
|
|
splitByGrapheme: val && val.rowCount == "true" ? true : false,
|
|
});
|
|
const border = new fabric.Rect({
|
|
left: 0,
|
|
top: 0,
|
|
width: textWidth,
|
|
height: textHeigth,
|
|
background: val && val.background.includes("#") ? val.background : "", //透明
|
|
fill: val && val.background.includes("#") ? val.background : "", //透明
|
|
opacity: val && val.background.includes("#") ? 1 : 0,
|
|
_type: "border",
|
|
});
|
|
let group = new fabric.Group([border, textBox], {
|
|
width: textWidth,
|
|
height: textHeigth,
|
|
text: val ? val.text + "" : "文本标签",
|
|
left: val ? parseInt(val.left) : parseInt(left - canvas._offset.left), //设置canvas上的X坐标
|
|
top: val ? parseInt(val.top) : parseInt(top - canvas._offset.top), //设置canvas上的Y坐标
|
|
effect: val && val.effect == "true" ? true : false,
|
|
component_type: "1",
|
|
fontFamily: val && val.fontFamily ? val.fontFamily : "SimSun",
|
|
fontSize: val && val.fontSize ? val.fontSize : 18,
|
|
fontStyle: val && val.fontStyle ? val.fontStyle : "normal",
|
|
fontWeight: val && val.fontWeight ? val.fontWeight : "normal",
|
|
horizontalAlignment:
|
|
val && val.horizontalAlignment ? val.horizontalAlignment : "left",
|
|
verticalAlignment:
|
|
val && val.verticalAlignment ? val.verticalAlignment : "top",
|
|
background: val && val.background.includes("#") ? val.background : "", //透明
|
|
foreground: val ? val.foreground : "#000", //字体颜色
|
|
textTrimming: val && val.textTrimming ? val.textTrimming : "1",
|
|
rowCount: val && val.rowCount == "true" ? true : false,
|
|
bindingFieldID: val && val.bindingFieldID ? val.bindingFieldID : "",
|
|
systemParContent: val.systemParContent,
|
|
cvalue: val,
|
|
lockMovementX: true, //X轴是否可被移动(true为不可)
|
|
lockMovementY: true, //Y轴是否可被移动(true为不可)
|
|
hasControls: false,
|
|
hasBorders: false,
|
|
});
|
|
if (val.bindingFieldID == "0x1043") {
|
|
let ts = textBox.text;
|
|
let timer = setInterval(() => {
|
|
let dd = parseInt(ts / 60 / 60 / 24); //计算剩余天数
|
|
dd = dd < 10 ? "0" + dd : dd;
|
|
let hh = parseInt((ts / 60 / 60) % 24); //计算剩余小时数
|
|
hh = hh < 10 ? "0" + hh : hh;
|
|
let mm = parseInt((ts / 60) % 60); //计算剩余分钟数
|
|
mm = mm < 10 ? "0" + mm : mm;
|
|
let ss = parseInt(ts % 60); //计算剩余秒数
|
|
ss = ss < 10 ? "0" + ss : ss;
|
|
console.log(dd + ":" + hh + ":" + mm + ":" + ss);
|
|
textBox.set({
|
|
text: mm + ":" + ss,
|
|
});
|
|
if (ts > 0) {
|
|
ts--;
|
|
} else {
|
|
clearInterval(timer);
|
|
}
|
|
}, 1000);
|
|
}
|
|
|
|
canvas.add(group); // 将图形添加至画布
|
|
};
|
|
//添加文本标签end===============================
|
|
|
|
//添加图片照片start=====================================
|
|
let handleAddImage = (left, top, image) => {
|
|
let ImgElement = document.createElement("img");
|
|
// ImgElement.src = image
|
|
let img = new fabric.Image(ImgElement, {
|
|
scaleX: 1,
|
|
scaleY: 1,
|
|
// originX: 'center',
|
|
// originY: 'center',
|
|
});
|
|
let group = new fabric.Group([img], {
|
|
// left: 130, //设置canvas上的X坐标
|
|
// top: 130, //设置canvas上的Y坐标
|
|
left: image
|
|
? parseInt(image.left)
|
|
: parseInt(left - canvas._offset.left), //设置canvas上的X坐标
|
|
top: image ? parseInt(image.top) : parseInt(top - canvas._offset.top), //设置canvas上的Y坐标
|
|
component_type: "2",
|
|
width: image ? image.width : 100,
|
|
height: image ? image.height : 100,
|
|
shadow: image && image.effect === "true" ? shadow : null,
|
|
effect: image && image.effect === "true" ? true : false,
|
|
imagePath:
|
|
image && image.imagePath
|
|
? image.imagePath
|
|
: "webs/upload/img/001.jpg",
|
|
bindingFieldID: image ? image.bindingFieldID : "-1",
|
|
cvalue: image,
|
|
resourceMode: image ? image.resourceMode : "0",
|
|
lockMovementX: true, //X轴是否可被移动(true为不可)
|
|
lockMovementY: true, //Y轴是否可被移动(true为不可)
|
|
hasControls: false,
|
|
hasBorders: false,
|
|
// objectCaching: false // 不缓存
|
|
});
|
|
if (image) {
|
|
img.setSrc(
|
|
image && image.imagePath
|
|
? `http://localhost:9999/${image.imagePath}`
|
|
: ImageControl,
|
|
() => {
|
|
// 默认
|
|
let scaleY = 1;
|
|
let scaleX = 1;
|
|
if (image.stretch === "2") {
|
|
// 同比例裁剪照片
|
|
const scale =
|
|
group.width / img.width > group.height / img.height
|
|
? group.width / img.width
|
|
: group.height / img.height;
|
|
scaleY = scale;
|
|
scaleX = scale;
|
|
} else if (image.stretch === "3") {
|
|
// 同比例
|
|
const scale =
|
|
group.width / img.width < group.height / img.height
|
|
? group.width / img.width
|
|
: group.height / img.height;
|
|
scaleY = scale;
|
|
scaleX = scale;
|
|
} else if (image.stretch === "4") {
|
|
// 填充
|
|
scaleY = group.height / img.height;
|
|
scaleX = group.width / img.width;
|
|
}
|
|
img.set({
|
|
left: 0,
|
|
top: 0,
|
|
originX: "center",
|
|
originY: "center",
|
|
scaleX: scaleX,
|
|
scaleY: scaleY,
|
|
});
|
|
canvas.requestRenderAll();
|
|
}
|
|
);
|
|
group.clipPath =
|
|
image.stretch === "2"
|
|
? new fabric.Rect({
|
|
top: -group.height / 2,
|
|
left: -group.width / 2,
|
|
width: group.width,
|
|
height: group.height,
|
|
})
|
|
: null;
|
|
canvas.add(group);
|
|
} else {
|
|
img.setSrc(`http://localhost:9999/webs/upload/img/001.jpg`, () => {
|
|
const scaleY = group.height / img.height;
|
|
const scaleX = group.width / img.width;
|
|
img.set({
|
|
left: 0,
|
|
top: 0,
|
|
originX: "center",
|
|
originY: "center",
|
|
scaleX: scaleX,
|
|
scaleY: scaleY,
|
|
});
|
|
canvas.add(group);
|
|
});
|
|
}
|
|
};
|
|
//添加图片照片end==================================
|
|
// 添加视频==================================
|
|
let handleAddVideo = (left, top, vid) => {
|
|
let Video = document.createElement("video");
|
|
Video.setAttribute(
|
|
"src",
|
|
vid && vid.videoSource
|
|
? `http://localhost:9999/${vid.videoSource}`
|
|
: "http://localhost:9999/webs/upload/demo.mp4"
|
|
);
|
|
let id = Date.now();
|
|
Video.onloadedmetadata = () => {
|
|
URL.revokeObjectURL(Video.src);
|
|
const width = Video.videoWidth;
|
|
const height = Video.videoHeight;
|
|
const scaleX = vid ? vid.width / Video.videoWidth : 1;
|
|
const scaleY = vid ? vid.height / Video.videoHeight : 1;
|
|
Video.setAttribute("width", width);
|
|
Video.setAttribute("height", height);
|
|
Video.setAttribute("controls", "controls");
|
|
Video.setAttribute("id", id);
|
|
Video.setAttribute("autoplay", "autoplay");
|
|
Video.setAttribute("loop", "loop");
|
|
let video = new fabric.Image(Video, {
|
|
left: vid ? parseInt(vid.left) : parseInt(left - canvas._offset.left), //设置canvas上的X坐标
|
|
top: vid ? parseInt(vid.top) : parseInt(top - canvas._offset.top), //设置canvas上的Y坐标
|
|
scaleX: scaleX,
|
|
scaleY: scaleY,
|
|
width: width,
|
|
height: height,
|
|
component_type: "3",
|
|
cvalue: vid,
|
|
id: id,
|
|
lockMovementX: true, //X轴是否可被移动(true为不可)
|
|
lockMovementY: true, //Y轴是否可被移动(true为不可)
|
|
hasControls: false,
|
|
hasBorders: false,
|
|
});
|
|
document.getElementById("videos")?.appendChild(Video);
|
|
canvas.add(video);
|
|
video.getElement().play();
|
|
fabric.util.requestAnimFrame(function render() {
|
|
canvas.requestRenderAll();
|
|
fabric.util.requestAnimFrame(render);
|
|
});
|
|
};
|
|
};
|
|
// 添加视频==================================
|
|
|
|
// 添加议题内容 开始=========================
|
|
let handleSetYtnr = (left, top, item) => {
|
|
console.log("添加议题内容", left, top, item);
|
|
if (!(item && item.text && item.text.to_agendahtml)) return;
|
|
const styleBox = `width:${item.width}px;height:${item.height}px;left:${item.left}px;top:${item.top}px;text-align:${item.verticalAlignment};overflow:hidden;display:flex; justify-content:center`;
|
|
const yt_content = document.getElementById("yt_content");
|
|
yt_content.style.cssText = styleBox;
|
|
const scale2 = {
|
|
scaleX: (item.width / 1800).toFixed(2),
|
|
scaleY: (item.height / 900).toFixed(2),
|
|
};
|
|
const scale = Math.min(scale2.scaleX, scale2.scaleY);
|
|
const writeBoxStyle = {
|
|
width: 1800,
|
|
height: 900,
|
|
transformOrigin: "top left",
|
|
transform: `scale(${scale.scaleX})`,
|
|
};
|
|
const updateYtnrFormValues = {};
|
|
let textWidth = item ? parseInt(item.width) : 100;
|
|
let textHeigth = item ? parseInt(item.height) : 100;
|
|
let textTop = 0;
|
|
let yttext = item.text.to_agendahtml;
|
|
if (
|
|
updateYtnrFormValues &&
|
|
updateYtnrFormValues.fullScreen &&
|
|
updateYtnrFormValues.scaleValue
|
|
) {
|
|
if (item && (item.fullScreen === true || item.fullScreen === "true")) {
|
|
textWidth = canvas.width;
|
|
textHeigth = canvas.height;
|
|
} else {
|
|
if (
|
|
updateYtnrFormValues &&
|
|
(updateYtnrFormValues.fullScreen == true ||
|
|
updateYtnrFormValues.fullScreen == "true")
|
|
) {
|
|
textWidth = 100 * item.scaleValue;
|
|
textHeigth = 100 * item.scaleValue;
|
|
} else if (
|
|
item &&
|
|
updateYtnrFormValues.scaleValue &&
|
|
item.scaleValue == updateYtnrFormValues.scaleValue
|
|
) {
|
|
textWidth = item ? parseInt(item.width) : 100 * item.scaleValue;
|
|
textHeigth = item ? parseInt(item.height) : 100 * item.scaleValue;
|
|
} else if (
|
|
item &&
|
|
updateYtnrFormValues.scaleValue &&
|
|
item.scaleValue !== updateYtnrFormValues.scaleValue
|
|
) {
|
|
textWidth = item
|
|
? (parseInt(item.width) / updateYtnrFormValues.scaleValue) *
|
|
item.scaleValue
|
|
: 100;
|
|
textHeigth = item
|
|
? (parseInt(item.height) / updateYtnrFormValues.scaleValue) *
|
|
item.scaleValue
|
|
: 100;
|
|
}
|
|
}
|
|
} else if (item && item.width && item.height) {
|
|
textWidth = parseInt(item.width);
|
|
textHeigth = parseInt(item.height);
|
|
}
|
|
var x = document.getElementById("container");
|
|
//如果对象x不为空
|
|
if (x != null) {
|
|
x.remove();
|
|
}
|
|
item.text.to_agendahtml = item.text.to_agendahtml.replace(
|
|
" ",
|
|
" "
|
|
);
|
|
const element = item.text.to_agendahtml;
|
|
let container = document.createElement("div");
|
|
container.setAttribute("id", "container");
|
|
container.innerHTML = element;
|
|
container.style.backgroundColor = item.text.to_agendabgcolor
|
|
? item.text.to_agendabgcolor
|
|
: "#ffffff";
|
|
|
|
// container.style.width = textWidth + 'px'
|
|
// container.style.display = 'flex';
|
|
// container.style.justifyContent='center';
|
|
// container.style.flexDirection='column';
|
|
// container.style.height = textHeigth + 'px'
|
|
container.style.width = "1800px";
|
|
container.style.height = "900px";
|
|
container.style.display = "flex";
|
|
container.style.flexDirection = "column";
|
|
// container.style.alignItems= 'center';
|
|
container.style.justifyContent = "center";
|
|
container.style.color = "#000";
|
|
document.getElementById("element").appendChild(container);
|
|
|
|
document.getElementById("element").style.transform = `scale(${scale})`;
|
|
// document.getElementById("element").style.alignItems='center';
|
|
document.getElementById("element").style.transformOrigin = "top center";
|
|
};
|
|
// 添加议题内容 结束=========================
|
|
|
|
//添加网格列表start================================
|
|
let handleSetGridList = (left, top, grid) => {
|
|
console.log("网格列表1", grid);
|
|
let list = grid.text ? grid.text : [];
|
|
if (!Array.isArray(list)) return;
|
|
let child = [];
|
|
const rowCount = grid ? grid.rowCount : 5;
|
|
const colCount = grid ? grid.colCount : 5;
|
|
// const text = grid && grid.text ? grid.text : '网格列表'
|
|
const gridWidth = grid ? (grid.width - 2) / grid.colCount : 100;
|
|
const gridHeigth = grid ? (grid.height - 2) / grid.rowCount : 50;
|
|
for (let y = 1; y <= rowCount; y++) {
|
|
// 行
|
|
for (let x = 1; x <= colCount; x++) {
|
|
// 列
|
|
let gridTop = (y - 1) * gridHeigth;
|
|
if ((grid && grid.verticalAlignment === "center") || !grid) {
|
|
if (grid) gridTop = gridTop + (gridHeigth - grid.fontSize) / 2;
|
|
else gridTop = gridTop + (gridHeigth - 16) / 2;
|
|
} else if (grid && grid.verticalAlignment === "bottom") {
|
|
gridTop = gridTop + (gridHeigth - grid.fontSize);
|
|
}
|
|
const text = new fabric.Textbox("", {
|
|
width: gridWidth,
|
|
left: (x - 1) * gridWidth - 2, //设置canvas上的X坐标
|
|
textAlign: grid ? grid.horizontalAlignment : "center",
|
|
top: gridTop - 2,
|
|
shadow: grid && grid.effect === "true" ? shadow : null, // 阴影
|
|
fill: grid ? grid.foreground : "#000",
|
|
fontSize: grid ? parseInt(grid.fontSize) : 16,
|
|
fontWeight: grid ? grid.fontStyle.split(",")[1] : "normal",
|
|
fontStyle: grid ? grid.fontStyle.split(",")[0] : "normal",
|
|
fontFamily: grid ? grid.fontFamily : "SimSun",
|
|
});
|
|
|
|
const text2 = new fabric.Textbox("", {
|
|
// width: gridWidth,
|
|
left: x * gridWidth, //设置canvas上的X坐标
|
|
textAlign: "left",
|
|
top: gridTop - 2 + ((grid ? parseInt(grid.fontSize) : 16) - 18) / 2,
|
|
shadow: grid && grid.effect === "true" ? shadow : null, // 阴影
|
|
fill: grid ? grid.foreground : "#000",
|
|
fontSize: 18,
|
|
fontWeight: grid ? grid.fontStyle.split(",")[1] : "normal",
|
|
fontStyle: grid ? grid.fontStyle.split(",")[0] : "normal",
|
|
fontFamily: grid ? grid.fontFamily : "SimSun",
|
|
});
|
|
|
|
const border = new fabric.Rect({
|
|
width: gridWidth,
|
|
height: gridHeigth,
|
|
left: (x - 1) * gridWidth, //设置canvas上的X坐标
|
|
top: (y - 1) * gridHeigth, //设置canvas上的Y坐标 顶部对齐
|
|
stroke: grid ? grid.lineColor : "#dcdcdc",
|
|
fill: grid && grid.background.includes("#") ? grid.background : "",
|
|
_type: "border",
|
|
strokeWidth:
|
|
grid && grid.showGridLines === "true"
|
|
? parseInt(grid.lineWidth)
|
|
: 1,
|
|
visible:
|
|
grid &&
|
|
(grid.showGridLines === "false" || grid.showGridLines === false)
|
|
? false
|
|
: true,
|
|
strokeDashArray: grid && grid.lineStyle === "2" ? [5, 10] : [0, 0],
|
|
});
|
|
child.push(border);
|
|
child.push(text);
|
|
child.push(text2);
|
|
}
|
|
}
|
|
|
|
let group = new fabric.Group(child, {
|
|
width: grid ? grid.width : 500,
|
|
height: grid ? grid.height : 250,
|
|
left: grid ? grid.left : left - canvas._offset.left, //设置canvas上的X坐标
|
|
top: grid ? grid.top : top - canvas._offset.top, //设置canvas上的Y坐标
|
|
rowCount: grid ? grid.rowCount : 5, //行
|
|
colCount: grid ? grid.colCount : 5, //列
|
|
component_type: grid ? grid.component_type : "5",
|
|
cvalue: grid,
|
|
|
|
horizontalAlignment: grid ? grid.horizontalAlignment : "center", //水平对齐方式left, center, right
|
|
verticalAlignment: grid ? grid.verticalAlignment : "center", //垂直方式对齐top, center, bottom
|
|
colorChangeStyle: grid ? grid.colorChangeStyle : "0", //颜色变化
|
|
showStyle: grid ? grid.showStyle : "0", //显示方式
|
|
trendsStyle: grid ? grid.trendsStyle : "0", //动态方式
|
|
peoplesStyle: grid ? grid.peoplesStyle : "0", //加入方式
|
|
foregroundChange: grid ? grid.foregroundChange : "#000", //变化字色
|
|
// text: text,
|
|
lineStyle: grid ? grid.lineStyle : "0", //网格线样式
|
|
showGridLines:
|
|
grid &&
|
|
(grid.showGridLines === "false" || grid.showGridLines === false)
|
|
? false
|
|
: true, //是否显示网格
|
|
lineWidth: grid ? grid.lineWidth : "1", //网格线宽度
|
|
lineColor: grid ? grid.lineColor : "#000", //网格线颜色
|
|
background:
|
|
grid && grid.background.includes("#") ? grid.background : "", //透明
|
|
effect: grid && grid.effect === "true" ? true : false, // 阴影
|
|
fontFamily: grid ? grid.fontFamily : "SimSun", //字体
|
|
fontStyle: grid ? grid.fontStyle : "normal,normal,normal", //字体宽度设置
|
|
foreground: grid ? grid.foreground : "#000", //字体颜色
|
|
fontSize: grid ? grid.fontSize : 16, //字体大小
|
|
peopleOrderBy:
|
|
grid && grid.peopleOrderBy ? grid.peopleOrderBy : undefined, //人员排序
|
|
rowMin: grid && grid.rowMin ? grid.rowMin : undefined, //行号从
|
|
rowMax: grid && grid.rowMax ? grid.rowMax : undefined, //到
|
|
colMin: grid && grid.colMin ? grid.colMin : undefined, //列号从
|
|
colMax: grid && grid.colMax ? grid.colMax : undefined, //到
|
|
textDirection:
|
|
grid && grid.textDirection ? grid.textDirection : undefined, //人员排序的加入方式
|
|
textItemWidth:
|
|
grid && grid.textItemWidth ? grid.textItemWidth : undefined, //文本项宽
|
|
bindingFieldID:
|
|
grid && grid.bindingFieldID ? grid.bindingFieldID : "-1",
|
|
isShowSpeakSecend:
|
|
grid && grid.isShowSpeakSecend === "true" ? true : false, //是否显示二次发言
|
|
isShowAskSecend: grid && grid.isShowAskSecend === "true" ? true : false, // 是否显示二次询问
|
|
isShowPersonWork:
|
|
grid && grid.isShowPersonWork === "true" ? true : false, // 是否显示人员职务
|
|
bindingFieldPeopleType:
|
|
grid && grid.bindingFieldPeopleType
|
|
? grid.bindingFieldPeopleType.split(",")
|
|
: [],
|
|
lockMovementX: true, //X轴是否可被移动(true为不可)
|
|
lockMovementY: true, //Y轴是否可被移动(true为不可)
|
|
hasControls: false,
|
|
hasBorders: false,
|
|
});
|
|
|
|
if (Array.isArray(list) && list.length > 0) {
|
|
for (let i = 1; i <= list.length; i++) {
|
|
let item = child[3 * i - 2];
|
|
let item2 = child[3 * i - 1];
|
|
if (item) {
|
|
let pername = list[i - 1].pername;
|
|
|
|
const fontSize =
|
|
grid && parseInt(grid.fontSize) ? parseInt(grid.fontSize) : 16;
|
|
|
|
if (pername.length * fontSize > gridWidth) {
|
|
let num = Math.floor(gridWidth / fontSize);
|
|
pername = pername.substr(0, num);
|
|
}
|
|
|
|
item.text = pername;
|
|
if (item.textAlign == "center") {
|
|
item2.left = item2.left - (item.text.length * item.fontSize) / 2;
|
|
} else if (item.textAlign == "left") {
|
|
item2.left = item2.left - item.text.length * item.fontSize;
|
|
}
|
|
switch (grid.bindingFieldID) {
|
|
case "0x1061": //人员报到人列表
|
|
if (item.group?.showStyle == 0) {
|
|
if (item.group?.colorChangeStyle == 0) {
|
|
if (list[i - 1].checkinstatus == 1) {
|
|
item.fill = item.group.foregroundChange;
|
|
} else {
|
|
item.fill = item.group.foreground;
|
|
}
|
|
} else {
|
|
if (list[i - 1].checkinstatus == 1) {
|
|
item.fill = item.group.foreground;
|
|
} else {
|
|
item.fill = item.group.foregroundChange;
|
|
}
|
|
}
|
|
}
|
|
break;
|
|
case "0x1062": //人员发言人列表
|
|
let ts = list[i - 1].allowSpeakTime;
|
|
let timer = setInterval(() => {
|
|
let dd = parseInt(ts / 60 / 60 / 24); //计算剩余小时
|
|
dd = dd < 10 ? "0" + dd : dd;
|
|
let hh = parseInt((ts / 60 / 60) % 24); //计算剩余小时
|
|
hh = hh < 10 ? "0" + hh : hh;
|
|
let mm = parseInt((ts / 60) % 60);
|
|
mm = mm < 10 ? "0" + mm : mm;
|
|
let ss = parseInt(ts % 60);
|
|
ss = ss < 10 ? "0" + ss : ss;
|
|
item.set({
|
|
text: list[i - 1].pername,
|
|
});
|
|
item2.set({
|
|
text: "(" + mm + ":" + ss + ")",
|
|
});
|
|
if (ts > 0) {
|
|
ts--;
|
|
} else {
|
|
clearInterval(timer);
|
|
}
|
|
}, 1000);
|
|
break;
|
|
case "0x1063": //人员申请发言人列表
|
|
let tetx = list[i - 1].secondTip
|
|
? "(" + list[i - 1].secondTip + ")"
|
|
: "";
|
|
|
|
const fontSize =
|
|
grid && parseInt(grid.fontSize)
|
|
? parseInt(grid.fontSize)
|
|
: 16;
|
|
|
|
if (tetx.length * fontSize > gridWidth) {
|
|
let num = Math.floor(gridWidth / fontSize);
|
|
tetx = tetx.substr(0, num);
|
|
}
|
|
|
|
// item2.text = list[i - 1].secondTip ? '(' + list[i - 1].secondTip + ')' : ''
|
|
item2.text = tetx;
|
|
|
|
break;
|
|
case "0x1064": //人员已发言人列表
|
|
let tetx2 = list[i - 1].perjob
|
|
? "(" + list[i - 1].perjob + ")"
|
|
: "";
|
|
|
|
const fontSize2 =
|
|
grid && parseInt(grid.fontSize)
|
|
? parseInt(grid.fontSize)
|
|
: 16;
|
|
|
|
if (tetx2.length * fontSize2 > gridWidth) {
|
|
let num = Math.floor(gridWidth / fontSize2);
|
|
tetx2 = tetx2.substr(0, num);
|
|
}
|
|
|
|
item2.text = tetx2;
|
|
// item2.text = list[i - 1].perjob ? '(' + list[i - 1].perjob + ')' : ''
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
canvas.add(group); // 将图形添加至画布
|
|
};
|
|
//添加网格列表end================================
|
|
|
|
//添加网格列表start================================
|
|
let handleSetGridList2 = (left, top, grid) => {
|
|
console.log("网格列表", grid);
|
|
let list = grid.text ? grid.text : [];
|
|
if (!Array.isArray(list)) return;
|
|
const gridWidth = grid ? (grid.width - 2) / grid.colCount : 100;
|
|
|
|
const aaaaaa = canvas.getObjects();
|
|
aaaaaa.forEach((obj) => {
|
|
if (obj.cvalue.id === grid.id) {
|
|
for (let i = 1; i <= obj._objects.length; i++) {
|
|
let bbb = 3 * i - 2;
|
|
let item3 = obj._objects[bbb];
|
|
if (item3 && bbb <= obj._objects.length) {
|
|
item3.set({
|
|
text: "",
|
|
});
|
|
}
|
|
}
|
|
if (Array.isArray(list) && list.length > 0) {
|
|
for (let i = 1; i <= list.length; i++) {
|
|
let item = obj._objects[3 * i - 2];
|
|
let item2 = obj._objects[3 * i - 1];
|
|
|
|
if (item) {
|
|
let pername = list[i - 1].pername;
|
|
const fontSize =
|
|
grid && parseInt(grid.fontSize)
|
|
? parseInt(grid.fontSize)
|
|
: 16;
|
|
if (pername.length * fontSize > gridWidth) {
|
|
let num = Math.floor(gridWidth / fontSize);
|
|
pername = pername.substr(0, num);
|
|
}
|
|
|
|
item.set({
|
|
text: pername,
|
|
});
|
|
|
|
if (item.textAlign == "center") {
|
|
item2.set({
|
|
left: item2.left - (item.text.length * item.fontSize) / 2,
|
|
});
|
|
} else if (item.textAlign == "left") {
|
|
item2.set({
|
|
left: item2.left - item.text.length * item.fontSize,
|
|
});
|
|
}
|
|
switch (grid.bindingFieldID) {
|
|
case "0x1061": //人员报到人列表
|
|
if (item.group?.showStyle == 0) {
|
|
if (item.group?.colorChangeStyle == 0) {
|
|
if (list[i - 1].checkinstatus == 1) {
|
|
item.set({
|
|
fill: item.group.foregroundChange,
|
|
});
|
|
} else {
|
|
item.set({
|
|
fill: item.group.foreground,
|
|
});
|
|
}
|
|
} else {
|
|
if (list[i - 1].checkinstatus == 1) {
|
|
item.set({
|
|
fill: item.group.foreground,
|
|
});
|
|
} else {
|
|
item.set({
|
|
fill: item.group.foregroundChange,
|
|
});
|
|
}
|
|
}
|
|
}
|
|
break;
|
|
case "0x1062": //人员发言人列表
|
|
let ts = list[i - 1].allowSpeakTime;
|
|
let timer = setInterval(() => {
|
|
let dd = parseInt(ts / 60 / 60 / 24); //计算剩余小时
|
|
dd = dd < 10 ? "0" + dd : dd;
|
|
let hh = parseInt((ts / 60 / 60) % 24); //计算剩余小时
|
|
hh = hh < 10 ? "0" + hh : hh;
|
|
let mm = parseInt((ts / 60) % 60);
|
|
mm = mm < 10 ? "0" + mm : mm;
|
|
let ss = parseInt(ts % 60);
|
|
ss = ss < 10 ? "0" + ss : ss;
|
|
item.set({
|
|
text: list[i - 1].pername,
|
|
});
|
|
item2.set({
|
|
text: "(" + mm + ":" + ss + ")",
|
|
});
|
|
if (ts > 0) {
|
|
ts--;
|
|
} else {
|
|
clearInterval(timer);
|
|
}
|
|
}, 1000);
|
|
break;
|
|
case "0x1063": //人员申请发言人列表
|
|
item2.set({
|
|
text: list[i - 1].secondTip
|
|
? "(" + list[i - 1].secondTip + ")"
|
|
: "",
|
|
});
|
|
break;
|
|
case "0x1064": //人员已发言人列表
|
|
item2.set({
|
|
text: list[i - 1].perjob
|
|
? "(" + list[i - 1].perjob + ")"
|
|
: "",
|
|
});
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
canvas.renderAll();
|
|
}
|
|
});
|
|
};
|
|
//添加网格列表end================================
|
|
|
|
//添加横向滚动文本start===============================
|
|
let handleSetHxgdwb = (left, top, item) => {
|
|
const textWidth = item ? item.width : 200;
|
|
const textHeigth = item ? item.height : 100;
|
|
let textContent =
|
|
item && item.txtContent ? item.txtContent : "横向滚动文本";
|
|
const textBox = new fabric.Textbox(textContent, {
|
|
fill: item && item.foreground ? item.foreground : "#000",
|
|
fontSize: item && item.fontSize ? parseInt(item.fontSize) : 18,
|
|
fontWeight: item && item.fontWeight ? item.fontWeight : "normal",
|
|
fontStyle: item && item.fontStyle ? item.fontStyle : "normal",
|
|
fontFamily: item && item.fontFamily ? item.fontFamily : "SimSun",
|
|
width: textWidth,
|
|
left: 0,
|
|
top: 0,
|
|
});
|
|
const border = new fabric.Rect({
|
|
left: 0,
|
|
top: 0,
|
|
width: textWidth,
|
|
height: textHeigth,
|
|
background:
|
|
item && item.background.includes("#") ? item.background : "", //透明
|
|
fill: item && item.background.includes("#") ? item.background : "", //透明
|
|
_type: "border",
|
|
});
|
|
let group = new fabric.Group([border, textBox], {
|
|
width: textWidth,
|
|
height: textHeigth,
|
|
left: item ? item.left : left - canvas._offset.left, //设置canvas上的X坐标
|
|
top: item ? item.top : top - canvas._offset.top, //设置canvas上的Y坐标
|
|
background:
|
|
item && item.background.includes("#") ? item.background : "", //透明
|
|
foreground: item && item.foreground ? item.foreground : "#000",
|
|
fontSize: item && item.fontSize ? parseInt(item.fontSize) : 18,
|
|
fontWeight: item && item.fontWeight ? item.fontWeight : "normal",
|
|
fontStyle: item && item.fontStyle ? item.fontStyle : "normal",
|
|
fontFamily: item && item.fontFamily ? item.fontFamily : "SimSun",
|
|
txtContent: textContent,
|
|
moveSpeed: item && item.moveSpeed ? item.moveSpeed : "1000",
|
|
component_type: "6",
|
|
cvalue: item,
|
|
lockMovementX: true, //X轴是否可被移动(true为不可)
|
|
lockMovementY: true, //Y轴是否可被移动(true为不可)
|
|
hasControls: false,
|
|
hasBorders: false,
|
|
});
|
|
canvas.add(group); // 将图形添加至画布
|
|
if (parseInt(item.moveSpeed) !== 6000) {
|
|
const handleSetHxgdwbAnimate = () => {
|
|
textBox.animate("left", item ? item.width / 2 : 100, {
|
|
from: -(item ? item.width / 2 : 100),
|
|
duration: item && item.moveSpeed ? parseInt(item.moveSpeed) : 1000,
|
|
onChange: canvas.renderAll.bind(canvas),
|
|
onComplete: handleSetHxgdwbAnimate,
|
|
});
|
|
};
|
|
|
|
handleSetHxgdwbAnimate();
|
|
}
|
|
};
|
|
//添加横向滚动文本end===============================
|
|
|
|
//添加照片列表start============================
|
|
let handleSetPhoto = (left, top, grid) => {
|
|
console.log("添加照片列表start", grid);
|
|
|
|
// let child = []
|
|
// const rowCount = grid ? grid.rowCount : 5
|
|
// const colCount = grid ? grid.colCount : 1
|
|
// const text = grid && grid.text ? grid.text : []
|
|
// const gridWidth = grid ? (grid.width) / grid.colCount : 100
|
|
// const gridHeigth = grid ? (grid.height) / grid.rowCount : 50
|
|
// for (let y = 1; y <= rowCount; y++) { //行
|
|
// for (let x = 1; x <= colCount; x++) { //列
|
|
|
|
// let gridTop = (y - 1) * gridHeigth
|
|
|
|
// let ImgElement = document.createElement('img')
|
|
// let img = new fabric.Image(ImgElement, {
|
|
|
|
// left: (x - 1) * gridWidth,
|
|
// top: (y - 1) * gridHeigth,
|
|
|
|
// originX: 'left',
|
|
// originY: 'top',
|
|
// width: gridWidth - parseInt(grid.lineWidth) * 6,
|
|
// height: gridHeigth - parseInt(grid.lineWidth) * 6,
|
|
|
|
// })
|
|
|
|
// const border = new fabric.Rect({
|
|
// width: gridWidth,
|
|
// height: gridHeigth,
|
|
// left: (x - 1) * gridWidth, //设置canvas上的X坐标
|
|
// top: (y - 1) * gridHeigth, //设置canvas上的Y坐标 顶部对齐
|
|
// strokeWidth: grid && (grid.showGridLines === 'true' || grid.showGridLines === true) ? parseInt(grid.lineWidth) : 1,//网格线宽度
|
|
// stroke: grid && grid.lineColor ? grid.lineColor : "#dcdcdc",//网格线颜色
|
|
// strokeDashArray: grid && grid.lineStyle === '2' ? [5, 10] : [0, 0],//实虚线
|
|
// fill: grid && grid.background.includes('#') ? grid.background : '',
|
|
// _type: 'border',
|
|
// visible: grid && (grid.showGridLines === 'false' || grid.showGridLines === false) ? false : true,
|
|
// });
|
|
// child.push(img)
|
|
// child.push(border)
|
|
// }
|
|
// };
|
|
|
|
// let group = new fabric.Group(child, {
|
|
// width: grid ? grid.width : 100,
|
|
// height: grid ? grid.height : 250,
|
|
// left: grid ? grid.left : left - canvas._offset.left, //设置canvas上的X坐标
|
|
// top: grid ? grid.top : top - canvas._offset.top, //设置canvas上的Y坐标
|
|
// rowCount: grid ? grid.rowCount : 5, //行
|
|
// colCount: grid ? grid.colCount : 1, //列
|
|
// component_type: grid ? grid.component_type : '7',
|
|
// cvalue: grid,
|
|
// horizontalAlignment: grid && grid.horizontalAlignment ? grid.horizontalAlignment : 'center', //水平对齐方式left, center, right
|
|
// verticalAlignment: grid && grid.verticalAlignment ? grid.verticalAlignment : 'center', //垂直方式对齐top, center, bottom
|
|
// text: text,
|
|
// background: grid && grid.background.includes('#') ? grid.background : '',//透明
|
|
// effect: grid && (grid.effect === 'true' || grid.effect === true) ? true : false, // 阴影
|
|
// lineStyle: grid && grid.lineStyle ? grid.lineStyle : '1',//网格线样式
|
|
// showGridLines: grid && (grid.showGridLines === 'false' || grid.showGridLines === false) ? false : true,//是否显示网格
|
|
// lineWidth: grid ? parseInt(grid.lineWidth) : 1,//网格线宽度
|
|
// lineColor: grid ? grid.lineColor : '#dcdcdc',//网格线颜色
|
|
// peopleStyle: grid ? grid.peopleStyle : '0', //照片显示方式
|
|
// isShowText: grid ? grid.isShowText : false, //是否显示文字
|
|
// textShowLocation: grid ? grid.textShowLocation : '0', //文字显示位置
|
|
// fontFamily: grid ? grid.fontFamily : 'SimSun', //字体
|
|
// foreground: grid ? grid.foreground : "#000000", //字体颜色
|
|
// fontSize: grid ? grid.fontSize : 16, //字体大小
|
|
// fontStyle: grid ? grid.fontStyle : 'normal',
|
|
// fontWeight: grid ? grid.fontWeight : 'normal',
|
|
// lockMovementX: true, //X轴是否可被移动(true为不可)
|
|
// lockMovementY: true, //Y轴是否可被移动(true为不可)
|
|
// hasControls: false,
|
|
// hasBorders: false,
|
|
// });
|
|
|
|
// if (Array.isArray(text) && text.length > 0) {
|
|
// for (let i = 1; i <= text.length; i++) {
|
|
// let item = child[2 * i - 2]
|
|
// if (item) {
|
|
|
|
// console.log('将图形添加至画布', item)
|
|
|
|
// if (text[i - 1].perimage) {
|
|
// item.setSrc(`http://localhost:9999/${text[i - 1].perimage}`, () => {
|
|
// const scaleY = gridHeigth / item.height
|
|
// const scaleX = gridWidth / item.width
|
|
// item.set({
|
|
// scaleX: scaleX,
|
|
// scaleY: scaleY,
|
|
// })
|
|
// })
|
|
// }
|
|
// }
|
|
// }
|
|
// }
|
|
|
|
// setTimeout(() => {
|
|
// canvas.add(group); // 将图形添加至画布
|
|
// }, 250);
|
|
|
|
let child = [];
|
|
|
|
const rowCount = grid ? grid.rowCount : 5;
|
|
const colCount = grid ? grid.colCount : 1;
|
|
const text =
|
|
grid && grid.text && Array.isArray(grid.text) ? grid.text : [];
|
|
const gridWidth = grid ? (grid.width - 2) / grid.colCount : 100;
|
|
const gridHeigth = grid ? (grid.height - 2) / grid.rowCount : 50;
|
|
|
|
const gridImgWidth = grid
|
|
? (grid.width - parseInt(grid.lineWidth) * grid.colCount) /
|
|
grid.colCount
|
|
: 100;
|
|
const gridImgHeigth = grid
|
|
? (grid.height - parseInt(grid.lineWidth) * grid.rowCount) /
|
|
grid.rowCount
|
|
: 50;
|
|
|
|
let index = 0;
|
|
|
|
let loadImages = text.map((item) => {
|
|
return new Promise((resolve) => {
|
|
fabric.Image.fromURL(
|
|
`http://localhost:9999/${item.perimage}`,
|
|
(img) => {
|
|
// 设置图片在Group内的相对位置
|
|
const scaleX = gridImgWidth / img.width;
|
|
const scaleY = gridImgHeigth / img.height;
|
|
img.set({
|
|
originX: "left",
|
|
originY: "top",
|
|
scaleX: img._element === null ? 1 : scaleX,
|
|
scaleY: img._element === null ? 1 : scaleY,
|
|
top: parseInt(grid.lineWidth),
|
|
left: parseInt(grid.lineWidth),
|
|
});
|
|
resolve(img);
|
|
},
|
|
{ crossOrigin: "anonymous" }
|
|
);
|
|
});
|
|
});
|
|
|
|
// 所有图片加载完成后创建Group
|
|
Promise.all(loadImages).then((images) => {
|
|
child = images;
|
|
for (let y = 1; y <= rowCount; y++) {
|
|
//行
|
|
for (let x = 1; x <= colCount; x++) {
|
|
//列
|
|
|
|
let gridTop = (y - 1) * gridHeigth + parseInt(grid.lineWidth);
|
|
let gridLeft = (x - 1) * gridWidth + parseInt(grid.lineWidth);
|
|
|
|
if (text.length > index && text[index].perimage) {
|
|
child[index].set({
|
|
top: gridTop,
|
|
left: gridLeft,
|
|
});
|
|
|
|
index++;
|
|
}
|
|
|
|
const border = new fabric.Rect({
|
|
width: gridWidth,
|
|
height: gridHeigth,
|
|
left: (x - 1) * gridWidth, //设置canvas上的X坐标
|
|
top: (y - 1) * gridHeigth, //设置canvas上的Y坐标 顶部对齐
|
|
strokeWidth:
|
|
grid &&
|
|
(grid.showGridLines === "true" || grid.showGridLines === true)
|
|
? parseInt(grid.lineWidth)
|
|
: 1, //网格线宽度
|
|
stroke: grid && grid.lineColor ? grid.lineColor : "#dcdcdc", //网格线颜色
|
|
strokeDashArray:
|
|
grid && grid.lineStyle === "2" ? [5, 10] : [0, 0], //实虚线
|
|
fill:
|
|
grid && grid.background.includes("#") ? grid.background : "",
|
|
_type: "border",
|
|
visible:
|
|
grid &&
|
|
(grid.showGridLines === "false" || grid.showGridLines === false)
|
|
? false
|
|
: true,
|
|
});
|
|
|
|
child.push(border);
|
|
}
|
|
}
|
|
|
|
const group = new fabric.Group(child, {
|
|
width: grid ? parseInt(grid.width) : 100,
|
|
height: grid ? parseInt(grid.height) : 250,
|
|
left: grid ? grid.left : left - parseInt(canvas._offset.left), //设置canvas上的X坐标
|
|
top: grid ? grid.top : top - parseInt(canvas._offset.top), //设置canvas上的Y坐标
|
|
rowCount: grid ? grid.rowCount : 5, //行
|
|
colCount: grid ? grid.colCount : 1, //列
|
|
component_type: grid ? grid.component_type : "7",
|
|
cvalue: grid,
|
|
horizontalAlignment:
|
|
grid && grid.horizontalAlignment
|
|
? grid.horizontalAlignment
|
|
: "center", //水平对齐方式left, center, right
|
|
verticalAlignment:
|
|
grid && grid.verticalAlignment ? grid.verticalAlignment : "center", //垂直方式对齐top, center, bottom
|
|
text: text,
|
|
background:
|
|
grid && grid.background.includes("#") ? grid.background : "", //透明
|
|
effect:
|
|
grid && (grid.effect === "true" || grid.effect === true)
|
|
? true
|
|
: false, // 阴影
|
|
lineStyle: grid && grid.lineStyle ? grid.lineStyle : "1", //网格线样式
|
|
showGridLines:
|
|
grid &&
|
|
(grid.showGridLines === "false" || grid.showGridLines === false)
|
|
? false
|
|
: true, //是否显示网格
|
|
lineWidth: grid ? parseInt(grid.lineWidth) : 1, //网格线宽度
|
|
lineColor: grid ? grid.lineColor : "#dcdcdc", //网格线颜色
|
|
peopleStyle: grid ? grid.peopleStyle : "0", //照片显示方式
|
|
isShowText: grid ? grid.isShowText : false, //是否显示文字
|
|
textShowLocation: grid ? grid.textShowLocation : "0", //文字显示位置
|
|
fontFamily: grid ? grid.fontFamily : "SimSun", //字体
|
|
foreground: grid ? grid.foreground : "#000000", //字体颜色
|
|
fontSize: grid ? grid.fontSize : 16, //字体大小
|
|
fontStyle: grid ? grid.fontStyle : "normal",
|
|
fontWeight: grid ? grid.fontWeight : "normal",
|
|
lockMovementX: true, //X轴是否可被移动(true为不可)
|
|
lockMovementY: true, //Y轴是否可被移动(true为不可)
|
|
hasControls: false,
|
|
hasBorders: false,
|
|
});
|
|
|
|
// 添加到画布
|
|
canvas.add(group);
|
|
canvas.requestRenderAll();
|
|
});
|
|
};
|
|
|
|
//添加照片列表end============================
|
|
|
|
//添加代表团列表start====================
|
|
let handleSetDeputation = (left, top, grid) => {
|
|
const list = grid.text;
|
|
if (!Array.isArray(list)) return;
|
|
let child = []; //动画一
|
|
let child2 = []; //动画二
|
|
let childHead = []; //列头
|
|
let childWrapper = []; //最外层边框
|
|
let length = 6 - list.length;
|
|
if (0 < length) {
|
|
for (let i = 1; i <= length; i++) {
|
|
list.push({
|
|
groupname: "",
|
|
groupshouldnum: "",
|
|
grouparrivenum: "",
|
|
groupnoarrivenum: "",
|
|
});
|
|
}
|
|
}
|
|
const propsObj = list[0] || {
|
|
groupname: "",
|
|
groupshouldnum: "",
|
|
grouparrivenum: "",
|
|
groupnoarrivenum: "",
|
|
};
|
|
const rowCount = list.length;
|
|
|
|
const colCount = Object.keys(propsObj).length;
|
|
const gridWidth = grid && grid.width ? (grid.width - 2) / colCount : 100;
|
|
const gridHeigth = grid && grid.height ? grid.height / 7 : 50;
|
|
|
|
let headList = {
|
|
groupname: "代表团",
|
|
groupshouldnum: "应到",
|
|
grouparrivenum: "实到",
|
|
groupnoarrivenum: "未到",
|
|
};
|
|
for (let x = 1; x <= colCount; x++) {
|
|
//列
|
|
const currentHeadText = headList[Object.keys(headList)[x - 1]] + "";
|
|
const haedTextbox = new fabric.Textbox(currentHeadText, {
|
|
width: gridWidth,
|
|
left: (x - 1) * gridWidth - 2, //设置canvas上的x坐标
|
|
top:
|
|
grid && grid.groupHeadColumnFontSize
|
|
? (gridHeigth - parseInt(grid.groupHeadColumnFontSize)) / 2
|
|
: 16, //设置canvas上的Y坐标
|
|
fontFamily:
|
|
grid && grid.groupHeadColumnFontName
|
|
? grid.groupHeadColumnFontName
|
|
: "SimSun",
|
|
fontSize:
|
|
grid && grid.groupHeadColumnFontSize
|
|
? parseInt(grid.groupHeadColumnFontSize)
|
|
: 16,
|
|
fontStyle:
|
|
grid && grid.groupHeadColumnFontStyle
|
|
? grid.groupHeadColumnFontStyle.split(",")[0]
|
|
: "normal",
|
|
fontWeight:
|
|
grid && grid.groupHeadColumnFontStyle
|
|
? grid.groupHeadColumnFontStyle.split(",")[1]
|
|
: "normal",
|
|
textAlign:
|
|
grid && grid.horizontalAlignment
|
|
? grid.horizontalAlignment
|
|
: "center",
|
|
});
|
|
const headBorder = new fabric.Rect({
|
|
width: gridWidth,
|
|
height: gridHeigth,
|
|
left: (x - 1) * gridWidth, //设置canvas上的X坐标
|
|
top: 0, //设置canvas上的Y坐标 顶部对齐
|
|
stroke: grid && grid.lineColor ? grid.lineColor : "#dcdcdc", //网格线颜色
|
|
fill:
|
|
grid && grid.groupHeadColumnColor
|
|
? grid.groupHeadColumnColor
|
|
: "#f4f4f4", //背景颜色
|
|
_type: "border",
|
|
visible:
|
|
grid &&
|
|
(grid.showGroupHeadColumn == "false" ||
|
|
grid.showGroupHeadColumn == false)
|
|
? false
|
|
: true,
|
|
strokeWidth:
|
|
grid &&
|
|
(grid.showGroupHeadColumn == "true" ||
|
|
grid.showGroupHeadColumn == true)
|
|
? parseInt(grid.lineWidth)
|
|
: 1,
|
|
});
|
|
childHead.push(headBorder);
|
|
childHead.push(haedTextbox);
|
|
}
|
|
var headColumnGroup = new fabric.Group(childHead, {
|
|
width: grid ? parseInt(grid.width) : 400,
|
|
height: gridHeigth,
|
|
left: grid ? grid.left : left - parseInt(canvas._offset.left), //设置canvas上的X坐标
|
|
top: grid ? grid.top : top - parseInt(canvas._offset.top), //设置canvas上的Y坐标
|
|
showGroupHeadColumn:
|
|
grid &&
|
|
(grid.showGroupHeadColumn == "false" ||
|
|
grid.showGroupHeadColumn == false)
|
|
? false
|
|
: true, //是否显示列头
|
|
groupHeadColumnColor: grid ? grid.groupHeadColumnColor : "#f4f4f4",
|
|
groupHeadColumnFontName: grid ? grid.groupHeadColumnFontName : "SimSun",
|
|
groupHeadColumnFontSize: grid ? grid.groupHeadColumnFontSize : 16,
|
|
groupHeadColumnFontStyle: grid
|
|
? grid.groupHeadColumnFontStyle
|
|
: "normal,normal",
|
|
});
|
|
|
|
let keys = [
|
|
"groupname",
|
|
"groupshouldnum",
|
|
"grouparrivenum",
|
|
"groupnoarrivenum",
|
|
];
|
|
|
|
for (let y = 1; y <= rowCount; y++) {
|
|
// 行
|
|
const obj = list[y - 1];
|
|
|
|
for (let x = 1; x <= colCount; x++) {
|
|
// 列
|
|
// const curentText = obj[Object.keys(obj)[x - 1]] + '' //当前单元格的值
|
|
let curentText = obj[keys[x - 1]] + ""; //当前单元格的值
|
|
|
|
const fontSize = grid && grid.fontSize ? parseInt(grid.fontSize) : 16;
|
|
if (curentText.length * fontSize > gridWidth) {
|
|
let num = Math.floor(gridWidth / fontSize);
|
|
curentText = curentText.substr(0, num);
|
|
}
|
|
|
|
let gridTop = (y - 2) * gridHeigth;
|
|
if ((grid && grid.verticalAlignment === "center") || !grid) {
|
|
if (grid)
|
|
gridTop = gridTop + (gridHeigth - parseInt(grid.fontSize)) / 2;
|
|
else gridTop = gridTop + (gridHeigth - 16) / 2;
|
|
} else if (grid && grid.verticalAlignment === "bottom") {
|
|
gridTop = gridTop + (gridHeigth - parseInt(grid.fontSize));
|
|
}
|
|
|
|
const textbox = new fabric.Textbox(curentText, {
|
|
width: gridWidth,
|
|
height: gridHeigth,
|
|
// height: 50,
|
|
left: (x - 1) * gridWidth - 2, //设置canvas上的x坐标
|
|
top: gridTop - 2, //设置canvas上的Y坐标
|
|
shadow:
|
|
grid && (grid.effect == "true" || grid.effect == true)
|
|
? shadow
|
|
: null,
|
|
fontFamily: grid && grid.fontFamily ? grid.fontFamily : "SimSun",
|
|
fill: grid && grid.foreground ? grid.foreground : "#000000",
|
|
fontSize: grid && grid.fontSize ? parseInt(grid.fontSize) : 16,
|
|
fontStyle: grid && grid.fontStyle ? grid.fontStyle : "normal",
|
|
fontWeight: grid && grid.fontWeight ? grid.fontWeight : "normal",
|
|
textAlign:
|
|
grid && grid.horizontalAlignment
|
|
? grid.horizontalAlignment
|
|
: "center",
|
|
});
|
|
const border = new fabric.Rect({
|
|
width: gridWidth,
|
|
// height: 50,
|
|
height: gridHeigth,
|
|
left: (x - 1) * gridWidth, //设置canvas上的X坐标
|
|
top: (y - 2) * gridHeigth, //设置canvas上的Y坐标 顶部对齐
|
|
stroke: grid && grid.lineColor ? grid.lineColor : "#dcdcdc", //网格线颜色
|
|
strokeDashArray: grid && grid.lineStyle === "2" ? [5, 10] : [0, 0], //实虚线
|
|
fill: grid && grid.background.includes("#") ? grid.background : "",
|
|
_type: "border",
|
|
visible:
|
|
grid &&
|
|
(grid.showGridLines === "false" || grid.showGridLines === false)
|
|
? false
|
|
: true,
|
|
strokeWidth:
|
|
grid &&
|
|
(grid.showGridLines === "true" || grid.showGridLines === true)
|
|
? parseInt(grid.lineWidth)
|
|
: 1,
|
|
});
|
|
child.push(border);
|
|
child.push(textbox);
|
|
}
|
|
}
|
|
|
|
let group = new fabric.Group(child, {
|
|
left: grid ? grid.left : left - parseInt(canvas._offset.left), //设置canvas上的X坐标
|
|
top: grid
|
|
? grid.top + gridHeigth + 3 * gridHeigth - 18
|
|
: top - parseInt(canvas._offset.top) + (3 / 2) * gridHeigth, //设置canvas上的Y坐标
|
|
width: grid ? parseInt(grid.width) : 400,
|
|
height: grid ? 6 * list.length : 250,
|
|
rowCount: grid ? grid.rowCount : list.length, //行
|
|
colCount: grid ? grid.colCount : 4, //列
|
|
});
|
|
// 第二个动画
|
|
for (let y = 1; y <= rowCount; y++) {
|
|
// 行
|
|
const obj = list[y - 1];
|
|
for (let x = 1; x <= colCount; x++) {
|
|
// 列
|
|
// const curentText = obj[Object.keys(obj)[x - 1]] + '' //当前单元格的值
|
|
let curentText = obj[keys[x - 1]] + ""; //当前单元格的值
|
|
|
|
const fontSize = grid && grid.fontSize ? parseInt(grid.fontSize) : 16;
|
|
if (curentText.length * fontSize > gridWidth) {
|
|
let num = Math.floor(gridWidth / fontSize);
|
|
curentText = curentText.substr(0, num);
|
|
}
|
|
|
|
let gridTop = (y - 1) * gridHeigth;
|
|
if ((grid && grid.verticalAlignment === "center") || !grid) {
|
|
if (grid)
|
|
gridTop = gridTop + (gridHeigth - parseInt(grid.fontSize)) / 2;
|
|
else gridTop = gridTop + (gridHeigth - 16) / 2;
|
|
} else if (grid && grid.verticalAlignment === "bottom") {
|
|
gridTop = gridTop + (gridHeigth - parseInt(grid.fontSize));
|
|
}
|
|
|
|
const textbox2 = new fabric.Textbox(curentText, {
|
|
width: gridWidth,
|
|
left: (x - 1) * gridWidth - 2, //设置canvas上的x坐标
|
|
top: gridTop - 2, //设置canvas上的Y坐标
|
|
shadow:
|
|
grid && (grid.effect == "true" || grid.effect == true)
|
|
? shadow
|
|
: null,
|
|
fontFamily: grid && grid.fontFamily ? grid.fontFamily : "SimSun",
|
|
fill: grid && grid.foreground ? grid.foreground : "#000000",
|
|
fontSize: grid && grid.fontSize ? parseInt(grid.fontSize) : 16,
|
|
fontStyle: grid && grid.fontStyle ? grid.fontStyle : "normal",
|
|
fontWeight: grid && grid.fontWeight ? grid.fontWeight : "normal",
|
|
textAlign:
|
|
grid && grid.horizontalAlignment
|
|
? grid.horizontalAlignment
|
|
: "center",
|
|
});
|
|
const border2 = new fabric.Rect({
|
|
width: gridWidth,
|
|
height: gridHeigth,
|
|
left: (x - 1) * gridWidth, //设置canvas上的X坐标
|
|
top: (y - 1) * gridHeigth, //设置canvas上的Y坐标 顶部对齐
|
|
stroke: grid && grid.lineColor ? grid.lineColor : "#dcdcdc", //网格线颜色
|
|
strokeDashArray: grid && grid.lineStyle === "2" ? [5, 10] : [0, 0], //实虚线
|
|
fill: grid && grid.background.includes("#") ? grid.background : "",
|
|
_type: "border",
|
|
visible:
|
|
grid &&
|
|
(grid.showGridLines === "false" || grid.showGridLines === false)
|
|
? false
|
|
: true,
|
|
strokeWidth:
|
|
grid &&
|
|
(grid.showGridLines === "true" || grid.showGridLines === true)
|
|
? parseInt(grid.lineWidth)
|
|
: 1,
|
|
});
|
|
child2.push(border2);
|
|
child2.push(textbox2);
|
|
}
|
|
}
|
|
let group2 = new fabric.Group(child2, {
|
|
left: grid ? grid.left : left - parseInt(canvas._offset.left), //设置canvas上的X坐标
|
|
top: grid
|
|
? grid.top + gridHeigth + 3 * gridHeigth - 18
|
|
: top - parseInt(canvas._offset.top) + (3 / 2) * gridHeigth, //设置canvas上的Y坐标
|
|
width: grid ? parseInt(grid.width) : 400,
|
|
// height: group2 ? parseInt(group2.height) : 250,
|
|
height: grid ? 6 * list.length : 250,
|
|
rowCount: grid ? grid.rowCount : list.length, //行
|
|
colCount: grid ? grid.colCount : 4, //列
|
|
});
|
|
|
|
let linear = function (t, b, c, d) {
|
|
return (c * t) / d + b;
|
|
};
|
|
if (list.length > 6) {
|
|
const handleSetDeputationAnimate1 = () => {
|
|
// group.animate('top', -(list.length * gridHeigth * 3 / 2 - (list.length * gridHeigth - group.height)), {
|
|
group.animate(
|
|
"top",
|
|
-(
|
|
(list.length * gridHeigth * 3) / 2 -
|
|
(list.length * gridHeigth - group.height - 2 * gridHeigth)
|
|
),
|
|
{
|
|
// from: -(list.length * gridHeigth / 2 - (list.length * gridHeigth - group.height)),
|
|
from: -(
|
|
(list.length * gridHeigth) / 2 -
|
|
(list.length * gridHeigth - group.height - 2 * gridHeigth)
|
|
),
|
|
duration:
|
|
grid && grid.moveSpeed ? parseInt(grid.moveSpeed) : 10000,
|
|
onChange: canvas.renderAll.bind(canvas),
|
|
onComplete: handleSetDeputationAnimate1,
|
|
easing: linear,
|
|
}
|
|
);
|
|
};
|
|
handleSetDeputationAnimate1();
|
|
|
|
const handleSetDeputationAnimate2 = () => {
|
|
group2.animate(
|
|
"top",
|
|
-(
|
|
(list.length * gridHeigth) / 2 -
|
|
(list.length * gridHeigth - group.height - 2 * gridHeigth)
|
|
),
|
|
{
|
|
from:
|
|
(list.length * gridHeigth) / 2 +
|
|
(list.length * gridHeigth - group.height - 2 * gridHeigth),
|
|
duration:
|
|
grid && grid.moveSpeed ? parseInt(grid.moveSpeed) : 10000,
|
|
onChange: canvas.renderAll.bind(canvas),
|
|
onComplete: handleSetDeputationAnimate2,
|
|
easing: linear,
|
|
}
|
|
);
|
|
};
|
|
handleSetDeputationAnimate2();
|
|
}
|
|
|
|
var rect = new fabric.Rect({
|
|
width: grid ? parseInt(grid.width) : 400,
|
|
height: grid ? parseInt(grid.height) : 350,
|
|
left: grid ? grid.left : left - parseInt(canvas._offset.left), //设置canvas上的X坐标
|
|
top: grid ? grid.top : top - parseInt(canvas._offset.top), //设置canvas上的Y坐标
|
|
// stroke: '#dcdcdc',
|
|
strokeWidth: 1,
|
|
fill: "",
|
|
});
|
|
|
|
childWrapper.push(group);
|
|
if (list.length > 6) {
|
|
childWrapper.push(group2);
|
|
}
|
|
childWrapper.push(headColumnGroup);
|
|
|
|
childWrapper.push(rect);
|
|
grid &&
|
|
(grid.showGroupHeadColumn == "false" || grid.showGroupHeadColumn == false)
|
|
? childWrapper.splice(2, 1)
|
|
: "";
|
|
|
|
let groupWrapper = new fabric.Group(childWrapper, {
|
|
left: grid ? grid.left : left - parseInt(canvas._offset.left), //设置canvas上的X坐标
|
|
top: grid ? grid.top : top - parseInt(canvas._offset.top), //设置canvas上的Y坐标
|
|
width: grid ? parseInt(grid.width) : 400,
|
|
height: grid ? parseInt(grid.height) : 350,
|
|
rowCount: grid ? grid.rowCount : list.length, //行
|
|
colCount: grid ? grid.colCount : 4, //列
|
|
horizontalAlignment:
|
|
grid && grid.horizontalAlignment
|
|
? grid.horizontalAlignment
|
|
: "center", //水平对齐方式left, center, right
|
|
verticalAlignment:
|
|
grid && grid.verticalAlignment ? grid.verticalAlignment : "center", //垂直方式对齐top, center, bottom
|
|
lineStyle: grid && grid.lineStyle ? grid.lineStyle : "1", //网格线样式
|
|
showGridLines:
|
|
grid &&
|
|
(grid.showGridLines === "false" || grid.showGridLines === false)
|
|
? false
|
|
: true, //是否显示网格
|
|
lineWidth: grid ? parseInt(grid.lineWidth) : 1, //网格线宽度
|
|
lineColor: grid ? grid.lineColor : "#dcdcdc", //网格线颜色
|
|
effect:
|
|
grid && (grid.effect === "true" || grid.effect === true)
|
|
? true
|
|
: false, // 阴影
|
|
fontFamily: grid ? grid.fontFamily : "SimSun", //字体
|
|
foreground: grid ? grid.foreground : "#000000", //字体颜色
|
|
fontSize: grid ? grid.fontSize : 16, //字体大小
|
|
fontStyle: grid ? grid.fontStyle : "normal",
|
|
fontWeight: grid ? grid.fontWeight : "normal",
|
|
background:
|
|
grid && grid.background.includes("#") ? grid.background : "", //透明
|
|
moveSpeed: grid && grid.moveSpeed ? grid.moveSpeed : "10000",
|
|
showGroupHeadColumn:
|
|
grid &&
|
|
(grid.showGroupHeadColumn === "false" ||
|
|
grid.showGroupHeadColumn === false)
|
|
? false
|
|
: true, //是否显示列头
|
|
groupHeadColumnColor: grid ? grid.groupHeadColumnColor : "#f4f4f4",
|
|
groupHeadColumnFontName: grid ? grid.groupHeadColumnFontName : "SimSun",
|
|
groupHeadColumnFontSize: grid ? grid.groupHeadColumnFontSize : 16,
|
|
groupHeadColumnFontStyle: grid
|
|
? grid.groupHeadColumnFontStyle
|
|
: "normal,normal",
|
|
component_type: grid ? grid.component_type : "8",
|
|
cvalue: grid,
|
|
bindingFieldID:
|
|
grid && grid.bindingFieldID ? grid.bindingFieldID : "0x1096",
|
|
});
|
|
|
|
groupWrapper.clipTo = function (ctx) {
|
|
ctx.beginPath();
|
|
ctx.rect(-this.width / 2, -this.height / 2, this.width, this.height); // 根据Group对象的左上角和宽高计算路径
|
|
};
|
|
|
|
canvas.add(groupWrapper);
|
|
};
|
|
//添加代表团列表end====================
|
|
|
|
//添加子议题列表start========================
|
|
let handleSetZytlb = (left, top, grid, result) => {
|
|
console.log("子议题列表", grid, result);
|
|
let resultJson = { objects: [], ScreenData: {}, ScreenContent: {} };
|
|
resultJson.ScreenData = result.ScreenData;
|
|
resultJson.ScreenContent = result.ScreenContent;
|
|
// let list = grid.text
|
|
let list = resultJson.ScreenData["0x106C"];
|
|
if (!Array.isArray(list)) return;
|
|
let child = []; //动画一
|
|
let child2 = []; //动画二
|
|
let childHead = []; //列头
|
|
let childWrapper = []; //最外层边框
|
|
const num = grid?.topicNumOnePage ? grid.topicNumOnePage : 5;
|
|
var newList = list.filter((val, index, arr) => {
|
|
return index !== 0;
|
|
});
|
|
var newList = list;
|
|
let length = num - newList.length + 1;
|
|
|
|
if (0 < length) {
|
|
for (let i = 1; i <= length; i++) {
|
|
newList.push({
|
|
To_name: "",
|
|
key1Select: "",
|
|
key2Select: "",
|
|
key3Select: "",
|
|
keyOtherSelect: "",
|
|
keyResultSelect: "",
|
|
});
|
|
}
|
|
}
|
|
|
|
const rowCount = newList.length;
|
|
const propsObj = list[0];
|
|
const colCount = Object.keys(propsObj).length;
|
|
const gridWidth1 = grid
|
|
? (grid.width - 2) * (parseInt(grid.topicPercent) / 100)
|
|
: 100;
|
|
const gridWidth2 = grid
|
|
? ((grid.width - 2) * (parseInt(100 - grid.topicPercent) / 100)) / 5
|
|
: 100;
|
|
const gridHeigth = grid
|
|
? grid.height / (parseInt(grid.topicNumOnePage) + 1)
|
|
: 50;
|
|
|
|
let headList = list[0];
|
|
|
|
for (let x = 1; x <= colCount; x++) {
|
|
//列
|
|
if (x == 1) {
|
|
let currentHeadText = headList[Object.keys(headList)[x - 1]] + "";
|
|
|
|
const fontSize = grid && grid.fontSize ? parseInt(grid.fontSize) : 18;
|
|
|
|
if (currentHeadText.length * fontSize > gridWidth1) {
|
|
let num = Math.floor(gridWidth1 / fontSize);
|
|
currentHeadText = currentHeadText.substr(0, num);
|
|
}
|
|
|
|
const haedTextbox = new fabric.Textbox(currentHeadText, {
|
|
width: gridWidth1,
|
|
left: (x - 1) * gridWidth1 - 2, //设置canvas上的x坐标
|
|
top:
|
|
grid && grid.fontSize
|
|
? (gridHeigth - parseInt(grid.fontSize)) / 2
|
|
: 16, //设置canvas上的Y坐标
|
|
fill: grid && grid.foreground ? grid.foreground : "#333",
|
|
fontFamily: grid && grid.fontFamily ? grid.fontFamily : "SimSun",
|
|
fontSize: grid && grid.fontSize ? parseInt(grid.fontSize) : 18,
|
|
fontStyle:
|
|
grid && grid.fontStyle ? grid.fontStyle.split(",")[0] : "normal",
|
|
fontWeight: grid && grid.fontWeight ? grid.fontWeight : "normal",
|
|
textAlign:
|
|
grid && grid.horizontalAlignment
|
|
? grid.horizontalAlignment
|
|
: "center",
|
|
});
|
|
const headBorder = new fabric.Rect({
|
|
width: gridWidth1,
|
|
height: gridHeigth,
|
|
left: (x - 1) * gridWidth1, //设置canvas上的X坐标
|
|
top: 0, //设置canvas上的Y坐标 顶部对齐
|
|
stroke: grid && grid.lineColor ? grid.lineColor : "#dcdcdc", //网格线颜色
|
|
// fill: grid && grid.foreground ? grid.foreground : 'f4f4f4',
|
|
// fill: resultJson.ScreenContent ? resultJson.ScreenContent.Sf_bgcolor : "#f4f4f4", //背景颜色
|
|
|
|
fill:
|
|
grid && grid.background && grid.background === "true"
|
|
? resultJson.ScreenContent
|
|
? resultJson.ScreenContent.Sf_bgcolor
|
|
: "#fff"
|
|
: grid && grid.background && grid.background.includes("#")
|
|
? grid.background
|
|
: "#fff",
|
|
|
|
_type: "border",
|
|
visible:
|
|
grid &&
|
|
(grid.showGridLines === "false" || grid.showGridLines === false)
|
|
? false
|
|
: true,
|
|
strokeWidth:
|
|
grid &&
|
|
(grid.showGridLines === "true" || grid.showGridLines === true)
|
|
? parseInt(grid.lineWidth)
|
|
: 1,
|
|
});
|
|
childHead.push(headBorder);
|
|
childHead.push(haedTextbox);
|
|
} else {
|
|
let currentHeadText = headList[Object.keys(headList)[x - 1]] + "";
|
|
|
|
const fontSize = grid && grid.fontSize ? parseInt(grid.fontSize) : 18;
|
|
|
|
if (currentHeadText.length * fontSize > gridWidth1) {
|
|
let num = Math.floor(gridWidth1 / fontSize);
|
|
currentHeadText = textContent.substr(0, num);
|
|
}
|
|
|
|
const haedTextbox = new fabric.Textbox(currentHeadText, {
|
|
width: gridWidth2,
|
|
left: (x - 2) * gridWidth2 - 2 + gridWidth1, //设置canvas上的x坐标
|
|
top:
|
|
grid && grid.fontSize
|
|
? (gridHeigth - parseInt(grid.fontSize)) / 2
|
|
: 16, //设置canvas上的Y坐标
|
|
fill: grid && grid.foreground ? grid.foreground : "#333",
|
|
fontFamily: grid && grid.fontFamily ? grid.fontFamily : "SimSun",
|
|
fontSize: grid && grid.fontSize ? parseInt(grid.fontSize) : 18,
|
|
fontStyle:
|
|
grid && grid.fontStyle ? grid.fontStyle.split(",")[0] : "normal",
|
|
fontWeight: grid && grid.fontWeight ? grid.fontWeight : "normal",
|
|
textAlign:
|
|
grid && grid.horizontalAlignment
|
|
? grid.horizontalAlignment
|
|
: "center",
|
|
});
|
|
const headBorder = new fabric.Rect({
|
|
width: gridWidth2,
|
|
height: gridHeigth,
|
|
left: (x - 2) * gridWidth2 + gridWidth1, //设置canvas上的X坐标
|
|
top: 0, //设置canvas上的Y坐标 顶部对齐
|
|
stroke: grid && grid.lineColor ? grid.lineColor : "#dcdcdc", //网格线颜色
|
|
// fill: grid && grid.foreground ? grid.foreground : 'f4f4f4',
|
|
// fill: resultJson.ScreenContent ? resultJson.ScreenContent.Sf_bgcolor : "#f4f4f4", //背景颜色
|
|
|
|
fill:
|
|
grid && grid.background && grid.background === "true"
|
|
? resultJson.ScreenContent
|
|
? resultJson.ScreenContent.Sf_bgcolor
|
|
: "#fff"
|
|
: grid && grid.background && grid.background.includes("#")
|
|
? grid.background
|
|
: "#fff",
|
|
|
|
_type: "border",
|
|
visible:
|
|
grid &&
|
|
(grid.showGridLines === "false" || grid.showGridLines === false)
|
|
? false
|
|
: true,
|
|
strokeWidth:
|
|
grid &&
|
|
(grid.showGridLines === "true" || grid.showGridLines === true)
|
|
? parseInt(grid.lineWidth)
|
|
: 1,
|
|
});
|
|
childHead.push(headBorder);
|
|
childHead.push(haedTextbox);
|
|
}
|
|
}
|
|
// var headColumnGroup = new fabric.Group(childHead,{
|
|
// width: grid ? parseInt(grid.width) : 600,
|
|
// height: gridHeigth,
|
|
// left: grid ? grid.left : left - parseInt(canvas._offset.left) + (grid?.width ? grid.width/6 : 100), //设置canvas上的X坐标
|
|
// // top: - parseInt(grid.fontSize)/2,
|
|
// top: 0,
|
|
// // top: grid ? grid.top : top - parseInt(canvas._offset.top), //设置canvas上的Y坐标
|
|
// showGroupHeadColumn: grid && (grid.showGridLines == 'false' || grid.showGridLines == false) ? false : true, //是否显示列头
|
|
// groupHeadColumnColor:grid ? grid.background : "#f4f4f4",
|
|
// groupHeadColumnFontName:grid ? grid.fontFamily : 'SimSun',
|
|
// groupHeadColumnFontSize:grid ? grid.fontSize : 18,
|
|
// groupHeadColumnFontStyle:grid ? grid.fontStyle : 'normal',
|
|
// groupHeadColumnFontWeight: grid ? grid.fontWeight : 'normal'
|
|
// })
|
|
|
|
for (let y = 1; y <= rowCount; y++) {
|
|
// 行
|
|
const obj = newList[y - 1];
|
|
for (let x = 1; x <= colCount; x++) {
|
|
// 列
|
|
if (x == 1) {
|
|
let curentText = obj[Object.keys(obj)[x - 1]] + ""; //当前单元格的值
|
|
|
|
const fontSize =
|
|
grid && grid.fontSize ? parseInt(grid.fontSize) : 18;
|
|
|
|
if (curentText.length * fontSize > gridWidth1) {
|
|
let num = Math.floor(gridWidth1 / fontSize);
|
|
curentText = curentText.substr(0, num);
|
|
}
|
|
|
|
let gridTop = (y - 2) * gridHeigth;
|
|
if ((grid && grid.verticalAlignment === "center") || !grid) {
|
|
if (grid)
|
|
gridTop = gridTop + (gridHeigth - parseInt(grid.fontSize)) / 2;
|
|
else gridTop = gridTop + (gridHeigth - 16) / 2;
|
|
} else if (grid && grid.verticalAlignment === "bottom") {
|
|
gridTop = gridTop + (gridHeigth - parseInt(grid.fontSize));
|
|
}
|
|
|
|
const textbox = new fabric.Textbox(curentText, {
|
|
width: gridWidth1,
|
|
height: gridHeigth,
|
|
left: (x - 1) * gridWidth1 - 2, //设置canvas上的x坐标
|
|
top: gridTop - 2, //设置canvas上的Y坐标
|
|
shadow:
|
|
grid && (grid.effect == "true" || grid.effect == true)
|
|
? shadow
|
|
: null,
|
|
fontFamily: grid && grid.fontFamily ? grid.fontFamily : "SimSun",
|
|
fill: grid && grid.foreground ? grid.foreground : "#000000",
|
|
fontSize: grid && grid.fontSize ? parseInt(grid.fontSize) : 18,
|
|
fontStyle: grid && grid.fontStyle ? grid.fontStyle : "normal",
|
|
fontWeight: grid && grid.fontWeight ? grid.fontWeight : "normal",
|
|
textAlign:
|
|
grid && grid.horizontalAlignment
|
|
? grid.horizontalAlignment
|
|
: "center",
|
|
});
|
|
const border = new fabric.Rect({
|
|
width: gridWidth1,
|
|
height: gridHeigth,
|
|
left: (x - 1) * gridWidth1, //设置canvas上的X坐标
|
|
top: (y - 2) * gridHeigth, //设置canvas上的Y坐标 顶部对齐
|
|
stroke: grid && grid.lineColor ? grid.lineColor : "#dcdcdc", //网格线颜色
|
|
strokeDashArray:
|
|
grid && grid.lineStyle === "2" ? [5, 10] : [0, 0], //实虚线
|
|
// fill: grid && grid.background.includes('#') ? grid.background : '',
|
|
|
|
fill:
|
|
grid && grid.background && grid.background === "true"
|
|
? resultJson.ScreenContent
|
|
? resultJson.ScreenContent.Sf_bgcolor
|
|
: "#fff"
|
|
: grid && grid.background && grid.background.includes("#")
|
|
? grid.background
|
|
: "#fff",
|
|
|
|
_type: "border",
|
|
visible:
|
|
grid &&
|
|
(grid.showGridLines === "false" || grid.showGridLines === false)
|
|
? false
|
|
: true,
|
|
strokeWidth:
|
|
grid &&
|
|
(grid.showGridLines === "true" || grid.showGridLines === true)
|
|
? parseInt(grid.lineWidth)
|
|
: 1,
|
|
});
|
|
child.push(border);
|
|
child.push(textbox);
|
|
} else {
|
|
let curentText = obj[Object.keys(obj)[x - 1]] + ""; //当前单元格的值
|
|
|
|
const fontSize =
|
|
grid && grid.fontSize ? parseInt(grid.fontSize) : 18;
|
|
|
|
if (curentText.length * fontSize > gridWidth1) {
|
|
let num = Math.floor(gridWidth1 / fontSize);
|
|
curentText = curentText.substr(0, num);
|
|
}
|
|
|
|
let gridTop = (y - 2) * gridHeigth;
|
|
if ((grid && grid.verticalAlignment === "center") || !grid) {
|
|
if (grid)
|
|
gridTop = gridTop + (gridHeigth - parseInt(grid.fontSize)) / 2;
|
|
else gridTop = gridTop + (gridHeigth - 16) / 2;
|
|
} else if (grid && grid.verticalAlignment === "bottom") {
|
|
gridTop = gridTop + (gridHeigth - parseInt(grid.fontSize));
|
|
}
|
|
|
|
const textbox = new fabric.Textbox(curentText, {
|
|
width: gridWidth2,
|
|
height: gridHeigth,
|
|
left: (x - 2) * gridWidth2 + gridWidth1 - 2, //设置canvas上的x坐标
|
|
top: gridTop - 2, //设置canvas上的Y坐标
|
|
shadow:
|
|
grid && (grid.effect == "true" || grid.effect == true)
|
|
? shadow
|
|
: null,
|
|
fontFamily: grid && grid.fontFamily ? grid.fontFamily : "SimSun",
|
|
fill: grid && grid.foreground ? grid.foreground : "#000000",
|
|
fontSize: grid && grid.fontSize ? parseInt(grid.fontSize) : 18,
|
|
fontStyle: grid && grid.fontStyle ? grid.fontStyle : "normal",
|
|
fontWeight: grid && grid.fontWeight ? grid.fontWeight : "normal",
|
|
textAlign:
|
|
grid && grid.horizontalAlignment
|
|
? grid.horizontalAlignment
|
|
: "center",
|
|
});
|
|
const border = new fabric.Rect({
|
|
width: gridWidth2,
|
|
height: gridHeigth,
|
|
left: (x - 2) * gridWidth2 + gridWidth1, //设置canvas上的X坐标
|
|
top: (y - 2) * gridHeigth, //设置canvas上的Y坐标 顶部对齐
|
|
stroke: grid && grid.lineColor ? grid.lineColor : "#dcdcdc", //网格线颜色
|
|
strokeDashArray:
|
|
grid && grid.lineStyle === "2" ? [5, 10] : [0, 0], //实虚线
|
|
// fill: grid && grid.background.includes('#') ? grid.background : '',
|
|
|
|
fill:
|
|
grid && grid.background && grid.background === "true"
|
|
? resultJson.ScreenContent
|
|
? resultJson.ScreenContent.Sf_bgcolor
|
|
: "#fff"
|
|
: grid && grid.background && grid.background.includes("#")
|
|
? grid.background
|
|
: "#fff",
|
|
|
|
_type: "border",
|
|
visible:
|
|
grid &&
|
|
(grid.showGridLines === "false" || grid.showGridLines === false)
|
|
? false
|
|
: true,
|
|
strokeWidth:
|
|
grid &&
|
|
(grid.showGridLines === "true" || grid.showGridLines === true)
|
|
? parseInt(grid.lineWidth)
|
|
: 1,
|
|
});
|
|
child.push(border);
|
|
child.push(textbox);
|
|
}
|
|
}
|
|
}
|
|
let group = new fabric.Group(child, {
|
|
left: grid ? grid.left : left - parseInt(canvas._offset.left), //设置canvas上的X坐标
|
|
// top: grid ? (grid.top + gridHeigth) + 3*gridHeigth - 18 : top - parseInt(canvas._offset.top) + gridHeigth + 3*gridHeigth - 18, //设置canvas上的Y坐标
|
|
// top: grid ? gridHeigth + 3*gridHeigth - 18 : top - parseInt(canvas._offset.top) + gridHeigth + 3*gridHeigth - 18, //设置canvas上的Y坐标
|
|
top: gridHeigth, //设置canvas上的Y坐标
|
|
width: grid ? parseInt(grid.width) : 600,
|
|
height: grid ? grid.topicNumOnePage * list.length : 250,
|
|
});
|
|
// 第二个动画
|
|
// for(let y = 1; y <= rowCount; y++) { // 行
|
|
// const obj = newList[y-1]
|
|
// for(let x = 1; x <= colCount; x++) { // 列
|
|
// const curentText = obj[Object.keys(obj)[x-1]] + '' //当前单元格的值
|
|
// let gridTop = (y - 2) * gridHeigth
|
|
// if(grid && grid.verticalAlignment === 'center' || !grid) {
|
|
// if(grid)gridTop = gridTop + (gridHeigth - parseInt(grid.fontSize)) / 2;
|
|
// else gridTop = gridTop + (gridHeigth - 16) / 2;
|
|
// } else if (grid && grid.verticalAlignment === 'bottom'){
|
|
// gridTop = gridTop + (gridHeigth - parseInt(grid.fontSize))
|
|
// }
|
|
// if(x == 1){
|
|
// const textbox2 = new fabric.Textbox(curentText, {
|
|
// width: gridWidth1,
|
|
// // height: gridHeigth,
|
|
// left: (x-1)* gridWidth1 - 2 , //设置canvas上的x坐标
|
|
// top: gridTop - 2, //设置canvas上的Y坐标
|
|
// shadow: grid && (grid.effect == 'true' || grid.effect == true) ? shadow : null,
|
|
// fontFamily: grid && grid.fontFamily?grid.fontFamily : 'SimSun',
|
|
// fill: grid && grid.foreground?grid.foreground : "#000000",
|
|
// fontSize: grid && grid.fontSize?parseInt(grid.fontSize) : 18,
|
|
// fontStyle: grid && grid.fontStyle?grid.fontStyle : 'normal',
|
|
// fontWeight: grid && grid.fontWeight?grid.fontWeight : 'normal',
|
|
// textAlign: grid && grid.horizontalAlignment ? grid.horizontalAlignment : 'center',
|
|
// });
|
|
// const border2 = new fabric.Rect({
|
|
// width: gridWidth1,
|
|
// height: gridHeigth,
|
|
// left: (x - 1) * gridWidth1, //设置canvas上的X坐标
|
|
// // top: 0,
|
|
// top: (y - 2) * gridHeigth, //设置canvas上的Y坐标 顶部对齐
|
|
// stroke: grid && grid.lineColor ? grid.lineColor : "#dcdcdc",//网格线颜色
|
|
// strokeDashArray: grid && grid.lineStyle === '2' ? [5, 10] : [0, 0],//实虚线
|
|
// fill: grid && grid.background.includes('#') ? grid.background : '',
|
|
// _type: 'border',
|
|
// visible: grid && (grid.showGridLines === 'false' || grid.showGridLines === false) ? false : true,
|
|
// strokeWidth: grid && (grid.showGridLines === 'true' || grid.showGridLines === true) ? parseInt(grid.lineWidth) : 1,
|
|
// });
|
|
// child2.push(border2)
|
|
// child2.push(textbox2)
|
|
// }else{
|
|
// const curentText = obj[Object.keys(obj)[x-1]] + '' //当前单元格的值
|
|
// let gridTop = (y - 2) * gridHeigth
|
|
// if(grid && grid.verticalAlignment === 'center' || !grid) {
|
|
// if(grid)gridTop = gridTop + (gridHeigth - parseInt(grid.fontSize)) / 2;
|
|
// else gridTop = gridTop + (gridHeigth - 16) / 2;
|
|
// } else if (grid && grid.verticalAlignment === 'bottom'){
|
|
// gridTop = gridTop + (gridHeigth - parseInt(grid.fontSize))
|
|
// }
|
|
|
|
// const textbox2 = new fabric.Textbox(curentText , {
|
|
// width: gridWidth2,
|
|
// // height: gridHeigth,
|
|
// left: (x-2)* gridWidth2 + gridWidth1 - 2 , //设置canvas上的x坐标
|
|
// top: gridTop - 2, //设置canvas上的Y坐标
|
|
// shadow: grid && (grid.effect == 'true' || grid.effect == true) ? shadow : null,
|
|
// fontFamily: grid && grid.fontFamily?grid.fontFamily : 'SimSun',
|
|
// fill: grid && grid.foreground?grid.foreground : "#000000",
|
|
// fontSize: grid && grid.fontSize?parseInt(grid.fontSize) : 18,
|
|
// fontStyle: grid && grid.fontStyle?grid.fontStyle : 'normal',
|
|
// fontWeight: grid && grid.fontWeight?grid.fontWeight : 'normal',
|
|
// textAlign: grid && grid.horizontalAlignment ? grid.horizontalAlignment : 'center',
|
|
// });
|
|
// const border2 = new fabric.Rect({
|
|
// width: gridWidth2,
|
|
// height: gridHeigth,
|
|
// left: (x - 2) * gridWidth2 + gridWidth1, //设置canvas上的X坐标
|
|
// top: (y - 2) * gridHeigth, //设置canvas上的Y坐标 顶部对齐
|
|
// stroke: grid && grid.lineColor ? grid.lineColor : "#dcdcdc",//网格线颜色
|
|
// strokeDashArray: grid && grid.lineStyle === '2' ? [5, 10] : [0, 0],//实虚线
|
|
// fill: grid && grid.background.includes('#') ? grid.background : '',
|
|
// _type: 'border',
|
|
// visible: grid && (grid.showGridLines === 'false' || grid.showGridLines === false) ? false : true,
|
|
// strokeWidth: grid && (grid.showGridLines === 'true' || grid.showGridLines === true) ? parseInt(grid.lineWidth) : 1,
|
|
// });
|
|
// child2.push(border2)
|
|
// child2.push(textbox2)
|
|
// }
|
|
// }
|
|
// }
|
|
let group2 = new fabric.Group(child2, {
|
|
left: grid ? grid.left : left - parseInt(canvas._offset.left), //设置canvas上的X坐标
|
|
top: grid
|
|
? grid.top + gridHeigth + 3 * gridHeigth - 18
|
|
: top -
|
|
parseInt(canvas._offset.top) +
|
|
gridHeigth +
|
|
3 * gridHeigth -
|
|
18, //设置canvas上的Y坐标
|
|
width: grid ? parseInt(grid.width) : 600,
|
|
height: grid ? grid.topicNumOnePage * list.length : 250,
|
|
});
|
|
|
|
let linear = function (t, b, c, d) {
|
|
return (c * t) / d + b;
|
|
};
|
|
if (list.length > num) {
|
|
if (parseInt(grid.moveSpeed) !== 6000) {
|
|
const handleSetDeputationAnimate1 = () => {
|
|
group.animate(
|
|
"top",
|
|
-(
|
|
(list.length * gridHeigth * 3) / 2 -
|
|
(list.length * gridHeigth - group.height)
|
|
),
|
|
{
|
|
from: -(
|
|
(list.length * gridHeigth) / 2 -
|
|
(list.length * gridHeigth - group.height)
|
|
),
|
|
duration:
|
|
grid && grid.moveSpeed ? parseInt(grid.moveSpeed) : 5000,
|
|
onChange: canvas.renderAll.bind(canvas),
|
|
onComplete: handleSetDeputationAnimate1,
|
|
easing: linear,
|
|
}
|
|
);
|
|
};
|
|
handleSetDeputationAnimate1();
|
|
const handleSetDeputationAnimate2 = () => {
|
|
group2.animate(
|
|
"top",
|
|
-(
|
|
(list.length * gridHeigth) / 2 -
|
|
(list.length * gridHeigth - group.height)
|
|
),
|
|
{
|
|
from:
|
|
(list.length * gridHeigth) / 2 +
|
|
(list.length * gridHeigth - group.height),
|
|
duration:
|
|
grid && grid.moveSpeed ? parseInt(grid.moveSpeed) : 5000,
|
|
onChange: canvas.renderAll.bind(canvas),
|
|
onComplete: handleSetDeputationAnimate2,
|
|
easing: linear,
|
|
}
|
|
);
|
|
};
|
|
handleSetDeputationAnimate2();
|
|
}
|
|
}
|
|
|
|
var rect = new fabric.Rect({
|
|
width: grid ? parseInt(grid.width) : 600,
|
|
height: grid ? parseInt(grid.height) : 350,
|
|
left: grid ? grid.left : left - parseInt(canvas._offset.left), //设置canvas上的X坐标
|
|
top: 0,
|
|
// top: grid ? grid.top : top - parseInt(canvas._offset.top) , //设置canvas上的Y坐标
|
|
stroke: "#dcdcdc",
|
|
strokeWidth: 1,
|
|
fill: "",
|
|
});
|
|
|
|
// childWrapper.push(rect);
|
|
childWrapper.push(group);
|
|
if (list.length > num) {
|
|
// childWrapper.push(group2);
|
|
}
|
|
|
|
// childWrapper.push(headColumnGroup)
|
|
|
|
let groupWrapper = new fabric.Group(childWrapper, {
|
|
width: grid ? parseInt(grid.width) : 600,
|
|
height: grid ? parseInt(grid.height) : 350,
|
|
left: grid ? grid.left : left - parseInt(canvas._offset.left), //设置canvas上的X坐标
|
|
// top: -(grid.top+parseInt(canvas._offset.top)),
|
|
top: grid ? grid.top : top - parseInt(canvas._offset.top),
|
|
// top: grid ? grid.top : top - parseInt(canvas._offset.top), //设置canvas上的Y坐标
|
|
component_type: "9",
|
|
cvalue: grid,
|
|
horizontalAlignment: grid ? grid.horizontalAlignment : "center", //水平对齐方式left, center, right
|
|
verticalAlignment: grid ? grid.verticalAlignment : "center", //垂直方式对齐top, center, bottom
|
|
// text: text,
|
|
moveSpeed: grid && grid.moveSpeed ? grid.moveSpeed : "5000",
|
|
background:
|
|
grid && grid.background.includes("#") ? grid.background : "", //透明
|
|
effect:
|
|
grid && (grid.effect === "true" || grid.effect === true)
|
|
? true
|
|
: false, // 阴影
|
|
lineStyle: grid && grid.lineStyle ? grid.lineStyle : "1", //网格线样式
|
|
showGridLines:
|
|
grid &&
|
|
(grid.showGridLines === "false" || grid.showGridLines === false)
|
|
? false
|
|
: true, //是否显示网格
|
|
lineWidth: grid && grid.lineWidth ? parseInt(grid.lineWidth) : "1", //网格线宽度
|
|
lineColor: grid && grid.lineColor ? grid.lineColor : "#dcdcdc", //网格线颜色
|
|
fontFamily: grid ? grid.fontFamily : "SimSun", //字体
|
|
fontStyle: grid ? grid.fontStyle : "normal", //字体宽度设置
|
|
foreground: grid ? grid.foreground : "#000", //字体颜色
|
|
fontSize: grid ? parseInt(grid.fontSize) : 18, //字体大小
|
|
fontWeight: grid && grid.fontWeight ? grid.fontWeight : "normal", //字体宽度
|
|
keyTopicSelect:
|
|
grid &&
|
|
(grid.keyTopicSelect === "true" || grid.keyTopicSelect === true)
|
|
? true
|
|
: false, // 是否显示议题
|
|
topicPercent: grid
|
|
? parseInt(grid.topicPercent)
|
|
: Math.round((1 / 6) * 100), // 议题百分比
|
|
topicNumOnePage: grid ? parseInt(grid.topicNumOnePage) : 6, //每页条数
|
|
key1Select:
|
|
grid && (grid.key1Select === "true" || grid.key1Select === true)
|
|
? true
|
|
: false, //是否显示按键1
|
|
key2Select:
|
|
grid && (grid.key2Select === "true" || grid.key2Select === true)
|
|
? true
|
|
: false, //是否显示按键2
|
|
key3Select:
|
|
grid && (grid.key3Select === "true" || grid.key3Select === true)
|
|
? true
|
|
: false, //是否显示按键3
|
|
keyOtherSelect:
|
|
grid &&
|
|
(grid.keyOtherSelect === "true" || grid.keyOtherSelect === true)
|
|
? true
|
|
: false, //是否显示未按
|
|
keyResultSelect:
|
|
grid &&
|
|
(grid.keyResultSelect === "true" || grid.keyResultSelect === true)
|
|
? true
|
|
: false, //是否显示议题结果
|
|
lockMovementX: true, //X轴是否可被移动(true为不可)
|
|
lockMovementY: true, //Y轴是否可被移动(true为不可)
|
|
hasControls: false,
|
|
hasBorders: false,
|
|
});
|
|
|
|
groupWrapper.clipTo = function (ctx) {
|
|
ctx.beginPath();
|
|
ctx.rect(-this.width / 2, -this.height / 2, this.width, this.height); // 根据Group对象的左上角和宽高计算路径
|
|
};
|
|
|
|
canvas.add(groupWrapper);
|
|
};
|
|
//添加时间控件列表start====================
|
|
let timer = null;
|
|
let handleSetSjkj = (left, top, grid) => {
|
|
let date = grid
|
|
? moment(Date.now()).format(grid.formatPar)
|
|
: moment(Date.now()).format("YYYY年MM月DD日");
|
|
const textWidth = grid ? parseInt(grid.width) : 200;
|
|
const textHeight = grid ? parseInt(grid.height) : 100;
|
|
let textTop = 0;
|
|
let textbox = new fabric.Textbox(
|
|
grid
|
|
? moment(Date.now()).format(grid.formatPar)
|
|
: moment(Date.now()).format("YYYY年MM月DD日"),
|
|
{
|
|
fill:
|
|
grid && grid.fill
|
|
? grid.fill
|
|
: grid && grid.foreground
|
|
? grid.foreground
|
|
: "#000",
|
|
fontSize: grid && grid.fontSize ? parseInt(grid.fontSize) : 18,
|
|
fontWeight: grid && grid.fontWeight ? grid.fontWeight : "normal",
|
|
fontStyle: grid && grid.fontStyle ? grid.fontStyle : "normal",
|
|
fontFamily: grid && grid.fontFamily ? grid.fontFamily : "SimSun",
|
|
width: textWidth,
|
|
left: 0,
|
|
top: textTop,
|
|
}
|
|
);
|
|
const border = new fabric.Rect({
|
|
left: 0,
|
|
top: 0,
|
|
width: textWidth,
|
|
height: textHeight,
|
|
background:
|
|
grid && grid.background.includes("#") ? grid.background : "",
|
|
fill: grid && grid.background.includes("#") ? grid.background : "",
|
|
_type: "border",
|
|
});
|
|
let group = new fabric.Group([border, textbox], {
|
|
text: date,
|
|
width: textWidth,
|
|
height: textHeight,
|
|
left: grid ? parseInt(grid.left) : parseInt(left - canvas._offset.left),
|
|
top: grid ? parseInt(grid.top) : parseInt(top - canvas._offset.top),
|
|
formatPar: grid && grid.formatPar ? grid.formatPar : "YYYY年MM月DD日", // 时间格式
|
|
background:
|
|
grid && grid.background.includes("#") ? grid.background : "",
|
|
fill:
|
|
grid && grid.fill
|
|
? grid.fill
|
|
: grid && grid.foreground
|
|
? grid.foreground
|
|
: "#000",
|
|
fontSize: grid && grid.fontSize ? parseInt(grid.fontSize) : 18,
|
|
fontWeight: grid && grid.fontWeight ? grid.fontWeight : "normal",
|
|
fontStyle: grid && grid.fontStyle ? grid.fontStyle : "normal",
|
|
fontFamily: grid && grid.fontFamily ? grid.fontFamily : "SimSun",
|
|
component_type: "10",
|
|
cvalue: grid,
|
|
lockMovementX: true, //X轴是否可被移动(true为不可)
|
|
lockMovementY: true, //Y轴是否可被移动(true为不可)
|
|
hasControls: false,
|
|
hasBorders: false,
|
|
});
|
|
canvas.add(group);
|
|
timer = setInterval(() => {
|
|
group.item(1).set({
|
|
text: grid
|
|
? moment(Date.now()).format(grid.formatPar)
|
|
: moment(Date.now()).format(bjctDate),
|
|
});
|
|
canvas.renderAll();
|
|
}, 1000);
|
|
};
|
|
//添加时间控件列表end====================
|
|
|
|
//添加线条控制start====================
|
|
let handleSetImage = (left, top, type, val) => {
|
|
let x1 = val ? val.left : left - canvas._offset.left;
|
|
let y1 = val ? val.top : top - canvas._offset.top;
|
|
let x2 = val ? val.left + val.width : left - canvas._offset.left + 200;
|
|
let y2 = val ? val.top + val.height : top - canvas._offset.top + 100;
|
|
let lineBoxWidth = val ? val.width : 200;
|
|
let lineBoxHeigth = val ? val.height : 100;
|
|
switch (type) {
|
|
case "horizontalrealline":
|
|
case "11":
|
|
let horizontalRealLine = new fabric.Line([x1, y1, x2, y1], {
|
|
stroke: val ? val.stroke : "#e70808", //线颜色
|
|
strokeWidth: val ? Number(val.strokeThickness) : 2, //线宽
|
|
left: lineBoxWidth,
|
|
top: 0,
|
|
width: lineBoxWidth,
|
|
_type: "line",
|
|
});
|
|
let borderHRL = new fabric.Rect({
|
|
left: lineBoxWidth,
|
|
top: 0,
|
|
width: lineBoxWidth,
|
|
height: lineBoxHeigth,
|
|
fill: "",
|
|
_type: "border",
|
|
});
|
|
let groupHRL = new fabric.Group([borderHRL, horizontalRealLine], {
|
|
component_type: "11",
|
|
cvalue: val,
|
|
width: lineBoxWidth,
|
|
height: lineBoxHeigth,
|
|
stroke: val ? val.stroke : "#e70808", //线颜色
|
|
strokeThickness: val ? val.strokeThickness : 2, //线宽
|
|
left: val ? val.left : left - canvas._offset.left, //设置canvas上的X坐标
|
|
top: val ? val.top : top - canvas._offset.top, //设置canvas上的Y坐标
|
|
lockMovementX: true, //X轴是否可被移动(true为不可)
|
|
lockMovementY: true, //Y轴是否可被移动(true为不可)
|
|
hasControls: false,
|
|
hasBorders: false,
|
|
});
|
|
canvas.add(groupHRL); // 将图形添加至画布
|
|
break;
|
|
case "horizontaldottedline":
|
|
case "12":
|
|
let horizontalDottedLine = new fabric.Line([x1, y1, x2, y1], {
|
|
stroke: val ? val.stroke : "#000000", //线颜色
|
|
strokeWidth: val ? Number(val.strokeThickness) : 2, //线宽
|
|
strokeDashArray: [5, 5],
|
|
left: lineBoxWidth,
|
|
top: 0,
|
|
width: lineBoxWidth,
|
|
_type: "line",
|
|
});
|
|
let borderHDL = new fabric.Rect({
|
|
left: lineBoxWidth,
|
|
top: 0,
|
|
width: lineBoxWidth,
|
|
height: lineBoxHeigth,
|
|
fill: "",
|
|
_type: "border",
|
|
});
|
|
let groupHDL = new fabric.Group([borderHDL, horizontalDottedLine], {
|
|
component_type: "12",
|
|
cvalue: val,
|
|
width: lineBoxWidth,
|
|
height: lineBoxHeigth,
|
|
stroke: val ? val.stroke : "#000000", //线颜色
|
|
strokeThickness: val ? val.strokeThickness : 2, //线宽
|
|
left: val ? val.left : left - canvas._offset.left, //设置canvas上的X坐标
|
|
top: val ? val.top : top - canvas._offset.top, //设置canvas上的Y坐标
|
|
lockMovementX: true, //X轴是否可被移动(true为不可)
|
|
lockMovementY: true, //Y轴是否可被移动(true为不可)
|
|
hasControls: false,
|
|
hasBorders: false,
|
|
});
|
|
canvas.add(groupHDL);
|
|
break;
|
|
case "verticalrealline":
|
|
case "13":
|
|
let verticalRealLine = new fabric.Line([x1, y1, x1, y2], {
|
|
stroke: val ? val.stroke : "#000000", //线颜色
|
|
strokeWidth: val ? Number(val.strokeThickness) : 2, //线宽
|
|
left: lineBoxWidth,
|
|
top: 0,
|
|
width: lineBoxWidth,
|
|
_type: "line",
|
|
});
|
|
|
|
let borderVRL = new fabric.Rect({
|
|
left: lineBoxWidth,
|
|
top: 0,
|
|
width: lineBoxWidth,
|
|
height: lineBoxHeigth,
|
|
fill: "",
|
|
_type: "border",
|
|
});
|
|
let groupVRL = new fabric.Group([borderVRL, verticalRealLine], {
|
|
component_type: "13",
|
|
cvalue: val,
|
|
width: lineBoxWidth,
|
|
height: lineBoxHeigth,
|
|
stroke: val ? val.stroke : "#000000", //线颜色
|
|
strokeThickness: val ? val.strokeThickness : 2, //线宽
|
|
left: val ? val.left : left - canvas._offset.left, //设置canvas上的X坐标
|
|
top: val ? val.top : top - canvas._offset.top, //设置canvas上的Y坐标
|
|
lockMovementX: true, //X轴是否可被移动(true为不可)
|
|
lockMovementY: true, //Y轴是否可被移动(true为不可)
|
|
hasControls: false,
|
|
hasBorders: false,
|
|
});
|
|
canvas.add(groupVRL);
|
|
break;
|
|
case "verticaldottedline":
|
|
case "14":
|
|
let verticalDottedLine = new fabric.Line([x1, y1, x1, y2], {
|
|
stroke: val ? val.stroke : "#000000", //线颜色
|
|
strokeWidth: val ? Number(val.strokeThickness) : 2, //线宽
|
|
strokeDashArray: [5, 5],
|
|
left: lineBoxWidth,
|
|
top: 0,
|
|
width: lineBoxWidth,
|
|
_type: "line",
|
|
});
|
|
|
|
let borderVDL = new fabric.Rect({
|
|
left: lineBoxWidth,
|
|
top: 0,
|
|
width: lineBoxWidth,
|
|
height: lineBoxHeigth,
|
|
fill: "",
|
|
_type: "border",
|
|
});
|
|
|
|
let groupVDL = new fabric.Group([borderVDL, verticalDottedLine], {
|
|
component_type: "14",
|
|
cvalue: val,
|
|
width: lineBoxWidth,
|
|
height: lineBoxHeigth,
|
|
stroke: val ? val.stroke : "#000000", //线颜色
|
|
strokeThickness: val ? val.strokeThickness : 2, //线宽
|
|
left: val ? val.left : left - canvas._offset.left, //设置canvas上的X坐标
|
|
top: val ? val.top : top - canvas._offset.top, //设置canvas上的Y坐标
|
|
lockMovementX: true, //X轴是否可被移动(true为不可)
|
|
lockMovementY: true, //Y轴是否可被移动(true为不可)
|
|
hasControls: false,
|
|
hasBorders: false,
|
|
});
|
|
canvas.add(groupVDL);
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
};
|
|
//添加线条控制end====================
|
|
|
|
//处理画布数据函数
|
|
let getValues = (item, val) => {
|
|
if (val) {
|
|
Object.keys(val).forEach((key) => {
|
|
if (item.bindingFieldID == key) {
|
|
item.text = val[key];
|
|
}
|
|
});
|
|
}
|
|
};
|
|
|
|
let canvas = new fabric.Canvas("canvas", {
|
|
stopContextMenu: true, //禁止默认右击事件
|
|
renderOnAddRemove: false,
|
|
});
|
|
|
|
function init() {
|
|
let url = window.location.search;
|
|
if (url.indexOf("?") != -1) {
|
|
console.log(url.substring(url.lastIndexOf("=") + 1, url.length));
|
|
let userId = url.substring(url.lastIndexOf("=") + 1, url.length);
|
|
fetch(
|
|
"http://localhost:9999/vhwcapi/v1/web/api/service/congresscontrol/tacitScreen",
|
|
{
|
|
method: "POST",
|
|
headers: {
|
|
Authorization: localStorage.getItem("antd-token-authority") + "",
|
|
// 'Apply-User': userInfo.id,
|
|
// 'System-User': userInfo.systemUser,
|
|
},
|
|
body: JSON.stringify({
|
|
id: userId,
|
|
}),
|
|
timeout: 50000,
|
|
}
|
|
)
|
|
.then((response) => {
|
|
return response.json();
|
|
})
|
|
.then((data) => {
|
|
console.log(data);
|
|
screendata = data;
|
|
updateCanvas(data);
|
|
})
|
|
.catch((err) => {
|
|
console.log(err);
|
|
});
|
|
var websocketPath =
|
|
"ws://localhost:9999/vhwcapi/v1/websocket/ccuwebsocket?userid=" +
|
|
userId,
|
|
websocket = new WebSocket(websocketPath);
|
|
websocket.onopen = function (evt) {};
|
|
websocket.onmessage = function (evt) {
|
|
console.log("消息", JSON.parse(evt.data));
|
|
let result = JSON.parse(evt.data).datarecord;
|
|
if (screendata != result) {
|
|
if (
|
|
result.ScreenFromContent &&
|
|
result.ScreenFromContent.length > 0
|
|
) {
|
|
updateCanvasobjects(result);
|
|
screendata = result;
|
|
}
|
|
}
|
|
};
|
|
websocket.onclose = function (evt) {};
|
|
websocket.onerror = function (evt) {};
|
|
}
|
|
}
|
|
|
|
function updateCanvasobjects(result) {
|
|
if (screendata != result) {
|
|
if (screendata?.ScreenContent?.Id == result.ScreenContent.Id) {
|
|
let canvasobjects = canvas.getObjects();
|
|
if (canvasobjects.length > 0) {
|
|
Object.keys(result.ScreenData).forEach((key) => {
|
|
canvasobjects.map((item) => {
|
|
if (
|
|
item.bindingFieldID == key ||
|
|
item.cvalue.bindingFieldID == key
|
|
) {
|
|
switch (item.component_type) {
|
|
case "1": //文本标签
|
|
if (item.text != result.ScreenData[key]) {
|
|
// let textContent = result.ScreenData[key].toString();
|
|
let beforpara = "";
|
|
let afterpara = "";
|
|
const parmitems = item.systemParContent.split("Ψ");
|
|
if (parmitems.length > 1) {
|
|
beforpara = parmitems[0];
|
|
afterpara = parmitems[1];
|
|
}
|
|
|
|
let textContent =
|
|
beforpara +
|
|
result.ScreenData[key].toString() +
|
|
afterpara;
|
|
if (item.bindingFieldID == "0x1025") {
|
|
if (
|
|
afterpara.includes("未按") &&
|
|
result.ScreenData[key].toString() == "0"
|
|
) {
|
|
textContent = "";
|
|
}
|
|
}
|
|
if (item && item.textTrimming != "1") {
|
|
if (textContent.length * item.fontSize > textWidth) {
|
|
if (item.rowCount) {
|
|
let num = Math.floor(textWidth / item.fontSize);
|
|
textContent =
|
|
textContent.substr(0, num - 1) + "...";
|
|
} else {
|
|
let num = Math.floor(textWidth / item.fontSize);
|
|
textContent = textContent.substr(0, num);
|
|
}
|
|
}
|
|
}
|
|
item.set("text", result.ScreenData[key]);
|
|
item._objects[1].set("text", textContent);
|
|
// item.text=result.ScreenData[key];
|
|
// item._objects[1].text=textContent;
|
|
}
|
|
break;
|
|
case "2": //图片照片
|
|
canvas.remove(item);
|
|
|
|
let b = {};
|
|
for (
|
|
let i = 0;
|
|
i < result.ScreenFromContent.length;
|
|
i++
|
|
) {
|
|
if (
|
|
result.ScreenFromContent[i].bindingFieldID === key
|
|
) {
|
|
b = result.ScreenFromContent[i];
|
|
}
|
|
}
|
|
|
|
let gridImg = Object.assign({}, b, {
|
|
imagePath: result.ScreenData[key],
|
|
});
|
|
|
|
handleAddImage(gridImg.top, gridImg.left, gridImg);
|
|
|
|
break;
|
|
case "3": //视频控件
|
|
break;
|
|
case "4": //议题内容
|
|
console.log("议题内容");
|
|
if (item.text != result.ScreenData[key].to_agendahtml) {
|
|
canvas.remove(item);
|
|
let c = {};
|
|
for (
|
|
let i = 0;
|
|
i < result.ScreenFromContent.length;
|
|
i++
|
|
) {
|
|
if (
|
|
result.ScreenFromContent[i].bindingFieldID === key
|
|
) {
|
|
c = result.ScreenFromContent[i];
|
|
}
|
|
}
|
|
|
|
let itemYtnr = Object.assign({}, c, {
|
|
text: result.ScreenData[key],
|
|
});
|
|
|
|
handleSetYtnr(itemYtnr.top, itemYtnr.left, itemYtnr);
|
|
}
|
|
|
|
break;
|
|
case "5": //网格列表
|
|
// canvas.remove(item)
|
|
let a = {};
|
|
for (
|
|
let i = 0;
|
|
i < result.ScreenFromContent.length;
|
|
i++
|
|
) {
|
|
if (
|
|
result.ScreenFromContent[i].bindingFieldID === key
|
|
) {
|
|
a = result.ScreenFromContent[i];
|
|
|
|
var aaaaa = result.ScreenData[key]
|
|
? result.ScreenData[key]
|
|
: [];
|
|
|
|
var bbbb = [];
|
|
aaaaa &&
|
|
aaaaa.map((item) => {
|
|
if (item.formid === a.id) {
|
|
bbbb.push(item);
|
|
}
|
|
});
|
|
|
|
let grid = Object.assign({}, a, { text: bbbb });
|
|
|
|
console.log("111111111111111111111111111");
|
|
handleSetGridList2(grid.top, grid.left, grid);
|
|
}
|
|
}
|
|
|
|
break;
|
|
case "6": //横向滚动文本
|
|
break;
|
|
case "7": //照片列表
|
|
console.log("删除图片", item);
|
|
|
|
canvas.remove(item);
|
|
|
|
let imageObj = {};
|
|
for (
|
|
let i = 0;
|
|
i < result.ScreenFromContent.length;
|
|
i++
|
|
) {
|
|
if (
|
|
result.ScreenFromContent[i].bindingFieldID === key
|
|
) {
|
|
imageObj = result.ScreenFromContent[i];
|
|
}
|
|
}
|
|
let imageLIst = Object.assign({}, imageObj, {
|
|
text: result.ScreenData[key],
|
|
});
|
|
handleSetPhoto(imageLIst.top, imageLIst.left, imageLIst);
|
|
|
|
break;
|
|
case "8": //代表团列表
|
|
canvas.remove(item);
|
|
let d = {};
|
|
for (
|
|
let i = 0;
|
|
i < result.ScreenFromContent.length;
|
|
i++
|
|
) {
|
|
if (
|
|
result.ScreenFromContent[i].bindingFieldID === key
|
|
) {
|
|
d = result.ScreenFromContent[i];
|
|
}
|
|
}
|
|
|
|
let itemDeputation = Object.assign({}, d, {
|
|
text: result.ScreenData[key],
|
|
});
|
|
|
|
handleSetDeputation(
|
|
itemDeputation.top,
|
|
itemDeputation.left,
|
|
itemDeputation
|
|
);
|
|
break;
|
|
case "9": //子义题列表
|
|
canvas.remove(item);
|
|
let f = {};
|
|
for (
|
|
let i = 0;
|
|
i < result.ScreenFromContent.length;
|
|
i++
|
|
) {
|
|
if (
|
|
result.ScreenFromContent[i].bindingFieldID === key
|
|
) {
|
|
f = result.ScreenFromContent[i];
|
|
}
|
|
}
|
|
|
|
let itemZytlb = Object.assign({}, f, {
|
|
text: result.ScreenData[key],
|
|
});
|
|
handleSetZytlb(
|
|
itemZytlb.top,
|
|
itemZytlb.left,
|
|
itemZytlb,
|
|
result
|
|
);
|
|
break;
|
|
case "10": //时间控件
|
|
break;
|
|
case "11":
|
|
case "12":
|
|
case "13": //图形控件
|
|
canvas.remove(item);
|
|
let e = {};
|
|
for (
|
|
let i = 0;
|
|
i < result.ScreenFromContent.length;
|
|
i++
|
|
) {
|
|
if (
|
|
result.ScreenFromContent[i].bindingFieldID === key
|
|
) {
|
|
e = result.ScreenFromContent[i];
|
|
}
|
|
}
|
|
|
|
let itemImage = Object.assign({}, e, {});
|
|
|
|
handleSetImage =
|
|
(itemImage.left,
|
|
itemImage.top,
|
|
itemImage.type,
|
|
itemImage);
|
|
break;
|
|
}
|
|
}
|
|
});
|
|
});
|
|
canvas.requestRenderAll();
|
|
} else {
|
|
Object.keys(result.ScreenData).forEach((key) => {
|
|
if ("0x1030" === key) {
|
|
switch (result.ScreenFromContent[0].component_type) {
|
|
case "4": //议题内容
|
|
console.log("议题内容");
|
|
|
|
let c = {};
|
|
for (let i = 0; i < result.ScreenFromContent.length; i++) {
|
|
if (result.ScreenFromContent[i].bindingFieldID === key) {
|
|
c = result.ScreenFromContent[i];
|
|
}
|
|
}
|
|
|
|
let itemYtnr = Object.assign({}, c, {
|
|
text: result.ScreenData[key],
|
|
});
|
|
|
|
handleSetYtnr(itemYtnr.top, itemYtnr.left, itemYtnr);
|
|
|
|
break;
|
|
|
|
case "9": //子义题列表
|
|
let f = {};
|
|
for (let i = 0; i < result.ScreenFromContent.length; i++) {
|
|
if (result.ScreenFromContent[i].bindingFieldID === key) {
|
|
f = result.ScreenFromContent[i];
|
|
}
|
|
}
|
|
|
|
let itemZytlb = Object.assign({}, f, {
|
|
text: result.ScreenData[key],
|
|
});
|
|
handleSetZytlb(
|
|
itemZytlb.top,
|
|
itemZytlb.left,
|
|
itemZytlb,
|
|
result
|
|
);
|
|
break;
|
|
}
|
|
}
|
|
});
|
|
}
|
|
} else {
|
|
var container = document.getElementById("container");
|
|
var element = document.getElementById("element");
|
|
var yt_content = document.getElementById("yt_content");
|
|
|
|
if (container) {
|
|
element.removeChild(container);
|
|
}
|
|
element.style.cssText = "";
|
|
yt_content.style.cssText = "";
|
|
|
|
updateCanvas(result);
|
|
}
|
|
}
|
|
}
|
|
|
|
var screendata;
|
|
function updateCanvas(result) {
|
|
console.log("画布更新", result);
|
|
canvas.clear();
|
|
let resultJson = { objects: [], ScreenData: {}, ScreenContent: {} };
|
|
resultJson.objects = result.ScreenFromContent
|
|
? result.ScreenFromContent
|
|
: [];
|
|
resultJson.ScreenData = result.ScreenData;
|
|
resultJson.ScreenContent = result.ScreenContent;
|
|
canvas.setWidth(
|
|
resultJson.ScreenContent
|
|
? resultJson.ScreenContent.Sf_width
|
|
: window.innerWidth
|
|
);
|
|
canvas.setHeight(
|
|
resultJson.ScreenContent
|
|
? resultJson.ScreenContent.Sf_height
|
|
: window.innerHeight
|
|
);
|
|
canvas.set({
|
|
backgroundColor: resultJson.ScreenContent
|
|
? resultJson.ScreenContent.Sf_bgcolor
|
|
: "",
|
|
});
|
|
|
|
//加载JSON数据
|
|
resultJson.objects.map((item) => {
|
|
switch (item.component_type) {
|
|
case "1": //文本标签
|
|
getValues(item, resultJson.ScreenData);
|
|
handleSetText(item.top, item.left, item);
|
|
break;
|
|
case "2": //图片照片
|
|
getValues(item, resultJson.ScreenData);
|
|
handleAddImage(item.top, item.left, item);
|
|
break;
|
|
case "3": //视频控件
|
|
getValues(item, resultJson.ScreenData);
|
|
handleAddVideo(item.top, item.left, item);
|
|
break;
|
|
case "4": //议题内容
|
|
getValues(item, resultJson.ScreenData);
|
|
handleSetYtnr(item.top, item.left, item);
|
|
break;
|
|
case "5":
|
|
getValues(item, resultJson.ScreenData);
|
|
|
|
const aaaaa = result.ScreenData[item.bindingFieldID]
|
|
? result.ScreenData[item.bindingFieldID]
|
|
: [];
|
|
|
|
var bbbb = [];
|
|
aaaaa &&
|
|
aaaaa.map((i) => {
|
|
if (i.formid === item.id) {
|
|
bbbb.push(i);
|
|
}
|
|
});
|
|
|
|
let item2222 = Object.assign({}, item, { text: bbbb });
|
|
|
|
console.log("222222222222222222222", item2222);
|
|
|
|
handleSetGridList(item.top, item.left, item2222);
|
|
break;
|
|
case "6": //横向滚动文本
|
|
getValues(item, resultJson.ScreenData);
|
|
handleSetHxgdwb(item.top, item.left, item);
|
|
break;
|
|
case "7": //照片列表
|
|
getValues(item, resultJson.ScreenData);
|
|
handleSetPhoto(item.top, item.left, item);
|
|
break;
|
|
case "8": //代表团列表
|
|
getValues(item, resultJson.ScreenData);
|
|
handleSetDeputation(item.top, item.left, item);
|
|
break;
|
|
case "9": //子义题列表
|
|
getValues(item, resultJson.ScreenData);
|
|
handleSetZytlb(item.top, item.left, item, result);
|
|
break;
|
|
case "10": //时间控件
|
|
getValues(item, resultJson.ScreenData);
|
|
handleSetSjkj(item.top, item.left, item);
|
|
break;
|
|
case "11":
|
|
case "12":
|
|
case "13": //图形控件
|
|
handleSetImage(item.top, item.left, item.component_type, item);
|
|
break;
|
|
}
|
|
});
|
|
// canvas.renderAll();
|
|
canvas.requestRenderAll();
|
|
}
|
|
|
|
// function onOpen(evt) {
|
|
// doSend("ping");
|
|
// }
|
|
|
|
// function onClose(evt) {
|
|
// console.log(evt)
|
|
// }
|
|
|
|
// function onMessage(evt) {
|
|
// console.log(evt)
|
|
// websocket.close();
|
|
// }
|
|
|
|
// function onError(evt) {
|
|
// console.log(evt)
|
|
// }
|
|
|
|
// function doSend(message) {
|
|
// console.log(evt)
|
|
// websocket.send(message);
|
|
// }
|
|
|
|
window.addEventListener("load", init, false);
|
|
//添加线条控制end====================
|
|
window.addEventListener("beforeunload", function (event) {
|
|
event.preventDefault(); // 阻止默认的关闭提示框
|
|
// clearInterval(intervalId)
|
|
clearInterval(timer);
|
|
});
|
|
</script>
|
|
</html>
|