Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
W
web-project
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
海康威视
web-project
Commits
22ef1c5b
Commit
22ef1c5b
authored
Aug 14, 2024
by
朱超
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
明日报表js更新
parent
70032cd4
Changes
2
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
96 additions
and
0 deletions
+96
-0
report.js
src/api/report.js
+7
-0
toPDF.js
src/utils/toPDF.js
+89
-0
No files found.
src/api/report.js
View file @
22ef1c5b
...
@@ -21,6 +21,13 @@ export const postPrintHeatForecast = params => {
...
@@ -21,6 +21,13 @@ export const postPrintHeatForecast = params => {
})
})
}
}
//明日预测报表(保存打印记录)
export
const
postSaveHeatForecast
=
params
=>
{
return
http
.
post
(
`/api/analysis/report/SaveHeatForecast`
,
params
).
then
(
res
=>
res
).
catch
(
function
(
error
)
{
console
.
log
(
error
);
})
}
//换热站能耗报表
//换热站能耗报表
export
const
postTransferEnergy
=
params
=>
{
export
const
postTransferEnergy
=
params
=>
{
return
http
.
post
(
`/api/analysis/report/TransferEnergy`
,
params
).
then
(
res
=>
res
).
catch
(
function
(
error
)
{
return
http
.
post
(
`/api/analysis/report/TransferEnergy`
,
params
).
then
(
res
=>
res
).
catch
(
function
(
error
)
{
...
...
src/utils/toPDF.js
0 → 100644
View file @
22ef1c5b
import
html2Canvas
from
'html2canvas'
import
JsPDF
from
'jspdf'
var
noTableHeight
=
0
//table外的元素高度
export
const
htmlPdf
=
(
title
,
html
,
fileList
,
type
)
=>
{
// type传有效值pdf则为横版
if
(
fileList
)
{
const
pageHeight
=
Math
.
floor
(
277
*
html
.
scrollWidth
/
190
)
+
20
//计算pdf高度
for
(
let
i
=
0
;
i
<
fileList
.
length
;
i
++
)
{
//循环获取的元素
const
multiple
=
Math
.
ceil
((
fileList
[
i
].
offsetTop
+
fileList
[
i
].
offsetHeight
)
/
pageHeight
)
//元素的高度
if
(
isSplit
(
fileList
,
i
,
multiple
*
pageHeight
))
{
//计算是否超出一页
var
_H
=
''
//向pdf插入空白块的内容高度
if
(
fileList
[
i
].
localName
!==
'tr'
)
{
//判断是不是表格里的内容
_H
=
multiple
*
pageHeight
-
(
fileList
[
i
].
offsetTop
+
fileList
[
i
].
offsetHeight
)
}
else
{
_H
=
multiple
*
pageHeight
-
(
fileList
[
i
].
offsetTop
+
fileList
[
i
].
offsetHeight
+
noTableHeight
)
+
20
}
var
newNode
=
getFooterElement
(
_H
)
//向pdf插入空白块的内容
const
divParent
=
fileList
[
i
].
parentNode
// 获取该div的父节点
const
next
=
fileList
[
i
].
nextSibling
// 获取div的下一个兄弟节点
// 判断兄弟节点是否存在
if
(
next
)
{
// 存在则将新节点插入到div的下一个兄弟节点之前,即div之后
divParent
.
insertBefore
(
newNode
,
next
)
}
else
{
// 否则向节点添加最后一个子节点
divParent
.
appendChild
(
newNode
)
}
}
}
}
html2Canvas
(
html
,
{
allowTaint
:
false
,
taintTest
:
false
,
logging
:
false
,
useCORS
:
true
,
dpi
:
window
.
devicePixelRatio
*
1
,
scale
:
1
// 按比例增加分辨率
}).
then
(
canvas
=>
{
var
pdf
=
new
JsPDF
(
'p'
,
'mm'
,
'a4'
)
// A4纸,纵向
var
ctx
=
canvas
.
getContext
(
'2d'
)
var
a4w
=
type
?
277
:
190
;
var
a4h
=
type
?
190
:
277
// A4大小,210mm x 297mm,四边各保留10mm的边距,显示区域190x277
var
imgHeight
=
Math
.
floor
(
a4h
*
canvas
.
width
/
a4w
)
// 按A4显示比例换算一页图像的像素高度
var
renderedHeight
=
0
while
(
renderedHeight
<
canvas
.
height
)
{
var
page
=
document
.
createElement
(
'canvas'
)
page
.
width
=
canvas
.
width
page
.
height
=
Math
.
min
(
imgHeight
,
canvas
.
height
-
renderedHeight
)
// 可能内容不足一页
// 用getImageData剪裁指定区域,并画到前面创建的canvas对象中
page
.
getContext
(
'2d'
).
putImageData
(
ctx
.
getImageData
(
0
,
renderedHeight
,
canvas
.
width
,
Math
.
min
(
imgHeight
,
canvas
.
height
-
renderedHeight
)),
0
,
0
)
pdf
.
addImage
(
page
.
toDataURL
(
'image/jpeg'
,
1.0
),
'JPEG'
,
10
,
10
,
a4w
,
Math
.
min
(
a4h
,
a4w
*
page
.
height
/
page
.
width
))
// 添加图像到页面,保留10mm边距
renderedHeight
+=
imgHeight
if
(
renderedHeight
<
canvas
.
height
)
{
pdf
.
addPage
()
// 如果后面还有内容,添加一个空页
}
// delete page;
}
// 保存文件
pdf
.
save
(
title
+
'.pdf'
)
})
}
// pdf截断需要一个空白位置来补充
const
getFooterElement
=
(
remainingHeight
,
fillingHeight
=
0
)
=>
{
const
newNode
=
document
.
createElement
(
'div'
)
newNode
.
style
.
background
=
'#ffffff'
newNode
.
style
.
width
=
'calc(100% + 8px)'
newNode
.
style
.
marginLeft
=
'-4px'
newNode
.
style
.
marginBottom
=
'0px'
newNode
.
classList
.
add
(
'divRemove'
)
newNode
.
style
.
height
=
(
remainingHeight
+
fillingHeight
)
+
'px'
return
newNode
}
const
isSplit
=
(
nodes
,
index
,
pageHeight
)
=>
{
// 判断是不是tr 如果不是高度存起来
// 表格里的内容要特殊处理
// tr.offsetTop 是tr到table表格的高度
// 所以计算高速时候要把表格外的高度加起来
// 生成的pdf没有表格了这里可以不做处理 直接计算就行
if
(
nodes
[
index
].
localName
!==
'tr'
)
{
//判断元素是不是tr
noTableHeight
+=
nodes
[
index
].
clientHeight
}
if
(
nodes
[
index
].
localName
!==
'tr'
)
{
return
nodes
[
index
].
offsetTop
+
nodes
[
index
].
offsetHeight
<
pageHeight
&&
nodes
[
index
+
1
]
&&
nodes
[
index
+
1
].
offsetTop
+
nodes
[
index
+
1
].
offsetHeight
>
pageHeight
}
else
{
return
nodes
[
index
].
offsetTop
+
nodes
[
index
].
offsetHeight
+
noTableHeight
<
pageHeight
&&
nodes
[
index
+
1
]
&&
nodes
[
index
+
1
].
offsetTop
+
nodes
[
index
+
1
].
offsetHeight
+
noTableHeight
>
pageHeight
}
}
\ No newline at end of file
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment