111
parent
d1cd0c01f5
commit
4230826c33
|
|
@ -285,8 +285,6 @@
|
||||||
.news_container{
|
.news_container{
|
||||||
width: 1400px;
|
width: 1400px;
|
||||||
margin: 80px auto 0;
|
margin: 80px auto 0;
|
||||||
|
|
||||||
|
|
||||||
.title{
|
.title{
|
||||||
text-align: center;
|
text-align: center;
|
||||||
.tit{
|
.tit{
|
||||||
|
|
@ -807,6 +805,7 @@ font-size: 16px;
|
||||||
/*新闻中心*/
|
/*新闻中心*/
|
||||||
.new_container {
|
.new_container {
|
||||||
background: #f6f8fa;
|
background: #f6f8fa;
|
||||||
|
padding-bottom:20px;
|
||||||
|
|
||||||
.banner {
|
.banner {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
|
|
@ -931,7 +930,6 @@ font-size: 16px;
|
||||||
|
|
||||||
.new_container_detail {
|
.new_container_detail {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
|
|
||||||
.breadcrumb{
|
.breadcrumb{
|
||||||
width:1400px;
|
width:1400px;
|
||||||
margin:0 auto;
|
margin:0 auto;
|
||||||
|
|
@ -969,7 +967,6 @@ font-size: 16px;
|
||||||
.main{
|
.main{
|
||||||
padding: 20px 0;
|
padding: 20px 0;
|
||||||
color: #666666;
|
color: #666666;
|
||||||
|
|
||||||
p{
|
p{
|
||||||
text-indent: 2rem;
|
text-indent: 2rem;
|
||||||
line-height: 2;
|
line-height: 2;
|
||||||
|
|
@ -982,24 +979,29 @@ font-size: 16px;
|
||||||
}
|
}
|
||||||
.bottom{
|
.bottom{
|
||||||
width: 100%;
|
width: 100%;
|
||||||
|
margin-top:20px;
|
||||||
.item{
|
.item{
|
||||||
padding: 20px;
|
padding: 20px;
|
||||||
box-shadow: 0 0 5px rgba(0, 0, 0, 0.05);
|
box-shadow: 0 0 5px rgba(0, 0, 0, 0.05);
|
||||||
margin-bottom: 20px;
|
margin-bottom: 20px;
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
font-size: 14px;
|
font-size: 14px;
|
||||||
|
|
||||||
.previous{
|
.previous{
|
||||||
font-size: 14px;
|
font-size: 14px;
|
||||||
margin-bottom: 20px;
|
margin-bottom: 20px;
|
||||||
|
width:80px;
|
||||||
}
|
}
|
||||||
.title{
|
.title{
|
||||||
font-size: 14px;
|
font-size: 14px;
|
||||||
}
|
}
|
||||||
.info{
|
.info{
|
||||||
width: 100%;
|
width: 100%;
|
||||||
display: flex;
|
|
||||||
justify-content: space-between;
|
|
||||||
color: #666666;
|
color: #666666;
|
||||||
|
a{
|
||||||
|
color: #666666;
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
&:hover{
|
&:hover{
|
||||||
box-shadow: 0 0 5px rgba(0, 0, 0, 0.1);
|
box-shadow: 0 0 5px rgba(0, 0, 0, 0.1);
|
||||||
|
|
@ -1009,4 +1011,878 @@ font-size: 16px;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*政策法规*/
|
||||||
|
.wenku_container {
|
||||||
|
background: #f6f8fa;
|
||||||
|
.banner {
|
||||||
|
width: 100%;
|
||||||
|
height: 320px;
|
||||||
|
background: url("../img/falv_banner.png") no-repeat top center;
|
||||||
|
.banner_main {
|
||||||
|
width: 1400px;
|
||||||
|
margin: 0 auto;
|
||||||
|
padding-top: 135px;
|
||||||
|
h2 {
|
||||||
|
font-size: 60px;
|
||||||
|
color: #ffffff;
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
p {
|
||||||
|
margin: 0;
|
||||||
|
color: #ffffff;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.new_container {
|
||||||
|
width: 100%;
|
||||||
|
|
||||||
|
.top {
|
||||||
|
width: 100%;
|
||||||
|
height: 60px;
|
||||||
|
background: #ffffff;
|
||||||
|
|
||||||
|
.wrap {
|
||||||
|
width: 1400px;
|
||||||
|
margin: 0 auto;
|
||||||
|
display: flex;
|
||||||
|
|
||||||
|
|
||||||
|
.list {
|
||||||
|
font-size: 16px;
|
||||||
|
line-height: 60px;
|
||||||
|
cursor: pointer;
|
||||||
|
position: relative;
|
||||||
|
margin-right: 40px;
|
||||||
|
a{
|
||||||
|
color:#222222;
|
||||||
|
text-decoration: none;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
&.active {
|
||||||
|
color: #006aff;
|
||||||
|
&:before {
|
||||||
|
opacity: 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&:before {
|
||||||
|
content: "";
|
||||||
|
position: absolute;
|
||||||
|
left: 0;
|
||||||
|
bottom: 0;
|
||||||
|
border-bottom: 3px solid #006aff;
|
||||||
|
width: 100%;
|
||||||
|
opacity: 0;
|
||||||
|
}
|
||||||
|
&:hover {
|
||||||
|
color: #006aff;
|
||||||
|
&:before {
|
||||||
|
opacity: 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.new_main{
|
||||||
|
width: 1400px;
|
||||||
|
margin: 20px auto 0;
|
||||||
|
padding-bottom:20px;
|
||||||
|
a{
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
.wrap{
|
||||||
|
width: 100%;
|
||||||
|
background: #ffffff;
|
||||||
|
padding: 20px;
|
||||||
|
border-radius: 4px;
|
||||||
|
margin-bottom: 20px;
|
||||||
|
.item{
|
||||||
|
display: flex;
|
||||||
|
|
||||||
|
.info{
|
||||||
|
|
||||||
|
flex:1;
|
||||||
|
.title{
|
||||||
|
font-size: 18px;
|
||||||
|
color: #222222;
|
||||||
|
a{
|
||||||
|
color:#222222;}
|
||||||
|
}
|
||||||
|
.text{
|
||||||
|
margin-top: 10px;
|
||||||
|
a{
|
||||||
|
color: #696969;
|
||||||
|
font-size: 14px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.time{
|
||||||
|
color: #999999;
|
||||||
|
margin-top: 10px;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
span{
|
||||||
|
padding-left: 5px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.float-left{
|
||||||
|
a{
|
||||||
|
color:#666;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
&:hover{
|
||||||
|
box-shadow: 0 8px 30px rgba(45, 104, 255, 0.15)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.new_container_detail {
|
||||||
|
width: 100%;
|
||||||
|
.breadcrumb{
|
||||||
|
width:1400px;
|
||||||
|
margin:0 auto;
|
||||||
|
background:none;
|
||||||
|
padding:0;
|
||||||
|
margin-top:10px;
|
||||||
|
|
||||||
|
.list-inline{
|
||||||
|
margin:0 ! important;
|
||||||
|
padding:0! important;
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
.new_main{
|
||||||
|
width: 1400px;
|
||||||
|
margin: 10px auto 20px;
|
||||||
|
background: #ffffff;
|
||||||
|
min-height: 600px;
|
||||||
|
border-radius: 4px;
|
||||||
|
box-shadow: 0 0 5px rgba(0, 0, 0, 0.05);
|
||||||
|
padding: 20px 50px;
|
||||||
|
border-top: 3px solid #1d78ff;
|
||||||
|
|
||||||
|
.title{
|
||||||
|
width: 100%;
|
||||||
|
border-bottom: 1px solid #eeeeee;
|
||||||
|
padding-bottom: 20px;
|
||||||
|
|
||||||
|
.time{
|
||||||
|
color: #999999;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.main{
|
||||||
|
padding: 20px 0;
|
||||||
|
color: #666666;
|
||||||
|
p{
|
||||||
|
text-indent: 2rem;
|
||||||
|
line-height: 2;
|
||||||
|
font-size: 14px;
|
||||||
|
}
|
||||||
|
img{
|
||||||
|
margin: 0 auto;
|
||||||
|
max-width: 100%;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.bottom{
|
||||||
|
width: 100%;
|
||||||
|
margin-top:20px;
|
||||||
|
.item{
|
||||||
|
padding: 20px;
|
||||||
|
box-shadow: 0 0 5px rgba(0, 0, 0, 0.05);
|
||||||
|
margin-bottom: 20px;
|
||||||
|
cursor: pointer;
|
||||||
|
font-size: 14px;
|
||||||
|
|
||||||
|
.previous{
|
||||||
|
font-size: 14px;
|
||||||
|
margin-bottom: 20px;
|
||||||
|
width:80px;
|
||||||
|
}
|
||||||
|
.title{
|
||||||
|
font-size: 14px;
|
||||||
|
}
|
||||||
|
.info{
|
||||||
|
width: 100%;
|
||||||
|
color: #666666;
|
||||||
|
a{
|
||||||
|
color: #666666;
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
&:hover{
|
||||||
|
box-shadow: 0 0 5px rgba(0, 0, 0, 0.1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/*产品*/
|
||||||
|
|
||||||
|
.case_container{
|
||||||
|
background: #f6f8fa;
|
||||||
|
.banner {
|
||||||
|
width: 100%;
|
||||||
|
height: 320px;
|
||||||
|
background: url("../img/case_banner.png") no-repeat top center;
|
||||||
|
.banner_main {
|
||||||
|
width: 1400px;
|
||||||
|
margin: 0 auto;
|
||||||
|
padding-top: 135px;
|
||||||
|
h2 {
|
||||||
|
font-size: 60px;
|
||||||
|
color: #ffffff;
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
p {
|
||||||
|
margin: 0;
|
||||||
|
color: #ffffff;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.case_main{
|
||||||
|
width: 100%;
|
||||||
|
padding-bottom: 50px;
|
||||||
|
.top{
|
||||||
|
background: #ffffff;
|
||||||
|
height: 60px;
|
||||||
|
padding-top: 20px;
|
||||||
|
|
||||||
|
.top_wrap{
|
||||||
|
width: 1400px;
|
||||||
|
margin: 0 auto;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
.title{
|
||||||
|
margin-right: 20px;
|
||||||
|
.line{
|
||||||
|
color: #999999;
|
||||||
|
margin-left: 20px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.num{
|
||||||
|
display: flex;
|
||||||
|
.item{
|
||||||
|
color: #666666;
|
||||||
|
margin-right: 20px;
|
||||||
|
a{
|
||||||
|
color:#222222;
|
||||||
|
text-decoration: none;
|
||||||
|
padding: 6px 30px;
|
||||||
|
border-radius: 50px;
|
||||||
|
cursor: pointer;
|
||||||
|
|
||||||
|
&.active{
|
||||||
|
background: #2e57e9;
|
||||||
|
color: #ffffff;
|
||||||
|
}
|
||||||
|
&:hover{
|
||||||
|
background: #2e57e9;
|
||||||
|
color: #ffffff;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
.case_main_wrap{
|
||||||
|
width: 1400px;
|
||||||
|
margin: 30px auto;
|
||||||
|
position: relative;
|
||||||
|
display: flex;
|
||||||
|
flex-wrap: wrap;
|
||||||
|
a{
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.item{
|
||||||
|
width: 440px;
|
||||||
|
background: #ffffff;
|
||||||
|
border-radius: 16px;
|
||||||
|
margin: 10px;
|
||||||
|
box-shadow: 0 0 20px rgba(0, 0, 0, 0.05);
|
||||||
|
transition: all 0.4s ease;
|
||||||
|
cursor: pointer;
|
||||||
|
&:hover{
|
||||||
|
transform: translateY(-8px);
|
||||||
|
box-shadow: 0 12px 30px rgba(0, 0, 0, 0.15);
|
||||||
|
}
|
||||||
|
.img{
|
||||||
|
width: 100%;
|
||||||
|
height: 250px;
|
||||||
|
|
||||||
|
img{
|
||||||
|
width: 100%;
|
||||||
|
height: 250px;
|
||||||
|
border-radius: 20px 20px 0 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.info{
|
||||||
|
background: #ffffff;
|
||||||
|
padding: 20px;
|
||||||
|
border-radius: 20px;
|
||||||
|
margin-top: -40px;
|
||||||
|
position:relative;
|
||||||
|
z-index:9999;
|
||||||
|
|
||||||
|
.title{
|
||||||
|
font-size: 18px;
|
||||||
|
text-align: left;
|
||||||
|
margin-bottom: 20px;
|
||||||
|
color: #222222;
|
||||||
|
|
||||||
|
}
|
||||||
|
.text{
|
||||||
|
font-size: 14px;
|
||||||
|
color: #575d63;
|
||||||
|
}
|
||||||
|
.details{
|
||||||
|
color: #1d78ff;
|
||||||
|
text-align: right;
|
||||||
|
font-size: 14px;
|
||||||
|
margin-top: 20px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.page{
|
||||||
|
width:1400px;
|
||||||
|
margin:0 auto;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
.case_container_detail{
|
||||||
|
background: #f6f8fa;
|
||||||
|
.banner {
|
||||||
|
width: 100%;
|
||||||
|
height: 320px;
|
||||||
|
background: url("../img/case_banner.png") no-repeat top center;
|
||||||
|
.banner_main {
|
||||||
|
width: 1400px;
|
||||||
|
margin: 0 auto;
|
||||||
|
padding-top: 135px;
|
||||||
|
h2 {
|
||||||
|
font-size: 60px;
|
||||||
|
color: #ffffff;
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
p {
|
||||||
|
margin: 0;
|
||||||
|
color: #ffffff;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.breadcrumb{
|
||||||
|
width:1400px;
|
||||||
|
margin:0 auto;
|
||||||
|
background:none;
|
||||||
|
padding:0;
|
||||||
|
}
|
||||||
|
.case_main{
|
||||||
|
width: 100%;
|
||||||
|
padding-bottom: 50px;
|
||||||
|
.top{
|
||||||
|
background: #ffffff;
|
||||||
|
height: 60px;
|
||||||
|
padding-top: 20px;
|
||||||
|
|
||||||
|
.top_wrap{
|
||||||
|
width: 1400px;
|
||||||
|
margin: 0 auto;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
.title{
|
||||||
|
margin-right: 20px;
|
||||||
|
.line{
|
||||||
|
color: #999999;
|
||||||
|
margin-left: 20px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.num{
|
||||||
|
display: flex;
|
||||||
|
.item{
|
||||||
|
color: #666666;
|
||||||
|
padding: 6px 30px;
|
||||||
|
border-radius: 50px;
|
||||||
|
cursor: pointer;
|
||||||
|
margin-right: 20px;
|
||||||
|
&.active{
|
||||||
|
background: #2e57e9;
|
||||||
|
color: #ffffff;
|
||||||
|
}
|
||||||
|
&:hover{
|
||||||
|
background: #2e57e9;
|
||||||
|
color: #ffffff;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.new_main{
|
||||||
|
width: 1400px;
|
||||||
|
margin: 0px auto 20px;
|
||||||
|
background: #ffffff;
|
||||||
|
min-height: 600px;
|
||||||
|
border-radius: 4px;
|
||||||
|
box-shadow: 0 0 5px rgba(0, 0, 0, 0.05);
|
||||||
|
padding: 20px 50px;
|
||||||
|
border-top: 3px solid #1d78ff;
|
||||||
|
|
||||||
|
.title{
|
||||||
|
width: 100%;
|
||||||
|
border-bottom: 1px solid #eeeeee;
|
||||||
|
padding-bottom: 20px;
|
||||||
|
text-align: center;
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
.main{
|
||||||
|
padding: 20px 0;
|
||||||
|
color: #666666;
|
||||||
|
|
||||||
|
p{
|
||||||
|
text-indent: 2rem;
|
||||||
|
line-height: 2;
|
||||||
|
font-size: 16px;
|
||||||
|
}
|
||||||
|
img{
|
||||||
|
margin: 0 auto;
|
||||||
|
max-width: 100%;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*网上公开*/
|
||||||
|
.public_container {
|
||||||
|
background: #f6f8fa;
|
||||||
|
|
||||||
|
.banner {
|
||||||
|
width: 100%;
|
||||||
|
height: 320px;
|
||||||
|
background: url("../img/ziyuan_banner.png") no-repeat top center;
|
||||||
|
.banner_main {
|
||||||
|
width: 1400px;
|
||||||
|
margin: 0 auto;
|
||||||
|
padding-top: 135px;
|
||||||
|
h2 {
|
||||||
|
font-size: 60px;
|
||||||
|
color: #ffffff;
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
p {
|
||||||
|
margin: 0;
|
||||||
|
color: #ffffff;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.new_container {
|
||||||
|
width: 1400px;
|
||||||
|
margin: 20px auto 0;
|
||||||
|
display: flex;
|
||||||
|
.left{
|
||||||
|
width: 250px;
|
||||||
|
box-sizing: border-box;
|
||||||
|
background: #ffffff;
|
||||||
|
border-radius: 4px;
|
||||||
|
.top{
|
||||||
|
width: 100%;
|
||||||
|
background: #3f79ff;
|
||||||
|
text-align: center;
|
||||||
|
color: #ffffff;
|
||||||
|
line-height: 40px;
|
||||||
|
border-radius: 4px 4px 0 0;
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
.main{
|
||||||
|
padding: 10px;
|
||||||
|
.list{
|
||||||
|
margin-bottom: 5px;
|
||||||
|
border-radius: 4px;
|
||||||
|
border-left: 4px solid #ffffff;
|
||||||
|
a{
|
||||||
|
cursor: pointer;
|
||||||
|
color: #222222;
|
||||||
|
display:block;
|
||||||
|
text-decoration: none;
|
||||||
|
border-radius:4px;
|
||||||
|
padding:10px;
|
||||||
|
font-size: 14px;
|
||||||
|
}
|
||||||
|
&:hover{
|
||||||
|
background: #e4ecff;
|
||||||
|
color: #3f79ff;
|
||||||
|
border-left: 4px solid #3f79ff;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
.active{
|
||||||
|
background: #e4ecff;
|
||||||
|
border-left: 4px solid #3f79ff;
|
||||||
|
color: #3f79ff;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
&:last-child{
|
||||||
|
border-bottom: none;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.right_main{
|
||||||
|
flex: 1;
|
||||||
|
margin-left: 20px;
|
||||||
|
background: #ffffff;
|
||||||
|
padding: 10px;
|
||||||
|
font-size: 14px;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
a{
|
||||||
|
color: #222222;
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
.wrap{
|
||||||
|
width: 100%;
|
||||||
|
border-bottom: 1px dashed #eeeeee;
|
||||||
|
padding: 20px 10px;
|
||||||
|
box-sizing: border-box;
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
cursor: pointer;
|
||||||
|
.time{
|
||||||
|
color: #999999;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
.wrap_list{
|
||||||
|
margin-bottom:20px;}
|
||||||
|
}
|
||||||
|
.right_main1{
|
||||||
|
flex: 1;
|
||||||
|
margin-left: 20px;
|
||||||
|
background: #ffffff;
|
||||||
|
padding: 10px;
|
||||||
|
border-top: 4px solid #1d78ff;
|
||||||
|
border-radius: 4px 4px 0 0;
|
||||||
|
|
||||||
|
.top{
|
||||||
|
text-align: center;
|
||||||
|
border-bottom: 1px solid #eeeeee;
|
||||||
|
padding-bottom: 10px;
|
||||||
|
|
||||||
|
.title{
|
||||||
|
font-weight: bold;
|
||||||
|
font-size: 1.5em;
|
||||||
|
}
|
||||||
|
.time{
|
||||||
|
color: #999999;
|
||||||
|
font-size: 14px;
|
||||||
|
margin-top: 10px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.new_main{
|
||||||
|
|
||||||
|
.title{
|
||||||
|
width: 100%;
|
||||||
|
border-bottom: 1px solid #eeeeee;
|
||||||
|
padding-bottom: 20px;
|
||||||
|
font-size: 1.5em;
|
||||||
|
text-align: center;
|
||||||
|
|
||||||
|
.time{
|
||||||
|
color: #999999;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.main{
|
||||||
|
padding: 20px 0;
|
||||||
|
color: #666666;
|
||||||
|
p{
|
||||||
|
text-indent: 2rem;
|
||||||
|
line-height: 2;
|
||||||
|
font-size: 14px;
|
||||||
|
}
|
||||||
|
img{
|
||||||
|
margin: 0 auto;
|
||||||
|
max-width: 100%;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.bottom{
|
||||||
|
width: 100%;
|
||||||
|
margin-top:20px;
|
||||||
|
.item{
|
||||||
|
padding: 20px;
|
||||||
|
box-shadow: 0 0 5px rgba(0, 0, 0, 0.05);
|
||||||
|
margin-bottom: 20px;
|
||||||
|
cursor: pointer;
|
||||||
|
font-size: 14px;
|
||||||
|
|
||||||
|
.previous{
|
||||||
|
font-size: 14px;
|
||||||
|
margin-bottom: 20px;
|
||||||
|
width:80px;
|
||||||
|
}
|
||||||
|
.title{
|
||||||
|
font-size: 14px;
|
||||||
|
}
|
||||||
|
.info{
|
||||||
|
width: 100%;
|
||||||
|
color: #666666;
|
||||||
|
a{
|
||||||
|
color: #666666;
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
&:hover{
|
||||||
|
box-shadow: 0 0 5px rgba(0, 0, 0, 0.1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
.about_container{
|
||||||
|
background: #f6f8fa;
|
||||||
|
.banner{
|
||||||
|
width: 100%;
|
||||||
|
height: 320px;
|
||||||
|
background: url("../img/about_banner.png") no-repeat top center;
|
||||||
|
.banner_main{
|
||||||
|
width: 1400px;
|
||||||
|
margin: 0 auto;
|
||||||
|
padding-top: 135px;
|
||||||
|
h2{
|
||||||
|
font-size: 60px;
|
||||||
|
color: #014ea0;
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
p{
|
||||||
|
margin: 0;
|
||||||
|
color: #323232;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
.new_container {
|
||||||
|
width: 1400px;
|
||||||
|
margin: 20px auto 0;
|
||||||
|
display: flex;
|
||||||
|
.left{
|
||||||
|
width: 250px;
|
||||||
|
box-sizing: border-box;
|
||||||
|
background: #ffffff;
|
||||||
|
border-radius: 4px;
|
||||||
|
.top{
|
||||||
|
width: 100%;
|
||||||
|
background: #3f79ff;
|
||||||
|
text-align: center;
|
||||||
|
color: #ffffff;
|
||||||
|
line-height: 40px;
|
||||||
|
border-radius: 4px 4px 0 0;
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
.main{
|
||||||
|
padding: 10px;
|
||||||
|
.list{
|
||||||
|
margin-bottom: 5px;
|
||||||
|
border-radius: 4px;
|
||||||
|
border-left: 4px solid #ffffff;
|
||||||
|
a{
|
||||||
|
cursor: pointer;
|
||||||
|
color: #222222;
|
||||||
|
display:block;
|
||||||
|
text-decoration: none;
|
||||||
|
border-radius:4px;
|
||||||
|
padding:10px;
|
||||||
|
font-size: 14px;
|
||||||
|
}
|
||||||
|
&:hover{
|
||||||
|
background: #e4ecff;
|
||||||
|
color: #3f79ff;
|
||||||
|
border-left: 4px solid #3f79ff;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
.active{
|
||||||
|
background: #e4ecff;
|
||||||
|
border-left: 4px solid #3f79ff;
|
||||||
|
color: #3f79ff;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
&:last-child{
|
||||||
|
border-bottom: none;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.right_main{
|
||||||
|
flex: 1;
|
||||||
|
margin-left: 20px;
|
||||||
|
background: #ffffff;
|
||||||
|
padding: 10px;
|
||||||
|
font-size: 14px;
|
||||||
|
border-top: 4px solid #1d78ff;
|
||||||
|
border-radius: 4px 4px 0 0;
|
||||||
|
|
||||||
|
a{
|
||||||
|
color: #222222;
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
.wrap{
|
||||||
|
width: 100%;
|
||||||
|
border-bottom: 1px dashed #eeeeee;
|
||||||
|
padding: 20px 10px;
|
||||||
|
box-sizing: border-box;
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
cursor: pointer;
|
||||||
|
.time{
|
||||||
|
color: #999999;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
.wrap_list{
|
||||||
|
margin-bottom:20px;}
|
||||||
|
}
|
||||||
|
.right_main1{
|
||||||
|
flex: 1;
|
||||||
|
margin-left: 20px;
|
||||||
|
background: #ffffff;
|
||||||
|
padding: 10px;
|
||||||
|
border-top: 4px solid #1d78ff;
|
||||||
|
border-radius: 4px 4px 0 0;
|
||||||
|
|
||||||
|
.top{
|
||||||
|
text-align: center;
|
||||||
|
border-bottom: 1px solid #eeeeee;
|
||||||
|
padding-bottom: 10px;
|
||||||
|
|
||||||
|
.title{
|
||||||
|
font-weight: bold;
|
||||||
|
font-size: 1.5em;
|
||||||
|
}
|
||||||
|
.time{
|
||||||
|
color: #999999;
|
||||||
|
font-size: 14px;
|
||||||
|
margin-top: 10px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.new_main{
|
||||||
|
|
||||||
|
.title{
|
||||||
|
width: 100%;
|
||||||
|
border-bottom: 1px solid #eeeeee;
|
||||||
|
padding-bottom: 20px;
|
||||||
|
font-size: 1.5em;
|
||||||
|
text-align: center;
|
||||||
|
|
||||||
|
.time{
|
||||||
|
color: #999999;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.main{
|
||||||
|
padding: 20px 0;
|
||||||
|
color: #666666;
|
||||||
|
p{
|
||||||
|
text-indent: 2rem;
|
||||||
|
line-height: 2;
|
||||||
|
font-size: 14px;
|
||||||
|
}
|
||||||
|
img{
|
||||||
|
margin: 0 auto;
|
||||||
|
max-width: 100%;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.bottom{
|
||||||
|
width: 100%;
|
||||||
|
margin-top:20px;
|
||||||
|
.item{
|
||||||
|
padding: 20px;
|
||||||
|
box-shadow: 0 0 5px rgba(0, 0, 0, 0.05);
|
||||||
|
margin-bottom: 20px;
|
||||||
|
cursor: pointer;
|
||||||
|
font-size: 14px;
|
||||||
|
|
||||||
|
.previous{
|
||||||
|
font-size: 14px;
|
||||||
|
margin-bottom: 20px;
|
||||||
|
width:80px;
|
||||||
|
}
|
||||||
|
.title{
|
||||||
|
font-size: 14px;
|
||||||
|
}
|
||||||
|
.info{
|
||||||
|
width: 100%;
|
||||||
|
color: #666666;
|
||||||
|
a{
|
||||||
|
color: #666666;
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
&:hover{
|
||||||
|
box-shadow: 0 0 5px rgba(0, 0, 0, 0.1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
.message_container{
|
||||||
|
width:1400px;
|
||||||
|
margin:0 auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -15,92 +15,57 @@
|
||||||
<link rel="stylesheet" href="${files}/vendor/photoswipe/dist/default-skin/default-skin.css">
|
<link rel="stylesheet" href="${files}/vendor/photoswipe/dist/default-skin/default-skin.css">
|
||||||
<script src="${files}/vendor/photoswipe/dist/photoswipe.min.js"></script>
|
<script src="${files}/vendor/photoswipe/dist/photoswipe.min.js"></script>
|
||||||
<script src="${files}/vendor/photoswipe/dist/photoswipe-ui-default.min.js"></script>
|
<script src="${files}/vendor/photoswipe/dist/photoswipe-ui-default.min.js"></script>
|
||||||
<style>
|
|
||||||
.article-content img{
|
|
||||||
max-width: 100%;
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
[#include 'inc_header.html'/]
|
[#include 'inc_header.html'/]
|
||||||
[#include 'inc_message_box.html'/]
|
[#include 'inc_message_box.html'/]
|
||||||
<div class="bg-gray-200">
|
<div class="new_container">
|
||||||
<div class="container">
|
<div class="banner">
|
||||||
<nav class="row" aria-label="breadcrumb">
|
<div class="banner_main">
|
||||||
<ol class="col list-inline my-2">
|
<h2>新闻中心</h2>
|
||||||
|
<p>安全第一 预防为主 综合治理</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="new_container_detail">
|
||||||
|
<nav class="breadcrumb">
|
||||||
|
<ol class="list-inline">
|
||||||
<li class="list-inline-item"><a href="${site.url}">首页</a></li>
|
<li class="list-inline-item"><a href="${site.url}">首页</a></li>
|
||||||
[#list channel.paths as c]
|
[#list channel.paths as c]
|
||||||
<li class="list-inline-item">/</li>
|
<li class="list-inline-item">/</li>
|
||||||
<li class="list-inline-item">[@A bean=c/]</li>
|
<li class="list-inline-item">[@A bean=c/]</li>
|
||||||
[/#list]
|
[/#list]
|
||||||
</ol>
|
</ol>
|
||||||
</nav>
|
</nav>
|
||||||
</div>
|
<div class="new_main">
|
||||||
</div>
|
<div class="title">
|
||||||
<div class="container mt-4">
|
<h4>${article.title}</h4>
|
||||||
<div class="row">
|
<div class="time">
|
||||||
<div class="col-lg-8">
|
${format(article.publishDate, 'yyyy-MM-dd HH:mm')}
|
||||||
<h3 class="cm-ff-yh">${article.title}</h3>
|
[#if article.source??]<span class="ml-2">${article.source}</span>[/#if]
|
||||||
[#if article.tags?size gt 0]
|
[#if article.author??]<span class="ml-2">${article.author}</span>[/#if]
|
||||||
<div class="mt-2">
|
<i class="ml-2 far fa-eye"></i> <span id="views"></span>
|
||||||
[#list article.tags as tag]
|
<script>
|
||||||
<a href="${dy}/tag/${tag.id?c}" class="ml-1"><span class="badge badge-secondary">${tag.name}</span></a>
|
axios.get('${api}/article/view/${article.id?c}').then(function (response) {
|
||||||
|
$('#views').text(response.data);
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
[#if article.imageList?size > 0]
|
||||||
|
<div class="pt-2">
|
||||||
|
[#list article.imageList as image]
|
||||||
|
<figure class="figure mt-3">
|
||||||
|
<img src="${image.url}" class="figure-img img-fluid gallery-img" alt="${image.description}">
|
||||||
|
<figcaption><span class="mr-2"><strong>${image_index+1}</strong>/${article.imageList?size}</span>${image.description}</figcaption>
|
||||||
|
</figure>
|
||||||
[/#list]
|
[/#list]
|
||||||
</div>
|
</div>
|
||||||
[/#if]
|
[/#if]
|
||||||
<div class="mt-2 pb-2 border-bottom small text-muted">
|
<div class="main">
|
||||||
<span>${format(article.publishDate, 'yyyy-MM-dd HH:mm')}</span>
|
[#noescape]${article.text!}[/#noescape]
|
||||||
[#if article.source??]<span class="ml-2">${article.source}</span>[/#if]
|
|
||||||
[#if article.author??]<span class="ml-2">${article.author}</span>[/#if]
|
|
||||||
<i class="ml-2 far fa-eye"></i> <span id="views"></span>
|
|
||||||
<script>
|
|
||||||
axios.get('${api}/article/view/${article.id?c}').then(function (response) {
|
|
||||||
$('#views').text(response.data);
|
|
||||||
});
|
|
||||||
</script>
|
|
||||||
</div>
|
</div>
|
||||||
[#if article.video??]
|
|
||||||
<div class="mt-4">
|
|
||||||
<video style="max-width:100%;" controls>
|
|
||||||
<source src="${article.video}" type="video/mp4">
|
|
||||||
您的浏览器不支持视频(Video)标签。
|
|
||||||
</video>
|
|
||||||
</div>
|
|
||||||
[/#if]
|
|
||||||
[#if article.audio??]
|
|
||||||
<div class="mt-4">
|
|
||||||
<audio style="width:100%;" controls>
|
|
||||||
<source src="${article.audio}">
|
|
||||||
您的浏览器不支持音频(Audio)标签
|
|
||||||
</audio>
|
|
||||||
</div>
|
|
||||||
[/#if]
|
|
||||||
[#if article.imageList?size > 0]
|
|
||||||
<div class="pt-2">
|
|
||||||
[#list article.imageList as image]
|
|
||||||
<figure class="figure mt-3">
|
|
||||||
<img src="${image.url}" class="figure-img img-fluid gallery-img" alt="${image.description}">
|
|
||||||
<figcaption><span class="mr-2"><strong>${image_index+1}</strong>/${article.imageList?size}</span>${image.description}</figcaption>
|
|
||||||
</figure>
|
|
||||||
[/#list]
|
|
||||||
</div>
|
|
||||||
[/#if]
|
|
||||||
<div class="mt-4 article-content">[#noescape]${article.text!}[/#noescape]</div>
|
|
||||||
[#if article.fileList?size > 0]
|
|
||||||
<div class="mt-4 bg-light">附件下载</div>
|
|
||||||
<ul class="mt-2 list-unstyled small">
|
|
||||||
[#list article.fileList as file]
|
|
||||||
<li><i class="fas fa-download text-primary"></i> <a class="article-download">${file.name}</a></li>
|
|
||||||
[/#list]
|
|
||||||
</ul>
|
|
||||||
<script>
|
|
||||||
axios.get('${api}/article/download-params/${article.id?c}').then(function (response) {
|
|
||||||
$('.article-download').each(function (index, element) {
|
|
||||||
$(element).attr('href', '${dy}/download-file/${article.id?c}/' + index + '?' + response.data)
|
|
||||||
});
|
|
||||||
})
|
|
||||||
</script>
|
|
||||||
[/#if]
|
|
||||||
<div class="lead d-flex justify-content-center text-info">
|
<div class="lead d-flex justify-content-center text-info">
|
||||||
<div class="cm-pointer" onclick="voteUp()"><i class="far fa-thumbs-up"></i> <span id="ups"></span></div>
|
<div class="cm-pointer" onclick="voteUp()"><i class="far fa-thumbs-up"></i> <span id="ups"></span></div>
|
||||||
<div class="cm-pointer ml-4" onclick="voteDown()"><i class="far fa-thumbs-down"></i> <span id="downs"></span></div>
|
<div class="cm-pointer ml-4" onclick="voteDown()"><i class="far fa-thumbs-down"></i> <span id="downs"></span></div>
|
||||||
|
|
@ -136,74 +101,27 @@
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<ul class="mt-4 list-unstyled">
|
<div class="bottom">
|
||||||
[@ArticleNext id=article.id order=article.order channelId=article.channelId isDesc=article.channel.orderDesc; bean]
|
[@ArticleNext id=article.id order=article.order channelId=article.channelId isDesc=article.channel.orderDesc; bean]
|
||||||
<li class="text-truncate mt-2">
|
<div class="item">
|
||||||
<strong>上一条:</strong>[#if bean??][@A bean=bean class="cm-link"/][#else]没有了[/#if]
|
<div class="previous">上一条:</div>
|
||||||
</li>
|
<div class="info"> [#if bean??][@A bean=bean class="cm-link"/][#else]没有了[/#if]</div>
|
||||||
|
</div>
|
||||||
[/@ArticleNext]
|
[/@ArticleNext]
|
||||||
[@ArticlePrev id=article.id order=article.order channelId=article.channelId isDesc=article.channel.orderDesc; bean]
|
[@ArticlePrev id=article.id order=article.order channelId=article.channelId isDesc=article.channel.orderDesc; bean]
|
||||||
<li class="text-truncate mt-2">
|
<div class="item">
|
||||||
<strong>下一条:</strong>[#if bean??][@A bean=bean class="cm-link"/][#else]没有了[/#if]
|
<div class="previous">下一条:</div>
|
||||||
</li>
|
<div class="info">[#if bean??][@A bean=bean class="cm-link"/][#else]没有了[/#if]</div>
|
||||||
[/@ArticlePrev]
|
|
||||||
</ul>
|
|
||||||
|
|
||||||
<h5 class="mt-4 border-bottom"><span class="cm-block-head-bottom">相关新闻</span></h5>
|
|
||||||
[@EsArticleList q=article.title excludeId=article.id limit=5; list]
|
|
||||||
<ul class="list-unstyled mt-3">
|
|
||||||
[#list list as bean]
|
|
||||||
<li class="text-truncate mt-2">[@A bean=bean class="cm-link"/]</li>
|
|
||||||
[/#list]
|
|
||||||
</ul>
|
|
||||||
[/@EsArticleList]
|
|
||||||
</div>
|
|
||||||
[#include 'inc_right.html'/]
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<!-- Root element of PhotoSwipe. Must have class pswp. -->
|
|
||||||
<div class="pswp" tabindex="-1" role="dialog" aria-hidden="true">
|
|
||||||
<!-- Background of PhotoSwipe. It's a separate element as animating opacity is faster than rgba(). -->
|
|
||||||
<div class="pswp__bg"></div>
|
|
||||||
<!-- Slides wrapper with overflow:hidden. -->
|
|
||||||
<div class="pswp__scroll-wrap">
|
|
||||||
<!-- Container that holds slides. PhotoSwipe keeps only 3 of them in the DOM to save memory. Don't modify these 3 pswp__item elements, data is added later on. -->
|
|
||||||
<div class="pswp__container">
|
|
||||||
<div class="pswp__item"></div>
|
|
||||||
<div class="pswp__item"></div>
|
|
||||||
<div class="pswp__item"></div>
|
|
||||||
</div>
|
|
||||||
<!-- Default (PhotoSwipeUI_Default) interface on top of sliding area. Can be changed. -->
|
|
||||||
<div class="pswp__ui pswp__ui--hidden">
|
|
||||||
<div class="pswp__top-bar">
|
|
||||||
<!-- Controls are self-explanatory. Order can be changed. -->
|
|
||||||
<div class="pswp__counter"></div>
|
|
||||||
<button class="pswp__button pswp__button--close" title="Close (Esc)"></button>
|
|
||||||
<!--<button class="pswp__button pswp__button--share" title="Share"></button>-->
|
|
||||||
<button class="pswp__button pswp__button--fs" title="Toggle fullscreen"></button>
|
|
||||||
<button class="pswp__button pswp__button--zoom" title="Zoom in/out"></button>
|
|
||||||
<!-- Preloader demo https://codepen.io/dimsemenov/pen/yyBWoR -->
|
|
||||||
<!-- element will get class pswp__preloader--active when preloader is running -->
|
|
||||||
<div class="pswp__preloader">
|
|
||||||
<div class="pswp__preloader__icn">
|
|
||||||
<div class="pswp__preloader__cut">
|
|
||||||
<div class="pswp__preloader__donut"></div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
[/@ArticlePrev]
|
||||||
<div class="pswp__share-modal pswp__share-modal--hidden pswp__single-tap">
|
|
||||||
<div class="pswp__share-tooltip"></div>
|
|
||||||
</div>
|
|
||||||
<button class="pswp__button pswp__button--arrow--left" title="Previous (arrow left)"></button>
|
|
||||||
<button class="pswp__button pswp__button--arrow--right" title="Next (arrow right)"></button>
|
|
||||||
<div class="pswp__caption">
|
|
||||||
<div class="pswp__caption__center"></div>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
var initPhotoSwipeFromDOM = function (gallerySelector) {
|
var initPhotoSwipeFromDOM = function (gallerySelector) {
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,43 @@
|
||||||
|
<!doctype html>
|
||||||
|
[#escape x as (x)!?html]
|
||||||
|
<html lang="zh-CN">
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<title>${channel.title} - ${site.title}</title>
|
||||||
|
<meta name="keywords" content="${channel.seoKeywords}">
|
||||||
|
<meta name="description" content="${channel.seoDescription}">
|
||||||
|
<meta name="_csrf" content="${_csrf.token}"/>
|
||||||
|
<meta name="_csrf_header" content="${_csrf.headerName}"/>
|
||||||
|
[#include 'inc_meta.html'/]
|
||||||
|
[#include 'inc_css.html'/]
|
||||||
|
[#include 'inc_js.html'/]
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
[#include 'inc_header.html'/]
|
||||||
|
[#include 'inc_message_box.html'/]
|
||||||
|
<div class="bg-gray-200">
|
||||||
|
<div class="container">
|
||||||
|
<nav class="row" aria-label="breadcrumb">
|
||||||
|
<ol class="col list-inline my-2">
|
||||||
|
<li class="list-inline-item"><a href="${site.url}">首页</a></li>
|
||||||
|
[#list channel.paths as c]
|
||||||
|
<li class="list-inline-item">/</li>
|
||||||
|
<li class="list-inline-item">[@A bean=c/]</li>
|
||||||
|
[/#list]
|
||||||
|
</ol>
|
||||||
|
</nav>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="container mt-4">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-lg-12">
|
||||||
|
<h3 class="cm-ff-yh">${channel.name}2343</h3>
|
||||||
|
<div class="mt-4 article-content">[#noescape]${channel.text!}[/#noescape]</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
[#include 'inc_footer.html'/]
|
||||||
|
<script>axios.get('${api}/channel/view/${channel.id?c}');</script>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
[/#escape]
|
||||||
|
|
@ -12,70 +12,36 @@
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
[#include 'inc_header.html'/]
|
[#include 'inc_header.html'/]
|
||||||
<div class="bg-gray-200">
|
|
||||||
<div class="container">
|
<div class="case_container_detail">
|
||||||
<nav class="row" aria-label="breadcrumb">
|
<div class="banner">
|
||||||
<ol class="col list-inline my-2">
|
<div class="banner_main">
|
||||||
<li class="list-inline-item"><a href="${site.url}">首页</a></li>
|
<h2>合作案例</h2>
|
||||||
[#list channel.paths as c]
|
<p>安全第一 预防为主 综合治理</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="case_main">
|
||||||
|
<div class="breadcrumb">
|
||||||
|
<nav class="row" aria-label="breadcrumb">
|
||||||
|
<ol class="col list-inline my-2">
|
||||||
|
<li class="list-inline-item"><a href="${site.url}">首页</a></li>
|
||||||
|
[#list channel.paths as c]
|
||||||
<li class="list-inline-item">/</li>
|
<li class="list-inline-item">/</li>
|
||||||
<li class="list-inline-item">[@A bean=c/]</li>
|
<li class="list-inline-item">[@A bean=c/]</li>
|
||||||
[/#list]
|
|
||||||
</ol>
|
|
||||||
</nav>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="container mt-4">
|
|
||||||
<div class="row">
|
|
||||||
<div class="col-md-4 mt-2">
|
|
||||||
<img class="img-fluid" src="${article.image}">
|
|
||||||
</div>
|
|
||||||
<div class="col-md-8 mt-2">
|
|
||||||
<h5 class="cm-ff-yh">${article.title}</h5>
|
|
||||||
<div class="mt-3 pb-3 border-bottom text-muted">
|
|
||||||
<span>${format(article.publishDate, 'yyyy-MM-dd HH:mm')}</span>
|
|
||||||
<i class="ml-2 far fa-eye"></i> <span id="views"></span>
|
|
||||||
<script>
|
|
||||||
axios.get('${api}/article/view/${article.id?c}').then(function (response) {
|
|
||||||
$('#views').text(response.data);
|
|
||||||
});
|
|
||||||
</script>
|
|
||||||
</div>
|
|
||||||
<div class="mt-3">
|
|
||||||
<div class="mt-3"><span class="text-muted mr-2">优惠价</span><span class="text-danger">¥<span class="h3">${article.customs['price']}</span></span></div>
|
|
||||||
<div class="mt-3"><span class="text-muted mr-2">厂商指导价</span><span>¥${article.customs['guidePrice']}</span></div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="row">
|
|
||||||
<div class="col">
|
|
||||||
<h5 class="border-bottom mt-4"><span class="cm-block-head-bottom">商品介绍</span></h5>
|
|
||||||
<div class="article-content mt-3">[#noescape]${article.text!}[/#noescape]</div>
|
|
||||||
<h5 class="border-bottom mt-4"><span class="cm-block-head-bottom">规格参数</span></h5>
|
|
||||||
<div class="article-content mt-3">[#noescape]${article.customs['specifications']!}[/#noescape]</div>
|
|
||||||
<script>$('.article-content img').addClass('img-fluid');</script>
|
|
||||||
<ul class="mt-4 pt-2 list-unstyled border-top">
|
|
||||||
[@ArticleNext id=article.id order=article.order channelId=article.channelId isDesc=article.channel.orderDesc; bean]
|
|
||||||
<li class="text-truncate mt-2">
|
|
||||||
<strong>上一条:</strong>[#if bean??][@A bean=bean class="cm-link"/][#else]没有了[/#if]
|
|
||||||
</li>
|
|
||||||
[/@ArticleNext]
|
|
||||||
[@ArticlePrev id=article.id order=article.order channelId=article.channelId isDesc=article.channel.orderDesc; bean]
|
|
||||||
<li class="text-truncate mt-2">
|
|
||||||
<strong>下一条:</strong>[#if bean??][@A bean=bean class="cm-link"/][#else]没有了[/#if]
|
|
||||||
</li>
|
|
||||||
[/@ArticlePrev]
|
|
||||||
</ul>
|
|
||||||
|
|
||||||
<h5 class="mt-4 border-bottom"><span class="cm-block-head-bottom">相关新闻</span></h5>
|
|
||||||
[@EsArticleList q=article.title excludeId=article.id limit=5; list]
|
|
||||||
<ul class="list-unstyled mt-3">
|
|
||||||
[#list list as bean]
|
|
||||||
<li class="text-truncate mt-2">[@A bean=bean class="cm-link"/]</li>
|
|
||||||
[/#list]
|
[/#list]
|
||||||
</ul>
|
</ol>
|
||||||
[/@EsArticleList]
|
</nav>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="case_main_wrap">
|
||||||
|
<div class="new_main">
|
||||||
|
<div class="title">
|
||||||
|
<h2>${article.title}</h2>
|
||||||
|
</div>
|
||||||
|
<div class="main">
|
||||||
|
[#noescape]${article.text!}[/#noescape]
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,75 @@
|
||||||
|
<!doctype html>
|
||||||
|
[#escape x as (x)!?html]
|
||||||
|
<html lang="zh-CN">
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<title>${channel.title} - ${site.title}</title>
|
||||||
|
<meta name="keywords" content="${channel.seoKeywords}">
|
||||||
|
<meta name="description" content="${channel.seoDescription}">
|
||||||
|
[#include 'inc_meta.html'/]
|
||||||
|
[#include 'inc_css.html'/]
|
||||||
|
[#include 'inc_js.html'/]
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
[#include 'inc_header.html'/]
|
||||||
|
<div class="public_container">
|
||||||
|
<div class="banner">
|
||||||
|
<div class="banner_main">
|
||||||
|
<h2>网上公开</h2>
|
||||||
|
<p>安全第一 预防为主 综合治理</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="new_container">
|
||||||
|
<div class="left">
|
||||||
|
<div class="top">网上公开</div>
|
||||||
|
<div class="main">
|
||||||
|
[#assign parent = channel.parent!channel/]
|
||||||
|
[@ChannelList parentId=parent.id isNav='true'; list]
|
||||||
|
[#list list as bean]
|
||||||
|
<div class="list [#if channel.id == bean.id]active[#else][/#if]"><a href="${bean.url}">${bean.name}</a></div>
|
||||||
|
[/#list]
|
||||||
|
[/@ChannelList]
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="right_main1">
|
||||||
|
<div class="new_main">
|
||||||
|
<div class="title">
|
||||||
|
${article.title}
|
||||||
|
</div>
|
||||||
|
<div class="main">
|
||||||
|
[#noescape]${article.text!}[/#noescape]
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="bottom">
|
||||||
|
[@ArticleNext id=article.id order=article.order channelId=article.channelId isDesc=article.channel.orderDesc; bean]
|
||||||
|
<div class="item">
|
||||||
|
<div class="previous">上一条:</div>
|
||||||
|
<div class="info"> [#if bean??][@A bean=bean class="cm-link"/][#else]没有了[/#if]</div>
|
||||||
|
</div>
|
||||||
|
[/@ArticleNext]
|
||||||
|
[@ArticlePrev id=article.id order=article.order channelId=article.channelId isDesc=article.channel.orderDesc; bean]
|
||||||
|
<div class="item">
|
||||||
|
<div class="previous">下一条:</div>
|
||||||
|
<div class="info">[#if bean??][@A bean=bean class="cm-link"/][#else]没有了[/#if]</div>
|
||||||
|
</div>
|
||||||
|
[/@ArticlePrev]
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
[#include 'inc_footer.html'/]
|
||||||
|
<script>axios.get('${api}/channel/view/${channel.id?c}');</script>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
[/#escape]
|
||||||
|
|
@ -13,7 +13,6 @@
|
||||||
[#include 'inc_js.html'/]
|
[#include 'inc_js.html'/]
|
||||||
<link rel="stylesheet" href="${files}/vendor/pdfjs-dist/legacy/web/pdf_viewer.css">
|
<link rel="stylesheet" href="${files}/vendor/pdfjs-dist/legacy/web/pdf_viewer.css">
|
||||||
<style>
|
<style>
|
||||||
|
|
||||||
#viewerWrapper {
|
#viewerWrapper {
|
||||||
position: relative;
|
position: relative;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
|
|
@ -39,10 +38,16 @@
|
||||||
<body tabindex="1">
|
<body tabindex="1">
|
||||||
[#include 'inc_header.html'/]
|
[#include 'inc_header.html'/]
|
||||||
[#include 'inc_message_box.html'/]
|
[#include 'inc_message_box.html'/]
|
||||||
<div class="bg-gray-200">
|
<div class="wenku_container">
|
||||||
<div class="container">
|
<div class="banner">
|
||||||
<nav class="row" aria-label="breadcrumb">
|
<div class="banner_main">
|
||||||
<ol class="col list-inline my-2">
|
<h2>政策法规</h2>
|
||||||
|
<p>安全第一 预防为主 综合治理</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="new_container_detail">
|
||||||
|
<nav class="breadcrumb">
|
||||||
|
<ol class="list-inline">
|
||||||
<li class="list-inline-item"><a href="${site.url}">首页</a></li>
|
<li class="list-inline-item"><a href="${site.url}">首页</a></li>
|
||||||
[#list channel.paths as c]
|
[#list channel.paths as c]
|
||||||
<li class="list-inline-item">/</li>
|
<li class="list-inline-item">/</li>
|
||||||
|
|
@ -50,236 +55,246 @@
|
||||||
[/#list]
|
[/#list]
|
||||||
</ol>
|
</ol>
|
||||||
</nav>
|
</nav>
|
||||||
</div>
|
<div class="new_main">
|
||||||
</div>
|
<div class="title">
|
||||||
<div class="container mt-4">
|
<h2>${article.title}</h2>
|
||||||
<div class="row">
|
<div class="time">
|
||||||
<div class="col">
|
${format(article.publishDate, 'yyyy-MM-dd HH:mm')}
|
||||||
<h3 class="cm-ff-yh">${article.title}</h3>
|
[#if article.source??]<span class="ml-2">${article.source}</span>[/#if]
|
||||||
<div class="mt-3 pb-2 border-bottom text-muted">
|
[#if article.author??]<span class="ml-2">${article.author}</span>[/#if]
|
||||||
<span>${format(article.publishDate, 'yyyy-MM-dd HH:mm')}</span>
|
<i class="ml-2 far fa-eye"></i> <span id="views"></span>
|
||||||
[#if article.source??]<span class="ml-2">${article.source}</span>[/#if]
|
<script>
|
||||||
[#if article.author??]<span class="ml-2">${article.author}</span>[/#if]
|
axios.get('${api}/article/view/${article.id?c}').then(function (response) {
|
||||||
<i class="ml-2 far fa-eye"></i> <span id="views"></span>
|
$('#views').text(response.data);
|
||||||
<script>
|
});
|
||||||
request.get('${api}/article/view/${article.id?c}').then(function (response) {
|
</script>
|
||||||
$('#views').text(response.data);
|
|
||||||
});
|
|
||||||
</script>
|
|
||||||
</div>
|
|
||||||
[#if article.doc??]
|
|
||||||
<div id="fullContainer" class="mt-3 text-center bg-secondary border">
|
|
||||||
<div id="toolbar" class="position-relative sticky-top p-1">
|
|
||||||
<button class="btn btn-outline-light" onclick="pdfViewer.decreaseScale()">-</button>
|
|
||||||
<button class="btn btn-outline-light ml-2" onclick="pdfViewer.increaseScale()">+</button>
|
|
||||||
<button id="fullscreenButton" class="btn btn-outline-light ml-2" onclick="fullscreen()">全屏</button>
|
|
||||||
<button id="exitFullscreenButton" class="btn btn-outline-light ml-2 cm-hidden" onclick="exitFullscreen()">退出</button>
|
|
||||||
</div>
|
</div>
|
||||||
<div id="viewerWrapper" class="bg-secondary viewerWrapperNormal">
|
</div>
|
||||||
<div id="viewerContainer" tabindex="0">
|
|
||||||
<div id="viewer" class="pdfViewer"></div>
|
<div class="container mt-4">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col">
|
||||||
|
[#if article.doc??]
|
||||||
|
<div id="fullContainer" class="mt-3 text-center bg-secondary border">
|
||||||
|
<div id="toolbar" class="position-relative sticky-top p-1">
|
||||||
|
<button class="btn btn-outline-light" onclick="pdfViewer.decreaseScale()">-</button>
|
||||||
|
<button class="btn btn-outline-light ml-2" onclick="pdfViewer.increaseScale()">+</button>
|
||||||
|
<button id="fullscreenButton" class="btn btn-outline-light ml-2" onclick="fullscreen()">全屏</button>
|
||||||
|
<button id="exitFullscreenButton" class="btn btn-outline-light ml-2 cm-hidden" onclick="exitFullscreen()">退出</button>
|
||||||
|
</div>
|
||||||
|
<div id="viewerWrapper" class="bg-secondary viewerWrapperNormal">
|
||||||
|
<div id="viewerContainer" tabindex="0">
|
||||||
|
<div id="viewer" class="pdfViewer"></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<script type="module">
|
||||||
|
import * as pdfjsLib from '${files}/vendor/pdfjs-dist/legacy/build/pdf.mjs';
|
||||||
|
import * as pdfjsViewer from '${files}/vendor/pdfjs-dist/legacy/web/pdf_viewer.mjs';
|
||||||
|
|
||||||
|
if (!pdfjsLib.getDocument || !pdfjsViewer.PDFViewer) {
|
||||||
|
alert("Please build the pdfjs-dist library");
|
||||||
|
}
|
||||||
|
|
||||||
|
// The workerSrc property shall be specified.
|
||||||
|
pdfjsLib.GlobalWorkerOptions.workerSrc =
|
||||||
|
"${files}/vendor/pdfjs-dist/legacy/build/pdf.worker.mjs";
|
||||||
|
|
||||||
|
// Some PDFs need external cmaps.
|
||||||
|
const CMAP_URL = "${files}/vendor/pdfjs-dist/cmaps/";
|
||||||
|
const CMAP_PACKED = true;
|
||||||
|
|
||||||
|
const DEFAULT_URL = "${article.doc}";
|
||||||
|
const ENABLE_XFA = true;
|
||||||
|
const SEARCH_FOR = ""; // try "Mozilla";
|
||||||
|
|
||||||
|
// PDF.js 4.x: sandbox is now in /build, not /legacy/build
|
||||||
|
const SANDBOX_BUNDLE_SRC = "${files}/vendor/pdfjs-dist/build/pdf.sandbox.js";
|
||||||
|
|
||||||
|
const container = document.getElementById("viewerContainer");
|
||||||
|
|
||||||
|
const eventBus = new pdfjsViewer.EventBus();
|
||||||
|
|
||||||
|
// (Optionally) enable hyperlinks within PDF files.
|
||||||
|
const pdfLinkService = new pdfjsViewer.PDFLinkService({
|
||||||
|
eventBus,
|
||||||
|
});
|
||||||
|
|
||||||
|
// (Optionally) enable find controller.
|
||||||
|
const pdfFindController = new pdfjsViewer.PDFFindController({
|
||||||
|
eventBus,
|
||||||
|
linkService: pdfLinkService,
|
||||||
|
});
|
||||||
|
|
||||||
|
// (Optionally) enable scripting support.
|
||||||
|
const pdfScriptingManager = new pdfjsViewer.PDFScriptingManager({
|
||||||
|
eventBus,
|
||||||
|
sandboxBundleSrc: SANDBOX_BUNDLE_SRC,
|
||||||
|
});
|
||||||
|
|
||||||
|
// PDF.js 4.x: PDFViewer now requires a "renderer" option, default is "canvas"
|
||||||
|
const pdfViewer = new pdfjsViewer.PDFViewer({
|
||||||
|
container,
|
||||||
|
eventBus,
|
||||||
|
linkService: pdfLinkService,
|
||||||
|
findController: pdfFindController,
|
||||||
|
scriptingManager: pdfScriptingManager,
|
||||||
|
renderer: "canvas"
|
||||||
|
});
|
||||||
|
pdfLinkService.setViewer(pdfViewer);
|
||||||
|
pdfScriptingManager.setViewer(pdfViewer);
|
||||||
|
|
||||||
|
eventBus.on("pagesinit", function () {
|
||||||
|
pdfViewer.currentScaleValue = "page-width";
|
||||||
|
if (SEARCH_FOR) {
|
||||||
|
eventBus.dispatch("find", {type: "", query: SEARCH_FOR});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
// Loading document.
|
||||||
|
const loadingTask = pdfjsLib.getDocument({
|
||||||
|
url: DEFAULT_URL,
|
||||||
|
cMapUrl: CMAP_URL,
|
||||||
|
cMapPacked: CMAP_PACKED,
|
||||||
|
enableXfa: ENABLE_XFA,
|
||||||
|
});
|
||||||
|
(async function () {
|
||||||
|
const pdfDocument = await loadingTask.promise;
|
||||||
|
pdfViewer.setDocument(pdfDocument);
|
||||||
|
pdfLinkService.setDocument(pdfDocument, null);
|
||||||
|
})();
|
||||||
|
|
||||||
|
// Expose pdfViewer for zoom controls
|
||||||
|
window.pdfViewer = pdfViewer;
|
||||||
|
|
||||||
|
// Initialize fullscreen functionality
|
||||||
|
var fullContainer = document.getElementById('fullContainer');
|
||||||
|
var viewerWrapper = document.getElementById('viewerWrapper');
|
||||||
|
|
||||||
|
// 进入全屏
|
||||||
|
window.fullscreen = function() {
|
||||||
|
if (fullContainer.requestFullscreen) {
|
||||||
|
fullContainer.requestFullscreen();
|
||||||
|
} else if (fullContainer.mozRequestFullScreen) {
|
||||||
|
fullContainer.mozRequestFullScreen();
|
||||||
|
} else if (fullContainer.webkitRequestFullscreen) {
|
||||||
|
fullContainer.webkitRequestFullscreen();
|
||||||
|
} else if (fullContainer.msRequestFullscreen) {
|
||||||
|
fullContainer.msRequestFullscreen();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
// 退出全屏
|
||||||
|
window.exitFullscreen = function() {
|
||||||
|
if (document.exitFullscreen) {
|
||||||
|
document.exitFullscreen();
|
||||||
|
} else if (document.mozCancelFullScreen) {
|
||||||
|
document.mozCancelFullScreen();
|
||||||
|
} else if (document.webkitExitFullscreen) {
|
||||||
|
document.webkitExitFullscreen();
|
||||||
|
} else if (document.msExitFullscreen) {
|
||||||
|
document.msExitFullscreen();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
function isFullscreen() {
|
||||||
|
return !!(document.fullscreenElement || document.mozFullScreen || document.webkitIsFullScreen || document.msFullscreenElement);
|
||||||
|
}
|
||||||
|
|
||||||
|
function _fullscreenChange() {
|
||||||
|
if (isFullscreen()) {
|
||||||
|
$('#fullscreenButton').hide();
|
||||||
|
$('#exitFullscreenButton').show();
|
||||||
|
$(fullContainer).addClass('overflow-auto');
|
||||||
|
$(viewerWrapper).addClass('viewerWrapperFull').removeClass('viewerWrapperNormal');
|
||||||
|
$('#viewerContainer').focus();
|
||||||
|
} else {
|
||||||
|
$('#fullscreenButton').show();
|
||||||
|
$('#exitFullscreenButton').hide();
|
||||||
|
$(fullContainer).removeClass('overflow-auto');
|
||||||
|
$(viewerWrapper).addClass('viewerWrapperNormal').removeClass('viewerWrapperFull');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function _addFullscreenChangeListeners() {
|
||||||
|
window.addEventListener("fullscreenchange", _fullscreenChange);
|
||||||
|
window.addEventListener("mozfullscreenchange", _fullscreenChange);
|
||||||
|
window.addEventListener("webkitfullscreenchange", _fullscreenChange);
|
||||||
|
window.addEventListener("MSFullscreenChange", _fullscreenChange);
|
||||||
|
}
|
||||||
|
|
||||||
|
_addFullscreenChangeListeners();
|
||||||
|
</script>
|
||||||
|
[/#if]
|
||||||
|
<div class="mt-4" id="articleText">[#noescape]${article.text!}[/#noescape]</div>
|
||||||
|
<div class="lead d-flex justify-content-center text-info">
|
||||||
|
<div class="cm-pointer" onclick="voteUp()"><i class="far fa-thumbs-up"></i> <span id="ups"></span></div>
|
||||||
|
<div class="cm-pointer ml-4" onclick="voteDown()"><i class="far fa-thumbs-down"></i> <span id="downs"></span></div>
|
||||||
|
</div>
|
||||||
|
<script>
|
||||||
|
function voteUp() {
|
||||||
|
fetchCsrf().then(function () {
|
||||||
|
request.post('${api}/article/up/${article.id?c}').then(function (response) {
|
||||||
|
if (response.data <= 0) {
|
||||||
|
alert("您已经参与过一次!");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
$('#ups').text(response.data);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
function voteDown() {
|
||||||
|
fetchCsrf().then(function () {
|
||||||
|
request.post('${api}/article/down/${article.id?c}').then(function (response) {
|
||||||
|
if (response.data <= 0) {
|
||||||
|
alert("您已经参与过一次!");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
$('#downs').text(response.data);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
request.get('${api}/article/buffer/${article.id?c}').then(function (response) {
|
||||||
|
$('#ups').text(response.data.ups);
|
||||||
|
$('#downs').text(response.data.downs);
|
||||||
|
});
|
||||||
|
$('#articleText img').addClass('img-fluid');
|
||||||
|
</script>
|
||||||
|
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<script type="module">
|
|
||||||
import * as pdfjsLib from '${files}/vendor/pdfjs-dist/legacy/build/pdf.mjs';
|
|
||||||
import * as pdfjsViewer from '${files}/vendor/pdfjs-dist/legacy/web/pdf_viewer.mjs';
|
|
||||||
|
|
||||||
if (!pdfjsLib.getDocument || !pdfjsViewer.PDFViewer) {
|
<div class="bottom">
|
||||||
alert("Please build the pdfjs-dist library");
|
|
||||||
}
|
|
||||||
|
|
||||||
// The workerSrc property shall be specified.
|
|
||||||
pdfjsLib.GlobalWorkerOptions.workerSrc =
|
|
||||||
"${files}/vendor/pdfjs-dist/legacy/build/pdf.worker.mjs";
|
|
||||||
|
|
||||||
// Some PDFs need external cmaps.
|
|
||||||
const CMAP_URL = "${files}/vendor/pdfjs-dist/cmaps/";
|
|
||||||
const CMAP_PACKED = true;
|
|
||||||
|
|
||||||
const DEFAULT_URL = "${article.doc}";
|
|
||||||
const ENABLE_XFA = true;
|
|
||||||
const SEARCH_FOR = ""; // try "Mozilla";
|
|
||||||
|
|
||||||
// PDF.js 4.x: sandbox is now in /build, not /legacy/build
|
|
||||||
const SANDBOX_BUNDLE_SRC = "${files}/vendor/pdfjs-dist/build/pdf.sandbox.js";
|
|
||||||
|
|
||||||
const container = document.getElementById("viewerContainer");
|
|
||||||
|
|
||||||
const eventBus = new pdfjsViewer.EventBus();
|
|
||||||
|
|
||||||
// (Optionally) enable hyperlinks within PDF files.
|
|
||||||
const pdfLinkService = new pdfjsViewer.PDFLinkService({
|
|
||||||
eventBus,
|
|
||||||
});
|
|
||||||
|
|
||||||
// (Optionally) enable find controller.
|
|
||||||
const pdfFindController = new pdfjsViewer.PDFFindController({
|
|
||||||
eventBus,
|
|
||||||
linkService: pdfLinkService,
|
|
||||||
});
|
|
||||||
|
|
||||||
// (Optionally) enable scripting support.
|
|
||||||
const pdfScriptingManager = new pdfjsViewer.PDFScriptingManager({
|
|
||||||
eventBus,
|
|
||||||
sandboxBundleSrc: SANDBOX_BUNDLE_SRC,
|
|
||||||
});
|
|
||||||
|
|
||||||
// PDF.js 4.x: PDFViewer now requires a "renderer" option, default is "canvas"
|
|
||||||
const pdfViewer = new pdfjsViewer.PDFViewer({
|
|
||||||
container,
|
|
||||||
eventBus,
|
|
||||||
linkService: pdfLinkService,
|
|
||||||
findController: pdfFindController,
|
|
||||||
scriptingManager: pdfScriptingManager,
|
|
||||||
renderer: "canvas"
|
|
||||||
});
|
|
||||||
pdfLinkService.setViewer(pdfViewer);
|
|
||||||
pdfScriptingManager.setViewer(pdfViewer);
|
|
||||||
|
|
||||||
eventBus.on("pagesinit", function () {
|
|
||||||
pdfViewer.currentScaleValue = "page-width";
|
|
||||||
if (SEARCH_FOR) {
|
|
||||||
eventBus.dispatch("find", {type: "", query: SEARCH_FOR});
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
// Loading document.
|
|
||||||
const loadingTask = pdfjsLib.getDocument({
|
|
||||||
url: DEFAULT_URL,
|
|
||||||
cMapUrl: CMAP_URL,
|
|
||||||
cMapPacked: CMAP_PACKED,
|
|
||||||
enableXfa: ENABLE_XFA,
|
|
||||||
});
|
|
||||||
(async function () {
|
|
||||||
const pdfDocument = await loadingTask.promise;
|
|
||||||
pdfViewer.setDocument(pdfDocument);
|
|
||||||
pdfLinkService.setDocument(pdfDocument, null);
|
|
||||||
})();
|
|
||||||
|
|
||||||
// Expose pdfViewer for zoom controls
|
|
||||||
window.pdfViewer = pdfViewer;
|
|
||||||
|
|
||||||
// Initialize fullscreen functionality
|
|
||||||
var fullContainer = document.getElementById('fullContainer');
|
|
||||||
var viewerWrapper = document.getElementById('viewerWrapper');
|
|
||||||
|
|
||||||
// 进入全屏
|
|
||||||
window.fullscreen = function() {
|
|
||||||
if (fullContainer.requestFullscreen) {
|
|
||||||
fullContainer.requestFullscreen();
|
|
||||||
} else if (fullContainer.mozRequestFullScreen) {
|
|
||||||
fullContainer.mozRequestFullScreen();
|
|
||||||
} else if (fullContainer.webkitRequestFullscreen) {
|
|
||||||
fullContainer.webkitRequestFullscreen();
|
|
||||||
} else if (fullContainer.msRequestFullscreen) {
|
|
||||||
fullContainer.msRequestFullscreen();
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
// 退出全屏
|
|
||||||
window.exitFullscreen = function() {
|
|
||||||
if (document.exitFullscreen) {
|
|
||||||
document.exitFullscreen();
|
|
||||||
} else if (document.mozCancelFullScreen) {
|
|
||||||
document.mozCancelFullScreen();
|
|
||||||
} else if (document.webkitExitFullscreen) {
|
|
||||||
document.webkitExitFullscreen();
|
|
||||||
} else if (document.msExitFullscreen) {
|
|
||||||
document.msExitFullscreen();
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
function isFullscreen() {
|
|
||||||
return !!(document.fullscreenElement || document.mozFullScreen || document.webkitIsFullScreen || document.msFullscreenElement);
|
|
||||||
}
|
|
||||||
|
|
||||||
function _fullscreenChange() {
|
|
||||||
if (isFullscreen()) {
|
|
||||||
$('#fullscreenButton').hide();
|
|
||||||
$('#exitFullscreenButton').show();
|
|
||||||
$(fullContainer).addClass('overflow-auto');
|
|
||||||
$(viewerWrapper).addClass('viewerWrapperFull').removeClass('viewerWrapperNormal');
|
|
||||||
$('#viewerContainer').focus();
|
|
||||||
} else {
|
|
||||||
$('#fullscreenButton').show();
|
|
||||||
$('#exitFullscreenButton').hide();
|
|
||||||
$(fullContainer).removeClass('overflow-auto');
|
|
||||||
$(viewerWrapper).addClass('viewerWrapperNormal').removeClass('viewerWrapperFull');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function _addFullscreenChangeListeners() {
|
|
||||||
window.addEventListener("fullscreenchange", _fullscreenChange);
|
|
||||||
window.addEventListener("mozfullscreenchange", _fullscreenChange);
|
|
||||||
window.addEventListener("webkitfullscreenchange", _fullscreenChange);
|
|
||||||
window.addEventListener("MSFullscreenChange", _fullscreenChange);
|
|
||||||
}
|
|
||||||
|
|
||||||
_addFullscreenChangeListeners();
|
|
||||||
</script>
|
|
||||||
[/#if]
|
|
||||||
<div class="mt-4" id="articleText">[#noescape]${article.text!}[/#noescape]</div>
|
|
||||||
<div class="lead d-flex justify-content-center text-info">
|
|
||||||
<div class="cm-pointer" onclick="voteUp()"><i class="far fa-thumbs-up"></i> <span id="ups"></span></div>
|
|
||||||
<div class="cm-pointer ml-4" onclick="voteDown()"><i class="far fa-thumbs-down"></i> <span id="downs"></span></div>
|
|
||||||
</div>
|
|
||||||
<script>
|
|
||||||
function voteUp() {
|
|
||||||
fetchCsrf().then(function () {
|
|
||||||
request.post('${api}/article/up/${article.id?c}').then(function (response) {
|
|
||||||
if (response.data <= 0) {
|
|
||||||
alert("您已经参与过一次!");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
$('#ups').text(response.data);
|
|
||||||
});
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
function voteDown() {
|
|
||||||
fetchCsrf().then(function () {
|
|
||||||
request.post('${api}/article/down/${article.id?c}').then(function (response) {
|
|
||||||
if (response.data <= 0) {
|
|
||||||
alert("您已经参与过一次!");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
$('#downs').text(response.data);
|
|
||||||
});
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
request.get('${api}/article/buffer/${article.id?c}').then(function (response) {
|
|
||||||
$('#ups').text(response.data.ups);
|
|
||||||
$('#downs').text(response.data.downs);
|
|
||||||
});
|
|
||||||
$('#articleText img').addClass('img-fluid');
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<ul class="mt-4 list-unstyled">
|
|
||||||
[@ArticleNext id=article.id order=article.order channelId=article.channelId isDesc=article.channel.orderDesc; bean]
|
[@ArticleNext id=article.id order=article.order channelId=article.channelId isDesc=article.channel.orderDesc; bean]
|
||||||
<li class="text-truncate mt-2">
|
<div class="item">
|
||||||
<strong>上一条:</strong>[#if bean??][@A bean=bean class="cm-link"/][#else]没有了[/#if]
|
<div class="previous">上一条:</div>
|
||||||
</li>
|
<div class="info"> [#if bean??][@A bean=bean class="cm-link"/][#else]没有了[/#if]</div>
|
||||||
|
</div>
|
||||||
[/@ArticleNext]
|
[/@ArticleNext]
|
||||||
[@ArticlePrev id=article.id order=article.order channelId=article.channelId isDesc=article.channel.orderDesc; bean]
|
[@ArticlePrev id=article.id order=article.order channelId=article.channelId isDesc=article.channel.orderDesc; bean]
|
||||||
<li class="text-truncate mt-2">
|
<div class="item">
|
||||||
<strong>下一条:</strong>[#if bean??][@A bean=bean class="cm-link"/][#else]没有了[/#if]
|
<div class="previous">下一条:</div>
|
||||||
</li>
|
<div class="info">[#if bean??][@A bean=bean class="cm-link"/][#else]没有了[/#if]</div>
|
||||||
|
</div>
|
||||||
[/@ArticlePrev]
|
[/@ArticlePrev]
|
||||||
</ul>
|
</div>
|
||||||
|
|
||||||
<h5 class="mt-4 border-bottom"><span class="cm-block-head-bottom">相关新闻</span></h5>
|
|
||||||
[@EsArticleList q=article.title excludeId=article.id limit=5; list]
|
|
||||||
<ul class="list-unstyled mt-3">
|
|
||||||
[#list list as bean]
|
|
||||||
<li class="text-truncate mt-2">[@A bean=bean class="cm-link"/]</li>
|
|
||||||
[/#list]
|
|
||||||
</ul>
|
|
||||||
[/@EsArticleList]
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
[#include 'inc_footer.html'/]
|
[#include 'inc_footer.html'/]
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|
|
||||||
|
|
@ -14,27 +14,30 @@
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
[#include 'inc_header.html'/]
|
[#include 'inc_header.html'/]
|
||||||
[#include 'inc_message_box.html'/]
|
<div class="about_container">
|
||||||
<div class="bg-gray-200">
|
<div class="banner">
|
||||||
<div class="container">
|
<div class="banner_main">
|
||||||
<nav class="row" aria-label="breadcrumb">
|
<h2>铸诚信 安天下</h2>
|
||||||
<ol class="col list-inline my-2">
|
<p>安全第一 预防为主 综合治理</p>
|
||||||
<li class="list-inline-item"><a href="${site.url}">首页</a></li>
|
|
||||||
[#list channel.paths as c]
|
|
||||||
<li class="list-inline-item">/</li>
|
|
||||||
<li class="list-inline-item">[@A bean=c/]</li>
|
|
||||||
[/#list]
|
|
||||||
</ol>
|
|
||||||
</nav>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="container mt-4">
|
|
||||||
<div class="row">
|
|
||||||
<div class="col-lg-12">
|
|
||||||
<h3 class="cm-ff-yh">${channel.name}</h3>
|
|
||||||
<div class="mt-4 article-content">[#noescape]${channel.text!}[/#noescape]</div>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="new_container">
|
||||||
|
<div class="left">
|
||||||
|
<div class="top">关于秦安</div>
|
||||||
|
<div class="main">
|
||||||
|
[#assign parent = channel.parent!channel/]
|
||||||
|
[@ChannelList parentId=parent.id isNav='true'; list]
|
||||||
|
[#list list as bean]
|
||||||
|
<div class="list [#if channel.id == bean.id]active[#else][/#if]"><a href="${bean.url}">${bean.name}</a></div>
|
||||||
|
[/#list]
|
||||||
|
[/@ChannelList]
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="right_main">
|
||||||
|
<h3 class="cm-ff-yh">${channel.name}</h3>
|
||||||
|
<div>[#noescape]${channel.text!}[/#noescape]</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
[#include 'inc_footer.html'/]
|
[#include 'inc_footer.html'/]
|
||||||
<script>axios.get('${api}/channel/view/${channel.id?c}');</script>
|
<script>axios.get('${api}/channel/view/${channel.id?c}');</script>
|
||||||
|
|
|
||||||
|
|
@ -12,60 +12,60 @@
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
[#include 'inc_header.html'/]
|
[#include 'inc_header.html'/]
|
||||||
<div class="bg-gray-200">
|
<div class="case_container">
|
||||||
<div class="container">
|
<div class="banner">
|
||||||
<nav class="row" aria-label="breadcrumb">
|
<div class="banner_main">
|
||||||
<ol class="col list-inline my-2">
|
<h2>合作案例</h2>
|
||||||
[#assign parent = channel.parent!channel/]
|
<p>安全第一 预防为主 综合治理</p>
|
||||||
<li class="list-inline-item"><a class="btn btn-sm [#if parent.id == channel.id]btn-primary[#else]btn-link[/#if]" href="${parent.url}">全部</a></li>
|
</div>
|
||||||
[@ChannelList parentId=parent.id; list]
|
|
||||||
[#list list as bean]
|
|
||||||
<li class="list-inline-item"><a class="btn btn-sm [#if channel.id == bean.id]btn-primary[#else]btn-link[/#if]" href="${bean.url}">${bean.name}</a></li>
|
|
||||||
[/#list]
|
|
||||||
[/@ChannelList]
|
|
||||||
</ol>
|
|
||||||
</nav>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<div class="case_main">
|
||||||
<div class="container mt-2">
|
<div class="top">
|
||||||
<div class="row">
|
<div class="top_wrap">
|
||||||
<div class="col">
|
<div class="title">行业 <span class="line">|</span> </div>
|
||||||
[#if channel.children?size <= 0]
|
<div class="num">
|
||||||
<div>
|
[#assign parent = channel.parent!channel/]
|
||||||
[#assign customsQueryMap={}/]
|
<div class="item"><a class="[#if parent.id == channel.id]active[#else]btn-link[/#if]" href="${parent.url}">全部</a></div>
|
||||||
[#list channel.articleModel.fieldList?filter(field->['radio','checkbox','select','multipleSelect']?seqContains(field.type)) as field]
|
[@ChannelList parentId=parent.id; list]
|
||||||
<div class="py-1 border-bottom">
|
[#list list as bean]
|
||||||
[#assign param=field.code+'Key'/]
|
<div class="item"><a class="[#if channel.id == bean.id]active[#else]btn-link[/#if]" href="${bean.url}">${bean.name}</a></div>
|
||||||
<a href="${addParam(channel.url, channel.dynamicUrl, param)}" class="btn btn-sm[#if !Params[param]??] btn-secondary[#else] btn-link text-reset[/#if]">全部${field.name}</a>
|
[/#list]
|
||||||
[@DictList typeId=field.dictTypeId; list]
|
[/@ChannelList]
|
||||||
[#list list as dict]
|
|
||||||
<a href="${addParam(channel.url, channel.dynamicUrl, param, dict.value)}" class="btn btn-sm [#if Params[param]! == dict.value]btn-secondary[#else]btn-link text-reset[/#if]">${dict.name}</a>
|
|
||||||
[/#list]
|
|
||||||
[/@DictList]
|
|
||||||
</div>
|
</div>
|
||||||
[#assign customsQueryMap=customsQueryMap + {'ArrayEQ_@articleExt-mainsJson$'+param+(field.dataType == 'number')?string('_Int',''): Params[param]!}/]
|
|
||||||
[/#list]
|
|
||||||
</div>
|
</div>
|
||||||
[/#if]
|
</div>
|
||||||
|
<div class="case_main_wrap">
|
||||||
[@ArticlePage channelId=channel.id isIncludeSubChannel='true' Q_=customsQueryMap orderBy=channel.orderDesc?string("sticky_desc,order_desc","sticky_desc,order_asc"); pagedList]
|
[@ArticlePage channelId=channel.id isIncludeSubChannel='true' Q_=customsQueryMap orderBy=channel.orderDesc?string("sticky_desc,order_desc","sticky_desc,order_asc"); pagedList]
|
||||||
<div class="row mx-n1 mb-3">
|
[#list pagedList.content as bean]
|
||||||
[#list pagedList.content as bean]
|
<div class="item">
|
||||||
<div class="col-lg-3 col-6 px-1 mt-3">
|
<div class="img"><img src="${bean.image}" width="100%" height="100%" alt="${bean.title}"></div>
|
||||||
<div class="card">
|
<div class="info">
|
||||||
<div class="p-3 text-center" style="height:180px;"><img src="${bean.image}" class="mw-100 mh-100" alt="${bean.title}"></div>
|
<div class="title">[@A bean=bean class="text-reset stretched-link"]${bean.title}[/@A]</div>
|
||||||
<div class="card-body p-2">
|
<div class="text">把危险化学品安全摆在防范化解重大风险的突出位置,推进新一代信息技术和危险化学品安全生产深度融合,实现数字化转型...</div>
|
||||||
<div class="card-text text-truncate">[@A bean=bean class="text-reset stretched-link"]${bean.title}[/@A]</div>
|
<div class="details">了解详情 ></div>
|
||||||
<div class="card-text text-danger h5 mt-2"><small>¥</small>${bean.customs['price']}</div>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
[/#list]
|
[/#list]
|
||||||
</div>
|
</div>
|
||||||
|
<div class="page">
|
||||||
[#include 'inc_page.html'/]
|
[#include 'inc_page.html'/]
|
||||||
[/@ArticlePage]
|
[/@ArticlePage]
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
[#include 'inc_footer.html'/]
|
[#include 'inc_footer.html'/]
|
||||||
<script>axios.get('${api}/channel/view/${channel.id?c}');</script>
|
<script>axios.get('${api}/channel/view/${channel.id?c}');</script>
|
||||||
</body>
|
</body>
|
||||||
|
|
|
||||||
|
|
@ -12,66 +12,50 @@
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
[#include 'inc_header.html'/]
|
[#include 'inc_header.html'/]
|
||||||
<div class="bg-gray-200">
|
<div class="public_container">
|
||||||
<div class="container">
|
<div class="banner">
|
||||||
<nav class="row" aria-label="breadcrumb">
|
<div class="banner_main">
|
||||||
<ol class="col list-inline my-2">
|
<h2>网上公开</h2>
|
||||||
|
<p>安全第一 预防为主 综合治理</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="new_container">
|
||||||
|
<div class="left">
|
||||||
|
<div class="top">网上公开</div>
|
||||||
|
<div class="main">
|
||||||
[#assign parent = channel.parent!channel/]
|
[#assign parent = channel.parent!channel/]
|
||||||
<li class="list-inline-item"><a class="btn btn-sm [#if parent.id == channel.id]btn-primary[#else]btn-link[/#if]" href="${parent.url}">全部</a></li>
|
|
||||||
[@ChannelList parentId=parent.id isNav='true'; list]
|
[@ChannelList parentId=parent.id isNav='true'; list]
|
||||||
[#list list as bean]
|
[#list list as bean]
|
||||||
<li class="list-inline-item"><a class="btn btn-sm [#if channel.id == bean.id]btn-primary[#else]btn-link[/#if]" href="${bean.url}">${bean.name}</a></li>
|
<div class="list [#if channel.id == bean.id]active[#else][/#if]"><a href="${bean.url}">${bean.name}</a></div>
|
||||||
[/#list]
|
[/#list]
|
||||||
[/@ChannelList]
|
[/@ChannelList]
|
||||||
</ol>
|
|
||||||
</nav>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="container mt-3">
|
|
||||||
<div class="row">
|
|
||||||
<div class="col-lg-8">
|
|
||||||
<div>
|
|
||||||
[#assign customsQueryMap={}/]
|
|
||||||
[#list channel.articleModel.fieldList?filter(field->['radio','checkbox','select','multipleSelect']?seqContains(field.type)) as field]
|
|
||||||
<div class="py-1 border-bottom">
|
|
||||||
[#assign param=field.code+'Key'/]
|
|
||||||
<a href="${addParam(channel.url, channel.dynamicUrl, param)}" class="btn btn-sm[#if !Params[param]??] btn-secondary[#else] btn-link text-reset[/#if]">全部${field.name}</a>
|
|
||||||
[@DictList typeId=field.dictTypeId; list]
|
|
||||||
[#list list as dict]
|
|
||||||
<a href="${addParam(channel.url, channel.dynamicUrl, param, dict.value)}" class="btn btn-sm [#if Params[param]! == dict.value]btn-secondary[#else]btn-link text-reset[/#if]">${dict.name}</a>
|
|
||||||
[/#list]
|
|
||||||
[/@DictList]
|
|
||||||
</div>
|
|
||||||
[#assign customsQueryMap=customsQueryMap + {'ArrayEQ_@articleExt-mainsJson$'+param+(field.dataType != 'string')?string('_Int',''): Params[param]!}/]
|
|
||||||
[/#list]
|
|
||||||
</div>
|
</div>
|
||||||
[@ArticlePage channelId=channel.id isIncludeSubChannel="true" Q_=customsQueryMap orderBy=channel.orderDesc?string("sticky_desc,order_desc","sticky_desc,order_asc"); pagedList]
|
</div>
|
||||||
<ul class="list-unstyled">
|
<div class="right_main">
|
||||||
[#list pagedList.content as bean]
|
<div class="wrap_list" >
|
||||||
<li class="mt-3 media border-bottom position-relative pb-3">
|
[@ArticlePage channelId=channel.id isIncludeSubChannel="true" Q_=customsQueryMap orderBy=channel.orderDesc?string("sticky_desc,order_desc","sticky_desc,order_asc"); pagedList]
|
||||||
[#if bean.image??][@A bean=bean class="mr-3"]<img src="${bean.image}" class="rounded-sm cm-media-img" alt="${bean.title}">[/@A][/#if]
|
[#list pagedList.content as bean]
|
||||||
<div class="media-body">
|
<div class="wrap">
|
||||||
<p class="mt-0 mb-1">[@A bean=bean class="cm-link text-decoration-none"/]</p>
|
<div class="title">[@A bean=bean class="cm-link text-decoration-none"/]</div>
|
||||||
<p class="text-muted d-none d-sm-block mb-2">
|
<div class="time">${format(bean.publishDate, 'yyyy-MM-dd')}</div>
|
||||||
[@A bean=bean class="text-reset small text-decoration-none"]${substring(bean.description,60,'...')}[/@A]
|
|
||||||
</p>
|
|
||||||
<div class="small text-muted mt-3 clearfix">
|
|
||||||
<div class="float-left">
|
|
||||||
<span>[#list bean.channel.paths as c][@A bean=c/][#if c_has_next] > [/#if][/#list]</span>
|
|
||||||
<i class="ml-2 far fa-eye"></i> ${bean.views}
|
|
||||||
</div>
|
</div>
|
||||||
<div class="float-right"><i class="ml-2 far fa-clock"></i> ${format(bean.publishDate, 'yyyy-MM-dd')}</div>
|
[/#list]
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
</li>
|
|
||||||
[/#list]
|
|
||||||
</ul>
|
|
||||||
[#include 'inc_page.html'/]
|
[#include 'inc_page.html'/]
|
||||||
[/@ArticlePage]
|
[/@ArticlePage]
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
[#include 'inc_right.html'/]
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
[#include 'inc_footer.html'/]
|
[#include 'inc_footer.html'/]
|
||||||
<script>axios.get('${api}/channel/view/${channel.id?c}');</script>
|
<script>axios.get('${api}/channel/view/${channel.id?c}');</script>
|
||||||
</body>
|
</body>
|
||||||
|
|
|
||||||
|
|
@ -12,66 +12,82 @@
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
[#include 'inc_header.html'/]
|
[#include 'inc_header.html'/]
|
||||||
<div class="bg-gray-200">
|
<div class="wenku_container">
|
||||||
<div class="container">
|
<div class="banner">
|
||||||
<nav class="row" aria-label="breadcrumb">
|
<div class="banner_main">
|
||||||
<ol class="col list-inline my-2">
|
<h2>政策法规</h2>
|
||||||
[#assign parent = channel.parent!channel/]
|
<p>安全第一 预防为主 综合治理</p>
|
||||||
<li class="list-inline-item"><a class="btn btn-sm [#if parent.id == channel.id]btn-primary[#else]btn-link[/#if]" href="${parent.url}">全部</a></li>
|
|
||||||
[@ChannelList parentId=parent.id; list]
|
|
||||||
[#list list as bean]
|
|
||||||
<li class="list-inline-item"><a class="btn btn-sm [#if channel.id == bean.id]btn-primary[#else]btn-link[/#if]" href="${bean.url}">${bean.name}</a></li>
|
|
||||||
[/#list]
|
|
||||||
[/@ChannelList]
|
|
||||||
</ol>
|
|
||||||
</nav>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="container mt-3">
|
<div class="new_container">
|
||||||
<div class="row">
|
<div class="top">
|
||||||
<div class="col">
|
<div class="wrap">
|
||||||
<div>
|
[#assign parent = channel.parent!channel/]
|
||||||
[#assign customsQueryMap={}/]
|
<div class="list [#if parent.id == channel.id]active[#else][/#if]"><a href="${parent.url}">全部</a></div>
|
||||||
[#list channel.articleModel.fieldList?filter(field->['radio','checkbox','select','multipleSelect']?seqContains(field.type)) as field]
|
[@ChannelList parentId=parent.id isNav='true'; list]
|
||||||
<div class="py-1 border-bottom">
|
[#list list as bean]
|
||||||
[#assign param=field.code+'Key'/]
|
<div class="list [#if channel.id == bean.id]active[#else][/#if]"><a href="${bean.url}">${bean.name}</a></div>
|
||||||
<a href="${addParam(channel.url, channel.dynamicUrl, param)}" class="btn btn-sm[#if !Params[param]??] btn-secondary[#else] btn-link text-reset[/#if]">全部${field.name}</a>
|
[/#list]
|
||||||
[@DictList typeId=field.dictTypeId; list]
|
[/@ChannelList]
|
||||||
[#list list as dict]
|
|
||||||
<a href="${addParam(channel.url, channel.dynamicUrl, param,dict.value)}"
|
|
||||||
class="btn btn-sm [#if Params[param]! == dict.value]btn-secondary[#else]btn-link text-reset[/#if]">${dict.name}</a>
|
|
||||||
[/#list]
|
|
||||||
[/@DictList]
|
|
||||||
</div>
|
|
||||||
[#assign customsQueryMap=customsQueryMap + {'ArrayEQ_@articleExt-mainsJson$'+param+(field.dataType != 'string')?string('_Int',''): Params[param]!}/]
|
|
||||||
[/#list]
|
|
||||||
</div>
|
|
||||||
[@ArticlePage channelId=channel.id isIncludeSubChannel='true' Q_=customsQueryMap orderBy=channel.orderDesc?string("sticky_desc,order_desc","sticky_desc,order_asc"); pagedList]
|
|
||||||
<ul class="list-unstyled">
|
|
||||||
[#list pagedList.content as bean]
|
|
||||||
<li class="mt-3 media border-bottom position-relative pb-3">
|
|
||||||
[#if bean.image??][@A bean=bean class="mr-3"]<img src="${bean.image}" class="rounded-sm img-thumbnail cm-media-img" alt="${bean.title}">[/@A][/#if]
|
|
||||||
<div class="media-body">
|
|
||||||
<p class="mt-0 mb-1">[@A bean=bean class="cm-link text-decoration-none"/]</p>
|
|
||||||
<p class="text-muted d-none d-sm-block mb-2">
|
|
||||||
[@A bean=bean class="text-reset small text-decoration-none"]${substring(bean.description,60,'...')}[/@A]
|
|
||||||
</p>
|
|
||||||
<div class="small text-muted mt-3 clearfix">
|
|
||||||
<div class="float-left">
|
|
||||||
<span>[#list bean.channel.paths as c][@A bean=c/][#if c_has_next] > [/#if][/#list]</span>
|
|
||||||
<i class="ml-2 far fa-eye"></i> ${bean.views}
|
|
||||||
</div>
|
|
||||||
<div class="float-right"><i class="ml-2 far fa-clock"></i> ${format(bean.publishDate, 'yyyy-MM-dd')}</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</li>
|
|
||||||
[/#list]
|
|
||||||
</ul>
|
|
||||||
[#include 'inc_page.html'/]
|
|
||||||
[/@ArticlePage]
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="new_main">
|
||||||
|
<div>
|
||||||
|
[#assign customsQueryMap={}/]
|
||||||
|
[#list channel.articleModel.fieldList?filter(field->['radio','checkbox','select','multipleSelect']?seqContains(field.type)) as field]
|
||||||
|
<div class="py-1 border-bottom">
|
||||||
|
[#assign param=field.code+'Key'/]
|
||||||
|
<a href="${addParam(channel.url, channel.dynamicUrl, param)}" class="btn btn-sm[#if !Params[param]??] btn-secondary[#else] btn-link text-reset[/#if]">全部${field.name}</a>
|
||||||
|
[@DictList typeId=field.dictTypeId; list]
|
||||||
|
[#list list as dict]
|
||||||
|
<a href="${addParam(channel.url, channel.dynamicUrl, param,dict.value)}"
|
||||||
|
class="btn btn-sm [#if Params[param]! == dict.value]btn-secondary[#else]btn-link text-reset[/#if]">${dict.name}</a>
|
||||||
|
[/#list]
|
||||||
|
[/@DictList]
|
||||||
|
</div>
|
||||||
|
[#assign customsQueryMap=customsQueryMap + {'ArrayEQ_@articleExt-mainsJson$'+param+(field.dataType != 'string')?string('_Int',''): Params[param]!}/]
|
||||||
|
[/#list]
|
||||||
|
</div>
|
||||||
|
<div class=" mt-3">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col">
|
||||||
|
[@ArticlePage channelId=channel.id isIncludeSubChannel='true' Q_=customsQueryMap orderBy=channel.orderDesc?string("sticky_desc,order_desc","sticky_desc,order_asc"); pagedList]
|
||||||
|
[#list pagedList.content as bean]
|
||||||
|
<div class="wrap">
|
||||||
|
|
||||||
|
<div class="item">
|
||||||
|
[#if bean.image??][@A bean=bean class="mr-3"]<img src="${bean.image}" class="rounded-sm img-thumbnail cm-media-img" alt="${bean.title}">[/@A][/#if]
|
||||||
|
<div class="info">
|
||||||
|
<p class="title">[@A bean=bean class="cm-link text-decoration-none"/]</p>
|
||||||
|
<p class="time">
|
||||||
|
[@A bean=bean class="text-reset small text-decoration-none"]${substring(bean.description,60,'...')}[/@A]
|
||||||
|
</p>
|
||||||
|
<div class="small text-muted mt-3 clearfix">
|
||||||
|
<div class="float-left">
|
||||||
|
<span>[#list bean.channel.paths as c][@A bean=c/][#if c_has_next] > [/#if][/#list]</span>
|
||||||
|
<i class="ml-2 far fa-eye"></i> ${bean.views}
|
||||||
|
</div>
|
||||||
|
<div class="float-right"><i class="ml-2 far fa-clock"></i> ${format(bean.publishDate, 'yyyy-MM-dd')}</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
[/#list]
|
||||||
|
[#include 'inc_page.html'/]
|
||||||
|
[/@ArticlePage]
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
[#include 'inc_footer.html'/]
|
[#include 'inc_footer.html'/]
|
||||||
<script>axios.get('${api}/channel/view/${channel.id?c}');</script>
|
<script>axios.get('${api}/channel/view/${channel.id?c}');</script>
|
||||||
</body>
|
</body>
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,50 @@
|
||||||
|
<!doctype html>
|
||||||
|
[#escape x as (x)!?html]
|
||||||
|
<html lang="zh-CN">
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<title>${channel.title} - ${site.title}</title>
|
||||||
|
<meta name="keywords" content="${channel.seoKeywords}">
|
||||||
|
<meta name="description" content="${channel.seoDescription}">
|
||||||
|
<meta name="_csrf" content="${_csrf.token}"/>
|
||||||
|
<meta name="_csrf_header" content="${_csrf.headerName}"/>
|
||||||
|
[#include 'inc_meta.html'/]
|
||||||
|
[#include 'inc_css.html'/]
|
||||||
|
[#include 'inc_js.html'/]
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
[#include 'inc_header.html'/]
|
||||||
|
<!--<div class="bg-gray-200">-->
|
||||||
|
<!-- <div class="container">-->
|
||||||
|
<!-- <nav class="row" aria-label="breadcrumb">-->
|
||||||
|
<!-- <ol class="col list-inline my-2">-->
|
||||||
|
<!-- <li class="list-inline-item"><a href="${site.url}">首页</a></li>-->
|
||||||
|
<!-- [#list channel.paths as c]-->
|
||||||
|
<!-- <li class="list-inline-item">/</li>-->
|
||||||
|
<!-- <li class="list-inline-item">[@A bean=c/]</li>-->
|
||||||
|
<!-- [/#list]-->
|
||||||
|
<!-- </ol>-->
|
||||||
|
<!-- </nav>-->
|
||||||
|
<!-- </div>-->
|
||||||
|
<!--</div>-->
|
||||||
|
<!--<div class="container mt-4">-->
|
||||||
|
<!-- <div class="main">-->
|
||||||
|
<!-- [#assign parent = channel.parent!channel/]-->
|
||||||
|
<!-- [@ChannelList parentId=parent.id isNav='true'; list]-->
|
||||||
|
<!-- [#list list as bean]-->
|
||||||
|
<!-- <div class="list [#if channel.id == bean.id]active[#else][/#if]"><a href="${bean.url}">${bean.name}</a></div>-->
|
||||||
|
<!-- [/#list]-->
|
||||||
|
<!-- [/@ChannelList]-->
|
||||||
|
<!-- </div>-->
|
||||||
|
<!-- <div class="row">-->
|
||||||
|
<!-- <div class="col-lg-12">-->
|
||||||
|
<!-- <h3 class="cm-ff-yh">${channel.name}2343</h3>-->
|
||||||
|
<!-- <div class="mt-4 article-content">[#noescape]${channel.text!}[/#noescape]</div>-->
|
||||||
|
<!-- </div>-->
|
||||||
|
<!-- </div>-->
|
||||||
|
<!--</div>-->
|
||||||
|
[#include 'inc_footer.html'/]
|
||||||
|
<script>axios.get('${api}/channel/view/${channel.id?c}');</script>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
[/#escape]
|
||||||
|
|
@ -19,11 +19,6 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
[#if !bean_has_next]
|
[#if !bean_has_next]
|
||||||
<script>lastArticleDate = '${bean.publishDate.format()}'</script>
|
<script>lastArticleDate = '${bean.publishDate.format()}'</script>
|
||||||
[/#if]
|
[/#if]
|
||||||
|
|
|
||||||
|
|
@ -10,11 +10,21 @@
|
||||||
[#include 'inc_js.html'/]
|
[#include 'inc_js.html'/]
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
|
<div class="about_container">
|
||||||
|
<div class="banner">
|
||||||
|
<div class="banner_main">
|
||||||
|
<h2>留言板</h2>
|
||||||
|
<p>安全第一 预防为主 综合治理</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
[#-- 用于当前栏目高亮显示 --]
|
[#-- 用于当前栏目高亮显示 --]
|
||||||
[#assign channelAlias='message-board'/]
|
[#assign channelAlias='message-board'/]
|
||||||
[#assign headerShadow=true/]
|
[#assign headerShadow=true/]
|
||||||
[#include 'inc_header.html'/]
|
[#include 'inc_header.html'/]
|
||||||
<div class="container">
|
<div class="message_container">
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col mt-1">
|
<div class="col mt-1">
|
||||||
<div class="d-flex align-items-center py-1 border-bottom">
|
<div class="d-flex align-items-center py-1 border-bottom">
|
||||||
|
|
|
||||||
|
|
@ -15,7 +15,15 @@
|
||||||
[#assign channelAlias='message-board'/]
|
[#assign channelAlias='message-board'/]
|
||||||
[#assign headerShadow=true/]
|
[#assign headerShadow=true/]
|
||||||
[#include 'inc_header.html'/]
|
[#include 'inc_header.html'/]
|
||||||
<div class="container">
|
<div class="about_container">
|
||||||
|
<div class="banner">
|
||||||
|
<div class="banner_main">
|
||||||
|
<h2>留言板</h2>
|
||||||
|
<p>安全第一 预防为主 综合治理</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="message_container">
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col mt-3">
|
<div class="col mt-3">
|
||||||
<div class="d-flex align-items-center py-1 border-bottom">
|
<div class="d-flex align-items-center py-1 border-bottom">
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue