33 changed files with 1732 additions and 211 deletions
@ -0,0 +1,137 @@ |
|||||
|
@charset "UTF-8"; |
||||
|
|
||||
|
/* CSS Document */ |
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
* { |
||||
|
margin: 0; |
||||
|
padding: 0; |
||||
|
font-family: 'Microsoft Yahei', Arial, Verdana, sans-serif; |
||||
|
} |
||||
|
|
||||
|
html { |
||||
|
width: 100%; |
||||
|
height: 100%; |
||||
|
overflow: hidden; |
||||
|
} |
||||
|
|
||||
|
body { |
||||
|
height: 100%; |
||||
|
width: 100%; |
||||
|
background: url(../img/bg_login.jpg) no-repeat #dde1e2 center -130px; |
||||
|
color: #4c4c4c; |
||||
|
font-size: 14px; |
||||
|
} |
||||
|
|
||||
|
.logsty { |
||||
|
position: absolute; |
||||
|
top: 5%; |
||||
|
left: 5%; |
||||
|
width: 35%; |
||||
|
height: 60px; |
||||
|
background: url(../img/logo.png) no-repeat; |
||||
|
background-size: 70%; |
||||
|
} |
||||
|
|
||||
|
.loginwrap { |
||||
|
position: absolute; |
||||
|
z-index: 9; |
||||
|
top: 50%; |
||||
|
left: 50%; |
||||
|
-webkit-transform: translate(-50%, -50%); |
||||
|
transform: translate(-50%, -50%); |
||||
|
width: 50%; |
||||
|
height: 50%; |
||||
|
padding: 3%; |
||||
|
background: #fff url(../img/login_pic.png) no-repeat left -10% top -10px; |
||||
|
background-size: auto 105%; |
||||
|
border-radius: 20px; |
||||
|
box-shadow: 0 0 15px rgba(0, 10, 51, .35); |
||||
|
} |
||||
|
|
||||
|
.loginbox { |
||||
|
position: absolute; |
||||
|
top: 10%; |
||||
|
right: 5%; |
||||
|
width: 35%; |
||||
|
letter-spacing: 2px; |
||||
|
} |
||||
|
|
||||
|
.loginbox h1 { |
||||
|
font-size: 24px; |
||||
|
font-weight: 550; |
||||
|
line-height: 3; |
||||
|
text-align: center; |
||||
|
} |
||||
|
|
||||
|
.inptit { |
||||
|
margin: 5% 0 2% 5%; |
||||
|
font-size: 16px; |
||||
|
color: #000; |
||||
|
} |
||||
|
|
||||
|
.loginbox input, .loginbtn { |
||||
|
color: #999999; |
||||
|
margin: 0 5%; |
||||
|
height: 40px; |
||||
|
line-height: 32px; |
||||
|
width: 90%; |
||||
|
padding: 0 3%; |
||||
|
border: 0 none; |
||||
|
box-sizing: border-box; |
||||
|
} |
||||
|
|
||||
|
.loginbox input.usersty, .loginbox input.pwsty, .loginbox input.checksty { |
||||
|
border-bottom: 1px solid #ddd; |
||||
|
} |
||||
|
|
||||
|
.loginbox input.checksty { |
||||
|
width: 16px; |
||||
|
margin-top: 16px; |
||||
|
} |
||||
|
|
||||
|
.remtxt { |
||||
|
display: inherit; |
||||
|
margin: -30px 0 0 42px; |
||||
|
color: #666666; |
||||
|
} |
||||
|
|
||||
|
.fortxt { |
||||
|
display: inline-block; |
||||
|
float: right; |
||||
|
margin: -20px 10px 0 0; |
||||
|
color: #2380fe; |
||||
|
text-decoration: none; |
||||
|
} |
||||
|
|
||||
|
.loginbtn { |
||||
|
margin: 20% auto 0; |
||||
|
background-color: #1367fe; |
||||
|
border-radius: 50px; |
||||
|
color: #fff; |
||||
|
font-size: 16px; |
||||
|
line-height: 40px; |
||||
|
text-align: center; |
||||
|
box-shadow: 0 0 10px rgba(19, 103, 254, .8); |
||||
|
} |
||||
|
|
||||
|
.loginbtn:hover { |
||||
|
opacity: 0.8; |
||||
|
cursor: pointer; |
||||
|
} |
||||
|
@media screen and (max-width: 1600px) { |
||||
|
|
||||
|
.loginwrap { |
||||
|
width: 60%; |
||||
|
background-position: left -12% top -10px; |
||||
|
} |
||||
|
} |
||||
|
@media screen and (max-width: 1024px) { |
||||
|
|
||||
|
.loginwrap { |
||||
|
width: 65%; |
||||
|
background-position: left -15% top -10px; |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,200 @@ |
|||||
|
|
||||
|
|
||||
|
/* CSS Document */ |
||||
|
|
||||
|
|
||||
|
* { |
||||
|
margin: 0; |
||||
|
padding: 0; |
||||
|
font-family: 'Microsoft Yahei', Arial, Verdana, sans-serif; |
||||
|
} |
||||
|
|
||||
|
html { |
||||
|
width: 100%; |
||||
|
height: 100%; |
||||
|
overflow: hidden; |
||||
|
} |
||||
|
|
||||
|
body { |
||||
|
height: 100%; |
||||
|
width: 100%; |
||||
|
color: #4c4c4c; |
||||
|
font-size: 14px; |
||||
|
} |
||||
|
|
||||
|
.statwrap { |
||||
|
padding: 1.5% 1%; |
||||
|
width: 100%; |
||||
|
height: 100%; |
||||
|
box-sizing: border-box; |
||||
|
} |
||||
|
|
||||
|
.headtit { |
||||
|
height: 3rem; |
||||
|
} |
||||
|
|
||||
|
.seltime { |
||||
|
display: flex; |
||||
|
position: absolute; |
||||
|
top: 110px; |
||||
|
right: 1%; |
||||
|
align-items: center; |
||||
|
} |
||||
|
|
||||
|
.seltime > i { |
||||
|
display: inline-block; |
||||
|
margin: 0 5px 0 0; |
||||
|
width: 24px; |
||||
|
height: 24px; |
||||
|
background: url(../images/icon_can.png) no-repeat; |
||||
|
background-size: 100%; |
||||
|
opacity: .5; |
||||
|
} |
||||
|
|
||||
|
.seltime > span { |
||||
|
display: inline-block; |
||||
|
margin: 0 10px; |
||||
|
} |
||||
|
|
||||
|
.seltime > span > select { |
||||
|
display: inline-block; |
||||
|
margin: 0 8px 0 0; |
||||
|
padding: 6px; |
||||
|
background: #FFFFFF none; |
||||
|
border: 1px solid #e5e6e7; |
||||
|
border-radius: 6px; |
||||
|
} |
||||
|
|
||||
|
.statit { |
||||
|
display: flex; |
||||
|
margin: 1% 0; |
||||
|
width: 60%; |
||||
|
} |
||||
|
|
||||
|
.statit > span { |
||||
|
display: inline-block; |
||||
|
margin: 1% 2% 0 0; |
||||
|
min-width: 6%; |
||||
|
height: 2.25rem; |
||||
|
line-height: 1.75; |
||||
|
color: rgba(0,0,0,0.4); |
||||
|
font-size: 1.15rem; |
||||
|
font-weight: 600; |
||||
|
text-align: center; |
||||
|
white-space: nowrap; |
||||
|
cursor: pointer; |
||||
|
} |
||||
|
|
||||
|
.statit>span.actit { |
||||
|
background: url(../images/sel_tab.png) no-repeat center bottom; |
||||
|
border-bottom: 3px solid rgba(12, 94, 249,1); |
||||
|
color: rgb(12, 94, 249); |
||||
|
} |
||||
|
|
||||
|
.tab_item { |
||||
|
display: none; |
||||
|
position: relative; |
||||
|
margin: 2.0rem 0 0; |
||||
|
height: calc(100% - 9rem); |
||||
|
clear: both; |
||||
|
} |
||||
|
|
||||
|
.desktab { |
||||
|
margin: auto; |
||||
|
border: 1px solid #ddd; |
||||
|
border-bottom: 0; |
||||
|
border-right: 0; |
||||
|
table-layout: fixed; |
||||
|
} |
||||
|
|
||||
|
.desktab tr { |
||||
|
border-bottom: 1px solid #ddd; |
||||
|
} |
||||
|
|
||||
|
.desktab tr:last-child { |
||||
|
border-bottom: 0; |
||||
|
} |
||||
|
|
||||
|
.desktab td, .desktab th, .noborder td { |
||||
|
padding: 8px 20px; |
||||
|
height: 42px; |
||||
|
border: 1px solid #ddd; |
||||
|
border-top: 0; |
||||
|
border-left: 0; |
||||
|
color: #666; |
||||
|
line-height: 20px; |
||||
|
word-break: keep-all; |
||||
|
white-space: nowrap; |
||||
|
text-overflow: ellipsis; |
||||
|
text-align: center; |
||||
|
overflow: hidden; |
||||
|
} |
||||
|
|
||||
|
.trodd th { |
||||
|
height: 40px; |
||||
|
background: #eaebec; |
||||
|
color: #4c4c4c; |
||||
|
} |
||||
|
|
||||
|
.line-clamp { |
||||
|
height: 20px; |
||||
|
overflow: hidden; |
||||
|
white-space: nowrap; |
||||
|
-webkit-line-clamp: 1; |
||||
|
-webkit-box-orient: vertical; |
||||
|
text-align: left; |
||||
|
text-overflow: ellipsis; |
||||
|
} |
||||
|
|
||||
|
.listhead { |
||||
|
width: 100%; |
||||
|
} |
||||
|
|
||||
|
.listbody { |
||||
|
position: relative; |
||||
|
height: calc(100% - 60px); |
||||
|
overflow: hidden; |
||||
|
} |
||||
|
|
||||
|
.inner { |
||||
|
position: absolute; |
||||
|
left: 0; |
||||
|
top: 0; |
||||
|
right: -6px; |
||||
|
bottom: 0; |
||||
|
overflow-x: hidden; |
||||
|
overflow-y: scroll; |
||||
|
} |
||||
|
|
||||
|
.chartbox { |
||||
|
float: left; |
||||
|
margin: 2% 2%; |
||||
|
width: 45%; |
||||
|
height: 90%; |
||||
|
} |
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
/** 滚动条样式 **/ |
||||
|
::-webkit-scrollbar-track { |
||||
|
background-color: #F5F5F5; |
||||
|
} |
||||
|
|
||||
|
::-webkit-scrollbar { |
||||
|
width: 6px; |
||||
|
height: 10px; |
||||
|
background-color: #F5F5F5; |
||||
|
} |
||||
|
|
||||
|
::-webkit-scrollbar-thumb { |
||||
|
border-radius: 6px; |
||||
|
background-color: #999; |
||||
|
} |
||||
|
After Width: | Height: | Size: 30 KiB |
|
After Width: | Height: | Size: 4.5 KiB |
|
After Width: | Height: | Size: 24 KiB |
|
After Width: | Height: | Size: 98 KiB |
|
Before Width: | Height: | Size: 9.5 KiB After Width: | Height: | Size: 24 KiB |
@ -0,0 +1,257 @@ |
|||||
|
//*****************统计分析图表
|
||||
|
|
||||
|
var echartUtil = { |
||||
|
echartRingData: [ |
||||
|
{ value: 1048, name: '生态环境检查' }, |
||||
|
{ value: 735, name: '卫生健康检查' }, |
||||
|
{ value: 580, name: '商务领域检查' }, |
||||
|
{ value: 484, name: '财务领域检查' }, |
||||
|
{ value: 300, name: '水务领域检查' } |
||||
|
], |
||||
|
|
||||
|
/** |
||||
|
* 初始化echarts |
||||
|
* @param targetId |
||||
|
*/ |
||||
|
initEchartRing:function (targetId) { |
||||
|
var myChart = echarts.init(document.getElementById(targetId)); |
||||
|
// 圆环图各环节的颜色
|
||||
|
var option = { |
||||
|
tooltip: { |
||||
|
trigger: 'item' |
||||
|
}, |
||||
|
series: [ |
||||
|
{ |
||||
|
name: '统计图表', |
||||
|
type: 'pie', |
||||
|
radius: ['43%', '60%'], |
||||
|
avoidLabelOverlap: false, |
||||
|
itemStyle: { |
||||
|
borderRadius: 0, |
||||
|
borderColor: '#fff', |
||||
|
borderWidth: 1 |
||||
|
}, |
||||
|
emphasis: { |
||||
|
label: { |
||||
|
show: true, |
||||
|
fontSize: '14', |
||||
|
fontWeight: 'bold' |
||||
|
} |
||||
|
}, |
||||
|
data: echartUtil.echartRingData, |
||||
|
color: ['#0038bb','#0047eb','#1c60ff','#3f78ff','#6592ff','#8aadff'], |
||||
|
} |
||||
|
] |
||||
|
}; |
||||
|
|
||||
|
// 使用刚指定的配置项和数据显示图表。
|
||||
|
myChart.setOption(option); |
||||
|
window.addEventListener("resize",function(){ |
||||
|
myChart.resize(); |
||||
|
}); |
||||
|
}, |
||||
|
|
||||
|
dataX: ['生态环境检查', '卫生健康检查', '商务领域检查', '财务领域检查', '水务领域检查'], |
||||
|
dataY: ['30', '20', '15', '25', '10'], |
||||
|
dataPercent: ['30', '20', '15', '25', '10'], |
||||
|
dataSum: new Array(echartUtil.dataX.length).fill(100) |
||||
|
} |
||||
|
|
||||
|
/*******1.检查类别***********/ |
||||
|
var dataX = ['生态环境检查', '卫生健康检查', '商务领域检查', '财务领域检查', '水务领域检查'] |
||||
|
var dataY = ['30', '20', '15', '25', '10']; |
||||
|
var dataPercent = ['30', '20', '15', '25', '10']; |
||||
|
var dataSum = new Array(dataX.length).fill(100); |
||||
|
var data = { |
||||
|
dataX: dataX, |
||||
|
dataY: dataY, |
||||
|
dataSum: dataSum, |
||||
|
dataPercent: dataPercent, |
||||
|
} |
||||
|
initSchedule(data); |
||||
|
|
||||
|
function initSchedule (dataAll) { |
||||
|
var _this = this; |
||||
|
var myChartLine = echarts.init(document.getElementById('echartLine')); |
||||
|
var myColor = ['#3C83FF'] |
||||
|
var option = { |
||||
|
grid: { //直角坐标系内绘图网格
|
||||
|
top: '10%', |
||||
|
bottom: '10%', |
||||
|
left: '35%', //grid 组件离容器左侧的距离,
|
||||
|
//left的值可以是80这样具体像素值,
|
||||
|
//也可以是'80%'这样相对于容器高度的百分比
|
||||
|
right: '15%', |
||||
|
//containLabel: true //gid区域是否包含坐标轴的刻度标签。为true的时候,
|
||||
|
// left/right/top/bottom/width/height决定的是包括了坐标轴标签在内的
|
||||
|
//所有内容所形成的矩形的位置.常用于【防止标签溢出】的场景
|
||||
|
}, |
||||
|
xAxis: { //直角坐标系grid中的x轴,
|
||||
|
//一般情况下单个grid组件最多只能放上下两个x轴,
|
||||
|
//多于两个x轴需要通过配置offset属性防止同个位置多个x轴的重叠。
|
||||
|
type: 'value', //坐标轴类型,分别有:
|
||||
|
//'value'-数值轴;'category'-类目轴;
|
||||
|
//'time'-时间轴;'log'-对数轴
|
||||
|
splitLine: { |
||||
|
show: false |
||||
|
}, //坐标轴在 grid 区域中的分隔线
|
||||
|
axisLabel: { |
||||
|
show: false |
||||
|
}, //坐标轴刻度标签
|
||||
|
axisTick: { |
||||
|
show: false |
||||
|
}, //坐标轴刻度
|
||||
|
axisLine: { |
||||
|
show: false |
||||
|
}, //坐标轴轴线
|
||||
|
}, |
||||
|
yAxis: { |
||||
|
type: 'category', |
||||
|
axisTick: { |
||||
|
show: false |
||||
|
}, |
||||
|
axisLine: { |
||||
|
show: false |
||||
|
}, |
||||
|
axisLabel: { |
||||
|
color: 'rgba(0,0,0,.7)', |
||||
|
fontSize: 14, |
||||
|
formatter: function(data) { |
||||
|
var traceValue; |
||||
|
for (var i = 0; i < dataAll.dataX.length; i++) { |
||||
|
if (data === dataAll.dataX[i]) { |
||||
|
traceValue = dataAll.dataY[i] |
||||
|
break |
||||
|
} |
||||
|
} |
||||
|
var arr = [ |
||||
|
'{a|' + data + '}', |
||||
|
'{b|' + traceValue + '}', |
||||
|
'{c|件}' |
||||
|
] |
||||
|
return arr.join('') |
||||
|
}, |
||||
|
textStyle: { |
||||
|
rich: { |
||||
|
a: { |
||||
|
fontSize: 14, |
||||
|
width: 100 |
||||
|
}, |
||||
|
b: { |
||||
|
fontSize: 14, |
||||
|
align: 'center', |
||||
|
color: '#3C83FF', |
||||
|
fontWeight: 600, |
||||
|
}, |
||||
|
c: { |
||||
|
padding: [0, 0, 0, 5], |
||||
|
fontSize: 14, |
||||
|
align: 'center', |
||||
|
} |
||||
|
} |
||||
|
}, |
||||
|
}, |
||||
|
data: dataAll.dataX //类目数据,在类目轴(type: 'category')中有效。
|
||||
|
//如果没有设置 type,但是设置了axis.data,则认为type 是 'category'。
|
||||
|
}, |
||||
|
series: [ //系列列表。每个系列通过 type 决定自己的图表类型
|
||||
|
{ |
||||
|
name: '%', //系列名称
|
||||
|
type: 'bar', //柱状、条形图
|
||||
|
barWidth: 15, //柱条的宽度,默认自适应
|
||||
|
data: dataAll.dataPercent, //系列中数据内容数组
|
||||
|
label: { //图形上的文本标签
|
||||
|
show: true, |
||||
|
position: 'right', //标签的位置
|
||||
|
offset: [0, 40], //标签文字的偏移,此处表示向上偏移40
|
||||
|
//formatter: '{c}{a}',//标签内容格式器 {a}-系列名,{b}-数据名,{c}-数据值
|
||||
|
formatter: function(data) { |
||||
|
//.toFixed(0)去掉小数位,如果为2就是保留两位小数
|
||||
|
//let b = data.percent.toFixed(0) + "%";
|
||||
|
//subText = b;
|
||||
|
return ''; |
||||
|
}, |
||||
|
color: 'rgba(0,0,0,.7)', //标签字体颜色
|
||||
|
fontSize: 26 //标签字号
|
||||
|
}, |
||||
|
itemStyle: { //图形样式
|
||||
|
normal: { //normal 图形在默认状态下的样式;
|
||||
|
//emphasis图形在高亮状态下的样式
|
||||
|
barBorderRadius: 10, //柱条圆角半径,单位px.
|
||||
|
//此处统一设置4个角的圆角大小;
|
||||
|
//也可以分开设置[10,10,10,10]顺时针左上、右上、右下、左下
|
||||
|
color: function(params) { |
||||
|
var num = myColor.length; //得到myColor颜色数组的长度
|
||||
|
return myColor[params.dataIndex % num]; //返回颜色数组中的一个对应的颜色值
|
||||
|
}, |
||||
|
} |
||||
|
}, |
||||
|
zlevel: 1 //柱状图所有图形的 zlevel 值,
|
||||
|
//zlevel 大的 Canvas 会放在 zlevel 小的 Canvas 的上面
|
||||
|
}, |
||||
|
{ |
||||
|
name: '进度条背景', |
||||
|
type: 'bar', |
||||
|
label: { //图形上的文本标签
|
||||
|
show: true, |
||||
|
position: 'right', //标签的位置
|
||||
|
offset: [0, 0], //标签文字的偏移,此处表示向上偏移40
|
||||
|
//formatter: '{c}{a}',//标签内容格式器 {a}-系列名,{b}-数据名,{c}-数据值
|
||||
|
formatter: function(data) { |
||||
|
//.toFixed(0)去掉小数位,如果为2就是保留两位小数
|
||||
|
var traceValue; |
||||
|
for (var i = 0; i < dataAll.dataX.length; i++) { |
||||
|
if (data.name === dataAll.dataX[i]) { |
||||
|
traceValue = dataAll.dataPercent[i] |
||||
|
break |
||||
|
} |
||||
|
} |
||||
|
var arr = [ |
||||
|
'{a|' + traceValue + '}', |
||||
|
'{b|%}' |
||||
|
] |
||||
|
return arr.join(''); |
||||
|
}, |
||||
|
textStyle: { |
||||
|
rich: { |
||||
|
a: { |
||||
|
fontSize: 14, |
||||
|
color: 'rgba(0,0,0,0.7)', |
||||
|
fontWeight: 560, |
||||
|
padding: [0, 0, 0, 15], |
||||
|
}, |
||||
|
b: { |
||||
|
fontSize: 14, |
||||
|
color: 'rgba(0,0,0,0.7)', |
||||
|
padding: [0, 0, 0, 3], |
||||
|
align: 'center', |
||||
|
}, |
||||
|
} |
||||
|
}, |
||||
|
}, |
||||
|
barGap: '-100%', //不同系列的柱间距离,为百分比。
|
||||
|
// 在同一坐标系上,此属性会被多个 'bar' 系列共享。
|
||||
|
// 此属性应设置于此坐标系中最后一个 'bar' 系列上才会生效,
|
||||
|
//并且是对此坐标系中所有 'bar' 系列生效。
|
||||
|
barWidth: 15, |
||||
|
data: dataAll.dataSum, |
||||
|
|
||||
|
color: '#DEE0E3', //柱条颜色
|
||||
|
itemStyle: { |
||||
|
normal: { |
||||
|
barBorderRadius: 10 |
||||
|
} |
||||
|
} |
||||
|
}, |
||||
|
|
||||
|
] |
||||
|
}; |
||||
|
myChartLine.setOption(option, true); |
||||
|
}; |
||||
|
|
||||
|
|
||||
|
// 使用刚指定的配置项和数据显示图表。
|
||||
|
myChart.setOption(option); |
||||
|
window.addEventListener("resize",function(){ |
||||
|
myChart.resize(); |
||||
|
}); |
||||
File diff suppressed because one or more lines are too long
@ -0,0 +1,203 @@ |
|||||
|
<!DOCTYPE html> |
||||
|
<html lang="zh" xmlns:th="http://www.thymeleaf.org"> |
||||
|
<head> |
||||
|
<meta charset="utf-8"> |
||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0"> |
||||
|
|
||||
|
<title>登录智慧应急管理云平台</title> |
||||
|
<meta name="description" content="后台管理框架"> |
||||
|
|
||||
|
<link href="../static/css/bootstrap-4.2.1/css/bootstrap.css" th:href="@{/css/bootstrap-4.2.1/css/bootstrap.css}" rel="stylesheet"/> |
||||
|
<!--<link href="../static/css/font-awesome.min.css" th:href="@{/css/font-awesome.min.css}" rel="stylesheet"/>--> |
||||
|
<!--<link href="../static/css/style.css" th:href="@{/css/style.css}" rel="stylesheet"/>--> |
||||
|
<!--<link href="../static/css/login.min.css" th:href="@{/css/login.min.css}" rel="stylesheet"/>--> |
||||
|
<!--<link href="../static/ruoyi/css/ry-ui.css" th:href="@{/ruoyi/css/ry-ui.css?v=4.1.0}" rel="stylesheet"/>--> |
||||
|
<!-- 360浏览器急速模式 --> |
||||
|
<meta name="renderer" content="webkit"> |
||||
|
<!-- 避免IE使用兼容模式 --> |
||||
|
<meta http-equiv="X-UA-Compatible" content="IE=edge"> |
||||
|
<!--<link rel="shortcut icon" href="../static/favicon.ico" th:href="@{favicon.ico}"/>--> |
||||
|
<style type="text/css">label.error { position:inherit; }</style> |
||||
|
<link href="../static/css/style.default.css" th:href="@{/css/style.default.css}" rel="stylesheet"/> |
||||
|
|
||||
|
<script> |
||||
|
if(window.top!==window.self){window.top.location=window.location}; |
||||
|
</script> |
||||
|
</head> |
||||
|
|
||||
|
<body> |
||||
|
<div class="page login-page"> |
||||
|
<div class="container d-flex align-items-center"> |
||||
|
<div class="form-holder has-shadow"> |
||||
|
<div class="row"> |
||||
|
|
||||
|
<div class="col-lg-6"> |
||||
|
<div class="info d-flex align-items-center"> |
||||
|
<div class="content"> |
||||
|
<div class="logo"> |
||||
|
|
||||
|
</div> |
||||
|
<div class="logosys">执法监督码管理系统</div> |
||||
|
|
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
|
||||
|
<div class="col-lg-6 bg-white"> |
||||
|
<!--<div class="form d-flex align-items-center" style="background: url(../img/ztf.jpg) no-repeat bottom 10% right 10%;--> |
||||
|
<!--background-size: 30%;">--> |
||||
|
<div class="form d-flex align-items-center"> |
||||
|
<div class="content"> |
||||
|
<h1>欢迎登录</h1> |
||||
|
<!--<form id="loginFrom">--> |
||||
|
<div class="form-group"> |
||||
|
<input id="login-username" type="text" name="username" required data-msg="请输入用户名" placeholder="用户名" class="input-material"> |
||||
|
</div> |
||||
|
<div class="form-group"> |
||||
|
<input id="login-password" type="password" name="password" required data-msg="请输入密码" placeholder="密码" class="input-material"> |
||||
|
</div> |
||||
|
<!--<div class="form-group" th:if="${captchaEnabled==true}">--> |
||||
|
<!--<!–<div class="col-xs-6">–>--> |
||||
|
<!--<input type="text" name="validateCode" class="form-control code" placeholder="验证码" maxlength="5" autocomplete="off">--> |
||||
|
<!--<a href="javascript:void(0);" title="点击更换验证码">--> |
||||
|
<!--<img th:src="@{captcha/captchaImage(type=${captchaType})}" class="imgcode" width="85%"/>--> |
||||
|
<!--</a>--> |
||||
|
<!--</div>--> |
||||
|
<!--<div class="col-xs-6">--> |
||||
|
|
||||
|
<!--</div>--> |
||||
|
<!--</div>--> |
||||
|
<button id="login" type="submit" class="btn btn-primary">登录</button> |
||||
|
<div style="margin-top: -40px;"> |
||||
|
|
||||
|
<!--<div class="custom-control custom-checkbox " style="float: right;">--> |
||||
|
<!--<input type="checkbox" class="custom-control-input" id="check2">--> |
||||
|
<!--<label class="custom-control-label" for="check2">自动登录</label>--> |
||||
|
<!--</div>--> |
||||
|
<!--<div class="custom-control custom-checkbox " style="float: right;"> |
||||
|
<input type="checkbox" class="custom-control-input" id="check1"> |
||||
|
<label class="custom-control-label" for="check1">记住密码 </label> |
||||
|
</div>--> |
||||
|
</div> |
||||
|
<!--</form>--> |
||||
|
<br /> |
||||
|
<!-- <small>没有账号?</small><a target=“_blank” href="/safety/enterprise/register" class="signup"> 注册</a>--> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
|
||||
|
<!--<script src="https://www.jq22.com/jquery/jquery-1.10.2.js"></script>--> |
||||
|
<!--<script src="https://www.jq22.com/jquery/bootstrap-3.3.4.js"></script>--> |
||||
|
<!--<script src="vendor/jquery-validation/jquery.validate.min.js"></script>--> |
||||
|
<script th:inline="javascript"> var ctx = [[@{/}]]; var captchaType = [[${captchaType}]]; </script> |
||||
|
|
||||
|
<!--<script src="js/front.js"></script>--> |
||||
|
<script src="../static/js/jquery.min.js" th:src="@{/js/jquery.min.js}"></script> |
||||
|
<!--<script src="../static/js/bootstrap.min.js" th:src="@{/js/bootstrap.min.js}"></script>--> |
||||
|
<!-- 验证插件 --> |
||||
|
<!--<script src="../static/ajax/libs/validate/jquery.validate.min.js" th:src="@{/ajax/libs/validate/jquery.validate.min.js}"></script>--> |
||||
|
<!--<script src="../static/ajax/libs/validate/messages_zh.min.js" th:src="@{/ajax/libs/validate/messages_zh.min.js}"></script>--> |
||||
|
<script src="../static/ajax/libs/layer/layer.min.js" th:src="@{/ajax/libs/layer/layer.min.js}"></script> |
||||
|
<script src="../static/ajax/libs/blockUI/jquery.blockUI.js" th:src="@{/ajax/libs/blockUI/jquery.blockUI.js}"></script> |
||||
|
<!--<script src="../static/ruoyi/js/ry-ui.js" th:src="@{/ruoyi/js/ry-ui.js?v=4.1.0}"></script>--> |
||||
|
<!--<script src="../static/ruoyi/login.js" th:src="@{/ruoyi/login.js}"></script>--> |
||||
|
<!--<script src="../static/js/crypto-js.js" type="text/javascript"></script>--> |
||||
|
<script src="../static/js/crypto-js.js" th:src="@{/js/crypto-js.js}"></script> |
||||
|
<script> |
||||
|
let data = { |
||||
|
from: 'iframe logout', |
||||
|
code: 403, |
||||
|
data: '退出登录' |
||||
|
}; |
||||
|
window.top.postMessage(data, '*'); |
||||
|
</script> |
||||
|
<script> |
||||
|
$(function(){ |
||||
|
/*判断上次是否勾选记住密码和自动登录*/ |
||||
|
/*var check1s=localStorage.getItem("check1"); |
||||
|
var check2s=localStorage.getItem("check2"); |
||||
|
var oldName=localStorage.getItem("userName"); |
||||
|
var oldPass=localStorage.getItem("passWord"); |
||||
|
if(check1s=="true"){ |
||||
|
$("#login-username").val(oldName); |
||||
|
$("#login-password").val(oldPass); |
||||
|
$("#check1").prop('checked',true); |
||||
|
}else{ |
||||
|
$("#login-username").val(''); |
||||
|
$("#login-password").val(''); |
||||
|
$("#check1").prop('checked',false); |
||||
|
} |
||||
|
if(check2s=="true"){ |
||||
|
$("#check2").prop('checked',true); |
||||
|
$("#loginFrom").submit(); |
||||
|
//location="https://www.baidu.com?userName="+oldName+"&passWord="+oldPass;//添加退出当前账号功能 |
||||
|
}else{ |
||||
|
$("#check2").prop('checked',false); |
||||
|
}*/ |
||||
|
/*拿到刚刚注册的账号*/ |
||||
|
/*if(localStorage.getItem("name")!=null){ |
||||
|
$("#login-username").val(localStorage.getItem("name")); |
||||
|
}*/ |
||||
|
/*登录*/ |
||||
|
$("#login").click(function(){ |
||||
|
login(); |
||||
|
}) |
||||
|
|
||||
|
$(document).keypress(function (e) { |
||||
|
if (e.keyCode == 13){ |
||||
|
login(); |
||||
|
} |
||||
|
}) |
||||
|
}) |
||||
|
|
||||
|
/** |
||||
|
* 登录 |
||||
|
*/ |
||||
|
function login() { |
||||
|
//var rememberMe = $("#check1").prop('checked'); |
||||
|
//var rememberMe = false; |
||||
|
var userName=$("#login-username").val(); |
||||
|
var passWord=$("#login-password").val(); |
||||
|
$.ajax({ |
||||
|
type: "post", |
||||
|
url: ctx + "login-1.html", |
||||
|
data: { |
||||
|
"username": userName, |
||||
|
"password": Encrypt(passWord) |
||||
|
//"rememberMe": rememberMe |
||||
|
}, |
||||
|
success: function(r) { |
||||
|
if (r.code == 0) { |
||||
|
location.href = ctx + 'index'; |
||||
|
} else { |
||||
|
layer.msg(r.msg) |
||||
|
} |
||||
|
} |
||||
|
}); |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* 加密密码 |
||||
|
* @param passWord |
||||
|
* @constructor |
||||
|
*/ |
||||
|
function Encrypt(passWord) { |
||||
|
var keyStr = '1234567898745621'; |
||||
|
var ivStr = keyStr; |
||||
|
var key = CryptoJS.enc.Utf8.parse(keyStr); |
||||
|
var iv = CryptoJS.enc.Utf8.parse(ivStr); |
||||
|
var srcs = CryptoJS.enc.Utf8.parse(passWord); |
||||
|
var encrypted = CryptoJS.AES.encrypt(srcs, key, { |
||||
|
iv: iv, |
||||
|
mode: CryptoJS.mode.CBC, |
||||
|
padding: CryptoJS.pad.ZeroPadding |
||||
|
}); |
||||
|
return CryptoJS.enc.Base64.stringify(encrypted.ciphertext); |
||||
|
} |
||||
|
</script> |
||||
|
</body> |
||||
|
</html> |
||||
@ -0,0 +1,138 @@ |
|||||
|
<!DOCTYPE html> |
||||
|
<html lang="zh" xmlns:th="http://www.thymeleaf.org" xmlns:shiro="http://www.pollix.at/thymeleaf/shiro"> |
||||
|
<head> |
||||
|
<th:block th:include="zdxtInclude :: header('执法预警列表列表')" /> |
||||
|
</head> |
||||
|
<body class="gray-bg"> |
||||
|
<div class="container-div"> |
||||
|
<div class="row"> |
||||
|
<div class="col-sm-12 search-collapse"> |
||||
|
<form id="formId"> |
||||
|
<div class="select-list"> |
||||
|
<ul> |
||||
|
<li> |
||||
|
<p>企业名称:</p> |
||||
|
<input type="text" name="enterpriseName"/> |
||||
|
</li> |
||||
|
<li> |
||||
|
<p>预警级别:</p> |
||||
|
<!-- <select name="warningLevel">--> |
||||
|
<!-- <option value="">请选择</option>--> |
||||
|
<!-- <option value="1">一级</option>--> |
||||
|
<!-- <option value="2">二级</option>--> |
||||
|
<!-- </select>--> |
||||
|
<select name="warningLevel" th:with="type=${@dict.getType('warnLevel')}"> |
||||
|
<option value="">所有</option> |
||||
|
<option th:each="dict : ${type}" th:text="${dict.dictLabel}" th:value="${dict.dictValue}"></option> |
||||
|
</select> |
||||
|
</li> |
||||
|
<li class="select-time"> |
||||
|
<p>预警时间:</p> |
||||
|
<input type="text" class="time-input" id="startTime" placeholder="开始时间" name="params[beginWarningTime]"/> |
||||
|
<span>-</span> |
||||
|
<input type="text" class="time-input" id="endTime" placeholder="结束时间" name="params[endWarningTime]"/> |
||||
|
</li> |
||||
|
<li> |
||||
|
<a class="btn btn-success btn-rounded btn-sm" onclick="$.table.search()"><i class="fa fa-search"></i> 搜索</a> |
||||
|
<a class="btn btn-reset btn-rounded btn-sm" onclick="$.form.reset()"><i class="fa fa-refresh"></i> 重置</a> |
||||
|
</li> |
||||
|
</ul> |
||||
|
</div> |
||||
|
</form> |
||||
|
</div> |
||||
|
|
||||
|
<div class="btn-group-sm" id="toolbar" role="group"> |
||||
|
<!-- <a class="btn btn-success" onclick="$.operate.add()" shiro:hasPermission="code:LawEnforcementWarningList:add">--> |
||||
|
<!-- <i class="fa fa-plus"></i> 添加--> |
||||
|
<!-- </a>--> |
||||
|
<!-- <a class="btn btn-primary single disabled" onclick="$.operate.edit()" shiro:hasPermission="code:LawEnforcementWarningList:edit">--> |
||||
|
<!-- <i class="fa fa-edit"></i> 修改--> |
||||
|
<!-- </a>--> |
||||
|
<!-- <a class="btn btn-danger multiple disabled" onclick="$.operate.removeAll()" shiro:hasPermission="code:LawEnforcementWarningList:remove">--> |
||||
|
<!-- <i class="fa fa-remove"></i> 删除--> |
||||
|
<!-- </a>--> |
||||
|
<!-- <a class="btn btn-warning" onclick="$.table.exportExcel()" shiro:hasPermission="code:LawEnforcementWarningList:export">--> |
||||
|
<!-- <i class="fa fa-download"></i> 导出--> |
||||
|
<!-- </a>--> |
||||
|
</div> |
||||
|
<div class="col-sm-12 select-table table-bordered"> |
||||
|
<table id="bootstrap-table"></table> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
<th:block th:include="zdxtInclude :: footer" /> |
||||
|
<script th:inline="javascript"> |
||||
|
var editFlag = [[${@permission.hasPermi('code:LawEnforcementWarningList:edit')}]]; |
||||
|
var prefix = ctx + "code/LawEnforcementWarningList"; |
||||
|
var warnLevel = [[${@dict.getType('warnLevel')}]] |
||||
|
console.log(warnLevel); |
||||
|
$(function() { |
||||
|
var options = { |
||||
|
url: prefix + "/list", |
||||
|
createUrl: prefix + "/add", |
||||
|
updateUrl: prefix + "/edit/{id}", |
||||
|
removeUrl: prefix + "/remove", |
||||
|
exportUrl: prefix + "/export", |
||||
|
modalName: "执法预警列表", |
||||
|
columns: [{ |
||||
|
checkbox: true |
||||
|
}, |
||||
|
{ |
||||
|
field : 'id', |
||||
|
title : '主键ID', |
||||
|
visible: false |
||||
|
}, |
||||
|
{ |
||||
|
field : 'warningTime', |
||||
|
title : '预警时间' |
||||
|
}, |
||||
|
{ |
||||
|
field : 'warningLevel', |
||||
|
title : '预警等级', |
||||
|
formatter:function (value,row,index) { |
||||
|
var map=getColor(); |
||||
|
for (let i = 0; i < warnLevel.length; i++) { |
||||
|
// if(warnLevel[i].dictValue == value){ |
||||
|
// return warnLevel[i].dictLabel |
||||
|
// } |
||||
|
if(value == warnLevel[i].dictValue){ |
||||
|
var color=map.get(warnLevel[i].dictValue) |
||||
|
return '<a style="'+color+'"><i class="fa fa-exclamation-triangle" aria-hidden="true"></i>'+' '+warnLevel[i].dictLabel+'</a>' |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
}, |
||||
|
{ |
||||
|
field : 'enterpriseName', |
||||
|
title : '企业名称' |
||||
|
}, |
||||
|
{ |
||||
|
field : 'warningCause', |
||||
|
title : '预警原因' |
||||
|
}, |
||||
|
/*{ |
||||
|
title: '操作', |
||||
|
align: 'center', |
||||
|
formatter: function(value, row, index) { |
||||
|
var actions = []; |
||||
|
actions.push('<a class="btn btn-success btn-xs ' + editFlag + '" href="javascript:void(0)" onclick="$.operate.edit(\'' + row.id + '\')"><i class="fa fa-edit"></i>编辑</a> '); |
||||
|
actions.push('<a class="btn btn-danger btn-xs ' + removeFlag + '" href="javascript:void(0)" onclick="$.operate.remove(\'' + row.id + '\')"><i class="fa fa-remove"></i>删除</a>'); |
||||
|
return actions.join(''); |
||||
|
} |
||||
|
}*/ |
||||
|
] |
||||
|
}; |
||||
|
$.table.init(options); |
||||
|
}); |
||||
|
function getColor(){ |
||||
|
var map=new Map([ |
||||
|
["1","color:#f33"], |
||||
|
["2","color:#e7880e"], |
||||
|
["3","color:#edc41e"], |
||||
|
["4","color:#5195fe"], |
||||
|
]) |
||||
|
return map; |
||||
|
} |
||||
|
</script> |
||||
|
</body> |
||||
|
</html> |
||||
@ -0,0 +1,65 @@ |
|||||
|
<!DOCTYPE html> |
||||
|
<html lang="zh" xmlns:th="http://www.thymeleaf.org" > |
||||
|
<head> |
||||
|
<th:block th:include="zdxtInclude :: header('新增执法预警列表')" /> |
||||
|
<th:block th:include="zdxtInclude :: datetimepicker-css" /> |
||||
|
</head> |
||||
|
<body class="white-bg"> |
||||
|
<div class="wrapper wrapper-content animated fadeInRight ibox-content"> |
||||
|
<form class="form-horizontal m" id="form-LawEnforcementWarningList-add"> |
||||
|
<div class="form-group"> |
||||
|
<label class="col-sm-3 control-label">预警时间:</label> |
||||
|
<div class="col-sm-8"> |
||||
|
<div class="input-group date"> |
||||
|
<span class="input-group-addon"><i class="fa fa-calendar"></i></span> |
||||
|
<input name="warningTime" class="form-control" placeholder="yyyy-MM-dd" type="text"> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div class="form-group"> |
||||
|
<label class="col-sm-3 control-label">预警原因:</label> |
||||
|
<div class="col-sm-8"> |
||||
|
<input name="warningCause" class="form-control" type="text"> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div class="form-group"> |
||||
|
<label class="col-sm-3 control-label">预警级别:</label> |
||||
|
<div class="col-sm-8"> |
||||
|
<input name="warningLevel" class="form-control" type="text"> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div class="form-group"> |
||||
|
<label class="col-sm-3 control-label">企业名称:</label> |
||||
|
<div class="col-sm-8"> |
||||
|
<input name="enterpriseName" class="form-control" type="text"> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div class="form-group"> |
||||
|
<label class="col-sm-3 control-label">企业统一信用编码:</label> |
||||
|
<div class="col-sm-8"> |
||||
|
<input name="enterpriseNumber" class="form-control" type="text"> |
||||
|
</div> |
||||
|
</div> |
||||
|
</form> |
||||
|
</div> |
||||
|
<th:block th:include="include :: footer" /> |
||||
|
<th:block th:include="include :: datetimepicker-js" /> |
||||
|
<script type="text/javascript"> |
||||
|
var prefix = ctx + "code/LawEnforcementWarningList" |
||||
|
$("#form-LawEnforcementWarningList-add").validate({ |
||||
|
focusCleanup: true |
||||
|
}); |
||||
|
|
||||
|
function submitHandler() { |
||||
|
if ($.validate.form()) { |
||||
|
$.operate.save(prefix + "/add", $('#form-LawEnforcementWarningList-add').serialize()); |
||||
|
} |
||||
|
} |
||||
|
$("input[name='warningTime']").datetimepicker({ |
||||
|
format: "yyyy-mm-dd", |
||||
|
minView: "month", |
||||
|
autoclose: true |
||||
|
}); |
||||
|
</script> |
||||
|
</body> |
||||
|
</html> |
||||
@ -0,0 +1,67 @@ |
|||||
|
<!DOCTYPE html> |
||||
|
<html lang="zh" xmlns:th="http://www.thymeleaf.org" > |
||||
|
<head> |
||||
|
<th:block th:include="include :: header('修改执法预警列表')" /> |
||||
|
<th:block th:include="include :: datetimepicker-css" /> |
||||
|
</head> |
||||
|
<body class="white-bg"> |
||||
|
<div class="wrapper wrapper-content animated fadeInRight ibox-content"> |
||||
|
<form class="form-horizontal m" id="form-LawEnforcementWarningList-edit" th:object="${lawEnforcementWarningList}"> |
||||
|
<input name="id" th:field="*{id}" type="hidden"> |
||||
|
<div class="form-group"> |
||||
|
<label class="col-sm-3 control-label">预警时间:</label> |
||||
|
<div class="col-sm-8"> |
||||
|
<div class="input-group date"> |
||||
|
<span class="input-group-addon"><i class="fa fa-calendar"></i></span> |
||||
|
<input name="warningTime" th:value="${#dates.format(lawEnforcementWarningList.warningTime, 'yyyy-MM-dd')}" class="form-control" placeholder="yyyy-MM-dd" type="text"> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div class="form-group"> |
||||
|
<label class="col-sm-3 control-label">预警原因:</label> |
||||
|
<div class="col-sm-8"> |
||||
|
<input name="warningCause" th:field="*{warningCause}" class="form-control" type="text"> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div class="form-group"> |
||||
|
<label class="col-sm-3 control-label">预警级别: 1 一级 2 二级 3 三级:</label> |
||||
|
<div class="col-sm-8"> |
||||
|
<input name="warningLevel" th:field="*{warningLevel}" class="form-control" type="text"> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div class="form-group"> |
||||
|
<label class="col-sm-3 control-label">企业名称:</label> |
||||
|
<div class="col-sm-8"> |
||||
|
<input name="enterpriseName" th:field="*{enterpriseName}" class="form-control" type="text"> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div class="form-group"> |
||||
|
<label class="col-sm-3 control-label">企业统一信用编码:</label> |
||||
|
<div class="col-sm-8"> |
||||
|
<input name="enterpriseNumber" th:field="*{enterpriseNumber}" class="form-control" type="text"> |
||||
|
</div> |
||||
|
</div> |
||||
|
</form> |
||||
|
</div> |
||||
|
<th:block th:include="include :: footer" /> |
||||
|
<th:block th:include="include :: datetimepicker-js" /> |
||||
|
<script type="text/javascript"> |
||||
|
var prefix = ctx + "code/LawEnforcementWarningList"; |
||||
|
$("#form-LawEnforcementWarningList-edit").validate({ |
||||
|
focusCleanup: true |
||||
|
}); |
||||
|
|
||||
|
function submitHandler() { |
||||
|
if ($.validate.form()) { |
||||
|
$.operate.save(prefix + "/edit", $('#form-LawEnforcementWarningList-edit').serialize()); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
$("input[name='warningTime']").datetimepicker({ |
||||
|
format: "yyyy-mm-dd", |
||||
|
minView: "month", |
||||
|
autoclose: true |
||||
|
}); |
||||
|
</script> |
||||
|
</body> |
||||
|
</html> |
||||
@ -0,0 +1,55 @@ |
|||||
|
<!DOCTYPE html> |
||||
|
<!DOCTYPE html> |
||||
|
<html lang="zh" xmlns:th="http://www.thymeleaf.org" xmlns:shiro="http://www.pollix.at/thymeleaf/shiro"> |
||||
|
<head> |
||||
|
<th:block th:include="zdxtInclude :: header('图表分析')"/> |
||||
|
<link type="text/css" href="/css/stat.css" rel="stylesheet" /> |
||||
|
</head> |
||||
|
|
||||
|
<body> |
||||
|
<div class="statwrap"> |
||||
|
<h1 class="headtit">深圳市各类行政检查实施情况分析</h1> |
||||
|
<div class="seltime"><i class="icsty"></i><span><select name="year"> |
||||
|
<option>2024</option> |
||||
|
<option>2023</option> |
||||
|
<option>2022</option> |
||||
|
</select>年度</span> |
||||
|
<span><select name="quarter"> |
||||
|
<option>2024-01</option> |
||||
|
</select>季度</span> |
||||
|
<span><select name="month"> |
||||
|
<option>2024-01</option> |
||||
|
<option>2024-02</option> |
||||
|
<option>2024-03</option> |
||||
|
</select>月度</span> |
||||
|
</div> |
||||
|
<div class="statit"><span id="one1" class="actit" onclick="setTab('one',1,4)">检查事项</span><span id="one2" onclick="setTab('one',2,4)">执法人员</span><span id="one3" onclick="setTab('one',3,4)">案件数量</span><span id="one4" onclick="setTab('one',4,4)" class="hover">企业类型</span></div> |
||||
|
<div id="con_one_1" class="tab_item" style="display: block;"> |
||||
|
<div class="chartbox" id="echartRing"></div> |
||||
|
<div class="chartbox" id="echartLine"></div> |
||||
|
|
||||
|
</div> |
||||
|
<div id="con_one_2" class="tab_item"> |
||||
|
</div> |
||||
|
|
||||
|
<div id="con_one_3" class="tab_item"> |
||||
|
</div> |
||||
|
|
||||
|
<div id="con_one_4" class="tab_item"> |
||||
|
</div> |
||||
|
</div> |
||||
|
<th:block th:include="zdxtInclude :: footer"/> |
||||
|
<script type="text/javascript" src="/js/echarts.min.js" ></script> |
||||
|
<script type="text/javascript" src="/js/charts-analy.js" ></script> |
||||
|
<script> |
||||
|
function setTab(name,cursel,n){ |
||||
|
for(i=1;i<=n;i++){ |
||||
|
var menu=document.getElementById(name+i); |
||||
|
var con=document.getElementById("con_"+name+"_"+i); |
||||
|
menu.className=i==cursel?"actit":""; |
||||
|
con.style.display=i==cursel?"block":"none"; |
||||
|
} |
||||
|
} |
||||
|
</script> |
||||
|
</body> |
||||
|
</html> |
||||
@ -0,0 +1,132 @@ |
|||||
|
<!DOCTYPE html> |
||||
|
<html lang="zh" xmlns:th="http://www.thymeleaf.org" > |
||||
|
<head> |
||||
|
<th:block th:include="zdxtInclude :: header('修改企业端-执法部门预约记录')" /> |
||||
|
<th:block th:include="zdxtInclude :: datetimepicker-css" /> |
||||
|
</head> |
||||
|
<body class="white-bg"> |
||||
|
<div class="wrapper wrapper-content animated fadeInRight ibox-content"> |
||||
|
<form class="form-horizontal m" id="form-registration-edit" th:object="${enforcementRegistration}"> |
||||
|
<input name="id" th:field="*{id}" type="hidden"> |
||||
|
<div class="form-group"> |
||||
|
<label class="col-sm-2 control-label">登记编号:</label> |
||||
|
<div class="col-sm-4"> |
||||
|
<input name="lawEnforcementCode" th:field="*{lawEnforcementCode}" class="form-control" type="text"> |
||||
|
</div> |
||||
|
<label class="col-sm-2 control-label">执法部门:</label> |
||||
|
<div class="col-sm-4"> |
||||
|
<input name="lawEnforcement" th:field="*{lawEnforcement}" class="form-control" type="text"> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div class="form-group"> |
||||
|
<label class="col-sm-2 control-label">企业名称:</label> |
||||
|
<div class="col-sm-4"> |
||||
|
<input name="enterpriseName" th:field="*{enterpriseName}" class="form-control" type="text"> |
||||
|
</div> |
||||
|
<label class="col-sm-2 control-label">企业税号:</label> |
||||
|
<div class="col-sm-4"> |
||||
|
<input name="enterpriseNumber" th:field="*{enterpriseNumber}" class="form-control" type="text"> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div class="form-group"> |
||||
|
<label class="col-sm-2 control-label">执法时间:</label> |
||||
|
<div class="col-sm-4"> |
||||
|
<div class="input-group date"> |
||||
|
<span class="input-group-addon"><i class="fa fa-calendar"></i></span> |
||||
|
<input name="enforcementTime" th:value="${#dates.format(enforcementRegistration.enforcementTime, 'yyyy-MM-dd')}" class="form-control" placeholder="yyyy-MM-dd" type="text"> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div class="form-group"> |
||||
|
<label class="col-sm-2 control-label">执法人员姓名:</label> |
||||
|
<div class="col-sm-4"> |
||||
|
<input name="lawEnforcer" th:field="*{lawEnforcer}" class="form-control" type="text"> |
||||
|
</div> |
||||
|
<label class="col-sm-2 control-label">执法人员联系方式:</label> |
||||
|
<div class="col-sm-4"> |
||||
|
<input name="lawEnforcerTel" th:field="*{lawEnforcerTel}" class="form-control" type="text"> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div class="form-group"> |
||||
|
<label class="col-sm-2 control-label">执法人员2:</label> |
||||
|
<div class="col-sm-4"> |
||||
|
<input name="lawEnforcerTwo" th:field="*{lawEnforcerTwo}" class="form-control" type="text"> |
||||
|
</div> |
||||
|
<label class="col-sm-2 control-label">执法人员联系方式2:</label> |
||||
|
<div class="col-sm-4"> |
||||
|
<input name="lawEnforcerTelTwo" th:field="*{lawEnforcerTelTwo}" class="form-control" type="text"> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div class="form-group"> |
||||
|
<label class="col-sm-2 control-label">辅助人员姓名:</label> |
||||
|
<div class="col-sm-4"> |
||||
|
<input name="subsidiaryer" th:field="*{subsidiaryer}" class="form-control" type="text"> |
||||
|
</div> |
||||
|
<label class="col-sm-2 control-label">辅助人员联系方式:</label> |
||||
|
<div class="col-sm-4"> |
||||
|
<input name="subsidiaryerTel" th:field="*{subsidiaryerTel}" class="form-control" type="text"> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div class="form-group"> |
||||
|
<label class="col-sm-2 control-label">执法事项:</label> |
||||
|
<div class="col-sm-10"> |
||||
|
<textarea name="lawEnforcementItem" class="form-control">[[*{lawEnforcementItem}]]</textarea> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div class="form-group"> |
||||
|
<label class="col-sm-2 control-label">执法依据:</label> |
||||
|
<div class="col-sm-10"> |
||||
|
<textarea name="lawEnforcementBasis" class="form-control">[[*{lawEnforcementBasis}]]</textarea> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div class="form-group"> |
||||
|
<label class="col-sm-2 control-label">执法结果:</label> |
||||
|
<div class="col-sm-4"> |
||||
|
<select class="form-control m-b" name="reslut" th:field="*{reslut}" > |
||||
|
<option value="0">合格</option> |
||||
|
<option value="1">不合格</option> |
||||
|
</select> |
||||
|
</div> |
||||
|
</div> |
||||
|
</form> |
||||
|
</div> |
||||
|
<th:block th:include="zdxtInclude :: footer" /> |
||||
|
<th:block th:include="zdxtInclude :: datetimepicker-js" /> |
||||
|
<script th:inline="javascript"> |
||||
|
var prefix = ctx + "system/registration"; |
||||
|
$("#form-registration-edit").validate({ |
||||
|
focusCleanup: true |
||||
|
}); |
||||
|
|
||||
|
function submitHandler() { |
||||
|
if ($.validate.form()) { |
||||
|
$.operate.save(prefix + "/edit", $('#form-registration-edit').serialize()); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
$("input[name='enforcementTime']").datetimepicker({ |
||||
|
format: "yyyy-mm-dd", |
||||
|
minView: "month", |
||||
|
autoclose: true |
||||
|
}); |
||||
|
$(function () { |
||||
|
setReadonly(); |
||||
|
}) |
||||
|
|
||||
|
function setReadonly() { |
||||
|
var inputs = document.getElementsByTagName("input"); |
||||
|
for (var i = 0; i < inputs.length; i++) { |
||||
|
$(inputs[i]).attr("readonly", true); |
||||
|
} |
||||
|
var textareas = document.getElementsByTagName("textarea"); |
||||
|
for (var i = 0; i < textareas.length; i++) { |
||||
|
$(textareas[i]).attr("readonly", true); |
||||
|
} |
||||
|
var selects = document.getElementsByTagName("select"); |
||||
|
for (var i = 0; i < selects.length; i++) { |
||||
|
$(selects[i]).attr("readonly", true); |
||||
|
} |
||||
|
} |
||||
|
</script> |
||||
|
</body> |
||||
|
</html> |
||||
@ -0,0 +1,131 @@ |
|||||
|
<!DOCTYPE html> |
||||
|
<html lang="zh" xmlns:th="http://www.thymeleaf.org" xmlns:shiro="http://www.pollix.at/thymeleaf/shiro"> |
||||
|
<head> |
||||
|
<th:block th:include="zdxtInclude :: header('登陆记录')"/> |
||||
|
<link type="text/css" href="/css/stat.css" rel="stylesheet" /> |
||||
|
</head> |
||||
|
<body> |
||||
|
<div class="statwrap"> |
||||
|
<h1 class="headtit">深圳市各类行政检查实施情况统计表</h1> |
||||
|
<div class="seltime"><i class="icsty"></i><span><select name="year"> |
||||
|
<option>2024</option> |
||||
|
<option>2023</option> |
||||
|
<option>2022</option> |
||||
|
</select>年度</span> |
||||
|
<span><select name="quarter"> |
||||
|
<option>2024-01</option> |
||||
|
</select>季度</span> |
||||
|
<span><select name="month"> |
||||
|
<option>2024-01</option> |
||||
|
<option>2024-02</option> |
||||
|
<option>2024-03</option> |
||||
|
</select>月度</span> |
||||
|
</div> |
||||
|
<div class="statit"><span id="one1" class="actit" onclick="setTab('one',1,4)">检查事项</span><span id="one2" onclick="setTab('one',2,4)">执法人员</span><span id="one3" onclick="setTab('one',3,4)">案件数量</span><span id="one4" onclick="setTab('one',4,4)" class="hover">企业类型</span></div> |
||||
|
<div id="con_one_1" class="tab_item" style="display: block;"> |
||||
|
<div class="listhead"> |
||||
|
<table width="100%" border="0" cellpadding="0" cellspacing="0" class="desktab"> |
||||
|
<colgroup> |
||||
|
<col width="20%" /> |
||||
|
<col width="75%" /> |
||||
|
</colgroup> |
||||
|
<tr class="trodd"> |
||||
|
<th>行政检查事项</th> |
||||
|
<th>行政检查次数</th> |
||||
|
</tr> |
||||
|
</table> |
||||
|
</div> |
||||
|
<div class="listbody"> |
||||
|
<div class="inner"> |
||||
|
<table width="100%" border="0" cellpadding="0" cellspacing="0" class="desktab"> |
||||
|
<colgroup> |
||||
|
<col width="20%" /> |
||||
|
<col width="75%" /> |
||||
|
</colgroup> |
||||
|
<tr> |
||||
|
<td>生态环境检查</td> |
||||
|
<td>35</td> |
||||
|
</tr> |
||||
|
<tr> |
||||
|
<td>商务领域检查</td> |
||||
|
<td>22</td> |
||||
|
</tr> |
||||
|
<tr> |
||||
|
<td>财务领域检查</td> |
||||
|
<td>18</td> |
||||
|
</tr> |
||||
|
<tr> |
||||
|
<td>水务领域检查</td> |
||||
|
<td>19</td> |
||||
|
</tr> |
||||
|
<tr> |
||||
|
<td>卫生健康检查</td> |
||||
|
<td>43</td> |
||||
|
</tr> |
||||
|
<tr> |
||||
|
<td>生态环境检查</td> |
||||
|
<td>35</td> |
||||
|
</tr> |
||||
|
<tr> |
||||
|
<td>商务领域检查</td> |
||||
|
<td>22</td> |
||||
|
</tr> |
||||
|
<tr> |
||||
|
<td>财务领域检查</td> |
||||
|
<td>18</td> |
||||
|
</tr> |
||||
|
<tr> |
||||
|
<td>水务领域检查</td> |
||||
|
<td>19</td> |
||||
|
</tr> |
||||
|
<tr> |
||||
|
<td>卫生健康检查</td> |
||||
|
<td>43</td> |
||||
|
</tr> |
||||
|
<tr> |
||||
|
<td>生态环境检查</td> |
||||
|
<td>35</td> |
||||
|
</tr> |
||||
|
<tr> |
||||
|
<td>商务领域检查</td> |
||||
|
<td>22</td> |
||||
|
</tr> |
||||
|
<tr> |
||||
|
<td>财政领域检查</td> |
||||
|
<td>18</td> |
||||
|
</tr> |
||||
|
<tr> |
||||
|
<td>水务领域检查</td> |
||||
|
<td>19</td> |
||||
|
</tr> |
||||
|
<tr> |
||||
|
<td>卫生健康检查</td> |
||||
|
<td>43</td> |
||||
|
</tr> |
||||
|
</table> |
||||
|
</div> |
||||
|
</div> |
||||
|
|
||||
|
</div> |
||||
|
<div id="con_one_2" class="tab_item"> |
||||
|
</div> |
||||
|
|
||||
|
<div id="con_one_3" class="tab_item"> |
||||
|
</div> |
||||
|
|
||||
|
<div id="con_one_4" class="tab_item"> |
||||
|
</div> |
||||
|
</div> |
||||
|
<th:block th:include="zdxtInclude :: footer"/> |
||||
|
<script> |
||||
|
function setTab(name,cursel,n){ |
||||
|
for(i=1;i<=n;i++){ |
||||
|
var menu=document.getElementById(name+i); |
||||
|
var con=document.getElementById("con_"+name+"_"+i); |
||||
|
menu.className=i==cursel?"actit":""; |
||||
|
con.style.display=i==cursel?"block":"none"; |
||||
|
} |
||||
|
} |
||||
|
</script> |
||||
|
</body> |
||||
|
</html> |
||||
@ -0,0 +1,32 @@ |
|||||
|
package com.zdxt.code.controller; |
||||
|
|
||||
|
import org.springframework.stereotype.Controller; |
||||
|
import org.springframework.ui.ModelMap; |
||||
|
import org.springframework.web.bind.annotation.GetMapping; |
||||
|
import org.springframework.web.bind.annotation.RequestMapping; |
||||
|
|
||||
|
@Controller |
||||
|
@RequestMapping("/statistical") |
||||
|
public class StatisticalController { |
||||
|
|
||||
|
private String prefix = "project/code/statistical"; |
||||
|
|
||||
|
private String prefix2 = "project/code/analysis"; |
||||
|
|
||||
|
@GetMapping("/view") |
||||
|
public String statistical(ModelMap mmp){ |
||||
|
|
||||
|
|
||||
|
return prefix + "/statistical"; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* 统计分析 |
||||
|
* @param mmp |
||||
|
* @return |
||||
|
*/ |
||||
|
@GetMapping("/analysis") |
||||
|
public String analysis(ModelMap mmp){ |
||||
|
return prefix2 + "/analysis"; |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,76 @@ |
|||||
|
package com.zdxt.code.service.impl; |
||||
|
|
||||
|
import cn.hutool.core.util.ObjectUtil; |
||||
|
import com.alibaba.fastjson.JSONArray; |
||||
|
import com.alibaba.fastjson.JSONObject; |
||||
|
import com.zdxt.code.service.IAccessTokenService; |
||||
|
import com.zdxt.code.service.SRZApiService; |
||||
|
import com.zdxt.code.utils.HttpUtil; |
||||
|
import org.springframework.beans.factory.annotation.Autowired; |
||||
|
import org.springframework.stereotype.Service; |
||||
|
|
||||
|
import java.util.HashMap; |
||||
|
import java.util.Map; |
||||
|
|
||||
|
@Service |
||||
|
public class SRZApiServiceImpl implements SRZApiService { |
||||
|
|
||||
|
@Autowired |
||||
|
private IAccessTokenService tokenService; |
||||
|
|
||||
|
@Override |
||||
|
public void querySRZUserList(Integer page,Integer pageSize) { |
||||
|
String srzToken = tokenService.getSRZToken(new HashMap<>()); |
||||
|
Map<String,Object> params = new HashMap<>(); |
||||
|
Integer pageIndex = 0; |
||||
|
Integer pageSizeIndex = 1; |
||||
|
params.put("page",page * pageIndex); |
||||
|
params.put("pageSize",pageSize * pageSizeIndex); |
||||
|
try { |
||||
|
String s = HttpUtil.HttpSendPost("/ebus/sfrzhqxglmk/sysPullTacc", params, null, srzToken); |
||||
|
JSONObject jsonObject = JSONObject.parseObject(s); |
||||
|
String data = jsonObject.getString("data"); |
||||
|
if(ObjectUtil.isNotEmpty(data)){ |
||||
|
JSONArray objects = JSONArray.parseArray(data); |
||||
|
//判断data不为空,继续迭代调用
|
||||
|
pageIndex++; |
||||
|
pageSizeIndex++; |
||||
|
this.querySRZUserList(page * pageIndex,pageSize * pageSizeIndex); |
||||
|
} |
||||
|
}catch (Exception e){ |
||||
|
e.printStackTrace(); |
||||
|
}finally { |
||||
|
//调用结束之后,注销token
|
||||
|
tokenService.destroySRZToken(srzToken); |
||||
|
} |
||||
|
|
||||
|
} |
||||
|
|
||||
|
@Override |
||||
|
public void querySRZOrg(Integer page,Integer pageSize) { |
||||
|
String srzToken = tokenService.getSRZToken(new HashMap<>()); |
||||
|
Map<String,Object> params = new HashMap<>(); |
||||
|
Integer pageIndex = 0; |
||||
|
Integer pageSizeIndex = 1; |
||||
|
params.put("page",page * pageIndex); |
||||
|
params.put("pageSize",pageSize * pageSizeIndex); |
||||
|
try { |
||||
|
String s = HttpUtil.HttpSendPost("/ebus/sfrzhqxglmk/sysPullOrg", params, null, srzToken); |
||||
|
JSONObject jsonObject = JSONObject.parseObject(s); |
||||
|
String data = jsonObject.getString("data"); |
||||
|
if(ObjectUtil.isNotEmpty(data)){ |
||||
|
JSONArray objects = JSONArray.parseArray(data); |
||||
|
//判断data不为空,继续迭代调用
|
||||
|
pageIndex++; |
||||
|
pageSizeIndex++; |
||||
|
this.querySRZOrg(page * pageIndex,pageSize * pageSizeIndex); |
||||
|
} |
||||
|
}catch (Exception e){ |
||||
|
e.printStackTrace(); |
||||
|
}finally { |
||||
|
//调用结束之后,注销token
|
||||
|
tokenService.destroySRZToken(srzToken); |
||||
|
} |
||||
|
|
||||
|
} |
||||
|
} |
||||
Loading…
Reference in new issue