Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
C
CivWeb
Project
Project
Details
Activity
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
ReactWeb5
CivWeb
Commits
ecf04007
Commit
ecf04007
authored
2 years ago
by
崔佳豪
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
feat: 云平台添加水印
parent
638085c9
Pipeline
#51843
passed with stages
in 2 minutes 14 seconds
Changes
2
Pipelines
1
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
113 additions
and
0 deletions
+113
-0
BasicLayout.js
src/layouts/BasicLayout.js
+13
-0
mark.js
src/utils/mark.js
+100
-0
No files found.
src/layouts/BasicLayout.js
View file @
ecf04007
...
...
@@ -17,6 +17,7 @@ import { WEB_GIS_TYPE } from '../constants';
import
SecurityLayout
from
'./SecurityLayout'
;
import
Site
from
'./Site'
;
import
layoutStyles
from
'./BasicLayout.less'
;
import
{
waterMark
}
from
'../utils/mark'
;
const
ArcgisMap
=
React
.
lazy
(()
=>
import
(
'../pages/map/arcgis'
));
const
AMap
=
React
.
lazy
(()
=>
import
(
'../pages/map/amap'
));
const
CesiumMap
=
React
.
lazy
(()
=>
import
(
'../pages/map/cesiumMap'
));
...
...
@@ -239,6 +240,18 @@ const Layout = props => {
};
},
[]);
useEffect
(()
=>
{
const
needMark
=
()
=>
(
props
.
global
.
isHaveMark
||
window
.
location
.
origin
.
replace
(
/^
(
http|https
)
:
\/\/
/
,
''
)
===
'panda-water.cn'
)
&&
document
.
querySelectorAll
(
'.pandawatermark_mask_div'
).
length
<=
0
&&
props
.
global
.
userInfo
if
(
needMark
())
{
waterMark
({
watermark_txt
:
`
${
props
.
global
.
userInfo
.
fullName
}
(
${
props
.
global
.
userInfo
.
loginName
}
)`
});
}
},
[
props
.
global
,
props
.
global
.
userInfo
]);
const
handleUpdateCurrentIndex
=
index
=>
{
props
.
updateCurrentIndex
(
index
);
window
.
share
&&
window
.
share
.
event
.
emit
(
'trigger:updateMenuIndex'
,
index
);
...
...
This diff is collapsed.
Click to expand it.
src/utils/mark.js
0 → 100644
View file @
ecf04007
// 添加水印方法
export
const
waterMark
=
function
(
settings
=
{})
{
//默认设置
var
defaultSettings
=
{
watermark_txt
:
settings
.
watermark_txt
||
""
,
watermark_x
:
100
,
//水印起始位置x轴坐标
watermark_y
:
20
,
//水印起始位置Y轴坐标
watermark_rows
:
20
,
//水印行数
watermark_cols
:
20
,
//水印列数
watermark_x_space
:
200
,
//水印x轴间隔
watermark_y_space
:
150
,
//水印y轴间隔
watermark_color
:
'#aaa'
,
//水印字体颜色
// watermark_color: 'red', //水印字体颜色
watermark_alpha
:
0.2
,
//水印透明度
watermark_fontsize
:
'16px'
,
//水印字体大小
watermark_font
:
'微软雅黑'
,
//水印字体
watermark_width
:
200
,
//水印宽度
watermark_height
:
160
,
//水印长度
watermark_angle
:
330
//水印倾斜度数
};
//采用配置项替换默认值,作用类似jquery.extend
if
(
arguments
.
length
===
1
&&
typeof
arguments
[
0
]
===
"object"
)
{
var
src
=
arguments
[
0
]
||
{};
for
(
let
key
in
src
)
{
if
(
src
[
key
]
&&
defaultSettings
[
key
]
&&
src
[
key
]
===
defaultSettings
[
key
])
continue
;
else
if
(
src
[
key
])
defaultSettings
[
key
]
=
src
[
key
];
}
}
var
oTemp
=
document
.
createDocumentFragment
();
//获取页面最大宽度
var
page_width
=
Math
.
max
(
document
.
body
.
scrollWidth
,
document
.
body
.
clientWidth
);
var
cutWidth
=
page_width
*
0.0150
;
var
page_width
=
page_width
-
cutWidth
;
//获取页面最大高度
var
page_height
=
Math
.
max
(
document
.
body
.
scrollHeight
,
document
.
body
.
clientHeight
)
+
450
;
// var page_height = document.body.scrollHeight+document.body.scrollTop;
//如果将水印列数设置为0,或水印列数设置过大,超过页面最大宽度,则重新计算水印列数和水印x轴间隔
if
(
defaultSettings
.
watermark_cols
==
0
||
(
parseInt
(
defaultSettings
.
watermark_x
+
defaultSettings
.
watermark_width
*
defaultSettings
.
watermark_cols
+
defaultSettings
.
watermark_x_space
*
(
defaultSettings
.
watermark_cols
-
1
))
>
page_width
))
{
defaultSettings
.
watermark_cols
=
parseInt
((
page_width
-
defaultSettings
.
watermark_x
+
defaultSettings
.
watermark_x_space
)
/
(
defaultSettings
.
watermark_width
+
defaultSettings
.
watermark_x_space
));
defaultSettings
.
watermark_x_space
=
parseInt
((
page_width
-
defaultSettings
.
watermark_x
-
defaultSettings
.
watermark_width
*
defaultSettings
.
watermark_cols
)
/
(
defaultSettings
.
watermark_cols
-
1
));
}
//如果将水印行数设置为0,或水印行数设置过大,超过页面最大长度,则重新计算水印行数和水印y轴间隔
if
(
defaultSettings
.
watermark_rows
==
0
||
(
parseInt
(
defaultSettings
.
watermark_y
+
defaultSettings
.
watermark_height
*
defaultSettings
.
watermark_rows
+
defaultSettings
.
watermark_y_space
*
(
defaultSettings
.
watermark_rows
-
1
))
>
page_height
))
{
defaultSettings
.
watermark_rows
=
parseInt
((
defaultSettings
.
watermark_y_space
+
page_height
-
defaultSettings
.
watermark_y
)
/
(
defaultSettings
.
watermark_height
+
defaultSettings
.
watermark_y_space
));
defaultSettings
.
watermark_y_space
=
parseInt
(((
page_height
-
defaultSettings
.
watermark_y
)
-
defaultSettings
.
watermark_height
*
defaultSettings
.
watermark_rows
)
/
(
defaultSettings
.
watermark_rows
-
1
));
}
var
x
;
var
y
;
for
(
var
i
=
0
;
i
<
defaultSettings
.
watermark_rows
;
i
++
)
{
y
=
defaultSettings
.
watermark_y
+
(
defaultSettings
.
watermark_y_space
+
defaultSettings
.
watermark_height
)
*
i
;
for
(
var
j
=
0
;
j
<
defaultSettings
.
watermark_cols
;
j
++
)
{
x
=
defaultSettings
.
watermark_x
+
(
defaultSettings
.
watermark_width
+
defaultSettings
.
watermark_x_space
)
*
j
;
let
watermark_mask_div
=
document
.
createElement
(
'div'
);
watermark_mask_div
.
id
=
'pandawatermark_mask_div'
+
i
+
j
;
watermark_mask_div
.
className
=
'pandawatermark_mask_div'
;
watermark_mask_div
.
appendChild
(
document
.
createTextNode
(
defaultSettings
.
watermark_txt
));
//设置水印div倾斜显示
watermark_mask_div
.
style
.
webkitTransform
=
"rotate(-"
+
defaultSettings
.
watermark_angle
+
"deg)"
;
watermark_mask_div
.
style
.
MozTransform
=
"rotate(-"
+
defaultSettings
.
watermark_angle
+
"deg)"
;
watermark_mask_div
.
style
.
msTransform
=
"rotate(-"
+
defaultSettings
.
watermark_angle
+
"deg)"
;
watermark_mask_div
.
style
.
OTransform
=
"rotate(-"
+
defaultSettings
.
watermark_angle
+
"deg)"
;
watermark_mask_div
.
style
.
transform
=
"rotate(-"
+
defaultSettings
.
watermark_angle
+
"deg)"
;
watermark_mask_div
.
style
.
visibility
=
""
;
watermark_mask_div
.
style
.
position
=
"absolute"
;
watermark_mask_div
.
style
.
left
=
x
+
'px'
;
watermark_mask_div
.
style
.
top
=
y
+
'px'
;
watermark_mask_div
.
style
.
overflow
=
"hidden"
;
watermark_mask_div
.
style
.
zIndex
=
"10000"
;
watermark_mask_div
.
style
.
pointerEvents
=
'none'
;
//pointer-events:none 让水印不遮挡页面的点击事件
//watermark_mask_div.style.border="solid #eee 1px";
watermark_mask_div
.
style
.
opacity
=
defaultSettings
.
watermark_alpha
;
watermark_mask_div
.
style
.
fontSize
=
defaultSettings
.
watermark_fontsize
;
watermark_mask_div
.
style
.
fontFamily
=
defaultSettings
.
watermark_font
;
watermark_mask_div
.
style
.
color
=
defaultSettings
.
watermark_color
;
watermark_mask_div
.
style
.
textAlign
=
"center"
;
watermark_mask_div
.
style
.
width
=
defaultSettings
.
watermark_width
+
'px'
;
watermark_mask_div
.
style
.
height
=
defaultSettings
.
watermark_height
+
'px'
;
watermark_mask_div
.
style
.
display
=
"flex"
;
watermark_mask_div
.
style
.
alignItems
=
'center'
;
watermark_mask_div
.
style
.
justifyContent
=
'center'
;
oTemp
.
appendChild
(
watermark_mask_div
);
var
img
=
document
.
createElement
(
'img'
);
img
.
src
=
'/web4/assets/images/logo/单独图案-蓝绿色.svg'
;
img
.
style
.
marginRight
=
'10px'
img
.
style
.
width
=
'44px'
img
.
style
.
height
=
'24px'
img
.
style
.
marginRight
=
'10px'
img
.
style
.
opacity
=
'0.4'
watermark_mask_div
.
prepend
(
img
)
};
};
document
.
body
.
appendChild
(
oTemp
);
}
\ No newline at end of file
This diff is collapsed.
Click to expand it.
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