btxtgxq-system-population/src/main/resources/templates/populationinfo/list-bigdata.html

806 lines
36 KiB
HTML
Raw Normal View History

<!doctype html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<base th:href="${#request.getContextPath() + '/'}">
<meta charset="utf-8">
<meta name="renderer" content="webkit">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=0">
<link rel="stylesheet" href="assets/fonts/font-awesome/css/font-awesome.css"/>
<link rel="stylesheet" href="assets/layuiadmin/layui/css/layui.css" media="all">
<link rel="stylesheet" href="assets/layuiadmin/style/admin.css" media="all">
<style>
.layui-form-select{
min-width:200px!important;
}
.layui-select-title{
min-width:200px!important;
}
.layui-select-title input{
min-width:200px!important;
}
#queryTab{
background-color: #FFFFFF;
}
</style>
</head>
<body>
<div class="layui-fluid layui-anim layui-anim-fadein">
<div class="layui-row layui-col-space10">
<div class="layui-col-xs2">
<div class="layui-card" id="queryTab">
<form class="layui-form layui-form-pane" lay-filter="dataForm">
<div class="layui-form-item layui-form-text">
<label class="layui-form-label">人员所在街道</label>
<input type="hidden" id="creatorArea1" name="creatorArea1" class="layui-input" value="" maxlength="36">
<div class="layui-input-block layui-form layui-text" id="streetNameSelectTemplateBox" lay-filter="streetNameSelectTemplateBox"></div>
<script id="streetNameSelectTemplate" type="text/html">
<select id="street" name="street" lay-filter="street" lay-verify="required" lay-search>
<option value="">请选择街道</option>
{{# for(var i = 0, item; item = d.list[i++];) { }}
{{# if(d.jiedao == item.name){ }}
<option selected value="{{item.id}}">{{item.name}}</option>
{{# } else { }}
<option value="{{item.id}}">{{item.name}}</option>
{{# } }}
{{# } }}
</select>
</script>
</div>
<div class="layui-form-item layui-form-text">
<label class="layui-form-label">人员所在社区</label>
<input type="hidden" id="creatorArea2" name="creatorArea2" class="layui-input" value="" maxlength="36">
<div class="layui-input-block layui-form layui-text" id="communityNameSelectTemplateBox" lay-filter="communityNameSelectTemplateBox"></div>
<script id="communityNameSelectTemplate" type="text/html">
<select id="community" name="community" lay-filter="community" lay-verify="required" lay-search>
<option value="">请选择社区</option>
{{# for(var i = 0, item; item = d[i++];) { }}
<option value="{{item.communityId}}">{{item.communityName}}</option>
{{# } }}
</select>
</script>
</div>
<div class="layui-form-item layui-form-text">
<label class="layui-form-label">人员所在小区</label>
<div class="layui-input-block layui-form layui-text" id="residentialNameSelectTemplateBox" lay-filter="residentialNameSelectTemplateBox"></div>
<script id="residentialNameSelectTemplate" type="text/html">
<select id="residentialId" name="residentialId" lay-filter="residentialId" lay-verify="required" lay-search>
<option value="">请选择小区</option>
{{# for(var i = 0, item; item = d[i++];) { }}
<option value="{{item.residentialId}}">{{item.name}}</option>
{{# } }}
</select>
</script>
</div>
<div class="layui-form-item layui-form-text">
<label class="layui-form-label">人员所在楼/排</label>
<div class="layui-input-block layui-form layui-text" id="buildingNameSelectTemplateBox" lay-filter="buildingNameSelectTemplateBox"></div>
<script id="buildingNameSelectTemplate" type="text/html">
<select id="buildingId" name="buildingId" lay-filter="buildingId" lay-verify="required" lay-search>
<option value="">请选择楼/排</option>
{{# for(var i = 0, item; item = d[i++];) { }}
<option value="{{item.buildingId}}">{{item.name}}</option>
{{# } }}
</select>
</script>
</div>
<div class="layui-form-item layui-form-text">
<label class="layui-form-label">人员所在房屋</label>
<div class="layui-input-block layui-form layui-text" id="houseNameSelectTemplateBox" lay-filter="houseNameSelectTemplateBox"></div>
<script id="houseNameSelectTemplate" type="text/html">
<select id="houseId" name="houseId" lay-filter="houseId" lay-verify="required" lay-search>
<option value="">请选择房屋</option>
{{# for(var i = 0, item; item = d[i++];) { }}
<option value="{{item.houseId}}">{{item.affiliationUnit}} / {{item.affiliationFloors}} / {{item.houseNum}}</option>
{{# } }}
</select>
</script>
</div>
</form>
</div>
</div>
<div class="layui-col-xs7">
<div class="layui-card">
<div class="layui-card-body">
<div class="test-table-reload-btn" style="margin-bottom: 10px;">
<div class="layui-inline">
<input type="text" id="name" class="layui-input search-item" placeholder="请输入姓名">
</div>
<div class="layui-inline layui-form search-item" id="idcardTypeSelectTemplateBox" lay-filter="idcardTypeSelectTemplateBox"></div>
<div class="layui-inline">
<input type="text" id="idcard" class="layui-input search-item" placeholder="请输入证件号">
</div>
<button type="button" id="search" class="layui-btn layui-btn-sm">
<i class="fa fa-lg fa-search"></i> 搜索
</button>
<button type="button" id="clear-search" class="layui-btn layui-btn-sm">
<i class="fa fa-lg fa-close"></i> 清空条件
</button>
</div>
<table class="layui-hide" id="dataTable" lay-filter="dataTable"></table>
<!-- 表头按钮组 -->
<script type="text/html" id="headerToolBar">
<div class="layui-btn-group">
<button type="button" class="layui-btn layui-btn-normal layui-btn-sm" lay-event="updateEvent">
<i class="fa fa-lg fa-edit"></i> 查看
</button>
</div>
</script>
</div>
</div>
</div>
<div class="layui-col-xs3">
<div style="width:100%; height:400px; margin-top: 100px" id="dataPie"></div>
</div>
</div>
</div>
<script id="idcardTypeSelectTemplate" type="text/html" lay-search>
<select id="idcardType" name="idcardType">
<option value="">请选择证件类型</option>
{{# for(var i = 0, item; item = d[i++];) { }}
<option value="{{item.dictionaryName}}">{{item.dictionaryName}}</option>
{{# } }}
</select>
</script>
<script src="assets/layuiadmin/layui/layui.js"></script>
<script src="assets/js/vendor/viewer/viewer.min.js"></script>
<script src="assets/js/echarts.js"></script>
<script src="assets/js/echarts-gl.js"></script>
<script>
layui.config({
base: 'assets/layuiadmin/'
}).extend({
index: 'lib/index'
}).use(['index', 'table', 'form', 'laytpl', 'laydate', 'common'], function() {
var $ = layui.$;
var $win = $(window);
var table = layui.table;
var admin = layui.admin;
var laydate = layui.laydate;
var form = layui.form;
var laytpl = layui.laytpl;
var common = layui.common;
var resizeTimeout = null;
var tableUrl = 'api/populationinfo/listpage-system?[[${params}]]';
var countUrl = 'api/populationinfo/count-system?[[${params}]]';
$("#queryTab").height($win.height() - 30);
$("#dataPie").height($win.height() - 200);
function initPie(groupBy, data) {
console.log(groupBy)
$.ajax({
url: countUrl + "&groupBy=" + groupBy,
cache: false,
data: data,
type: 'get',
dataType: 'json',
success: function (dataSource) {
const paramsList = dataSource.map((item, index) => {
return {
...item,
shading: "realistic"
};
});
// echarts清除旧的循环任务
echarts.dispose(document.getElementById("dataPie"))
var option = getPie3D(paramsList);
var elem = echarts.init(document.getElementById("dataPie"));
elem.setOption(option);
}
});
}
initPie("getCommunity", {});
// 初始化街道下拉选择
var jiedao = "[[${jiedao}]]";
initStreetNameSelect();
initResidentialNameSelect('9999', '9999');
initBuildingNameSelect("9999");
initHouseNameSelect("9999");
// 初始化街道下拉选择
function initStreetNameSelect() {
$.ajax({
url: 'api/residential/getStreetList',
type: 'get',
dataType: 'json',
success: function (data) {
laytpl(document.getElementById('streetNameSelectTemplate').innerHTML).render({jiedao: jiedao , list: data}, function(html) {
document.getElementById('streetNameSelectTemplateBox').innerHTML = html;
});
form.render('select', 'streetNameSelectTemplateBox');
if (jiedao) {
$("#creatorArea1").val(jiedao);
initCommunityNameSelect($("#street").val());
}else{
initCommunityNameSelect('9999');
}
}
});
}
// 初始化街道变化
form.on('select(street)', function(data){
var selectedText = data.elem[data.elem.selectedIndex].text;
$("#creatorArea1").val(selectedText);
if(data.value) {
initCommunityNameSelect(data.value);
}else {
initCommunityNameSelect('9999');
}
});
// 初始化社区变化
form.on('select(community)', function(data){
var streetValue = $("#street").val();
var selectedText = data.elem[data.elem.selectedIndex].text;
$("#creatorArea2").val(selectedText);
if(data.value) {
initResidentialNameSelect(streetValue, data.value);
}else {
initResidentialNameSelect(streetValue, '');
}
});
// 初始化社区下拉选择
function initCommunityNameSelect(areaId) {
$.ajax({
url: 'api/residential/getCommunityList?areaId=' + areaId,
type: 'get',
dataType: 'json',
success: function (data) {
laytpl(document.getElementById('communityNameSelectTemplate').innerHTML).render(data, function(html) {
document.getElementById('communityNameSelectTemplateBox').innerHTML = html;
});
form.render('select', 'communityNameSelectTemplateBox');
initResidentialNameSelect('9999', '9999');
initBuildingNameSelect("9999");
initHouseNameSelect("9999");
}
});
}
// 初始化小区变化
form.on('select(residentialId)', function(data){
if(data.value) {
initBuildingNameSelect(data.value);
}else {
initBuildingNameSelect('9999');
}
});
// 初始化小区下拉选择
function initResidentialNameSelect(street, community) {
$.ajax({
url: 'api/residential/list?street=' + street + '&community=' + community,
type: 'get',
dataType: 'json',
success: function (data) {
laytpl(document.getElementById('residentialNameSelectTemplate').innerHTML).render(data, function(html) {
document.getElementById('residentialNameSelectTemplateBox').innerHTML = html;
});
form.render('select', 'residentialNameSelectTemplateBox');
initBuildingNameSelect("9999");
initHouseNameSelect("9999");
}
});
}
// 初始化楼栋变化
form.on('select(buildingId)', function(data){
if(data.value) {
initHouseNameSelect(data.value);
}else {
initHouseNameSelect('9999');
}
});
// 初始化楼/排下拉选择
function initBuildingNameSelect(residentialId) {
$.ajax({
url: 'api/building/list?residentialId=' + residentialId,
type: 'get',
dataType: 'json',
success: function (data) {
if(data.length < 1 && residentialId != 9999) {
layer.msg("该小区暂无录入楼/排");
}
laytpl(document.getElementById('buildingNameSelectTemplate').innerHTML).render(data, function(html) {
document.getElementById('buildingNameSelectTemplateBox').innerHTML = html;
});
form.render('select', 'buildingNameSelectTemplateBox');
initHouseNameSelect("9999");
}
});
}
// 初始化房屋下拉选择
function initHouseNameSelect(buildingId) {
$.ajax({
url: 'api/house/list?buildingId=' + buildingId,
type: 'get',
dataType: 'json',
success: function (data) {
if(data.length < 1 && buildingId != 9999) {
layer.msg("该楼/排暂无录入房屋");
}
laytpl(document.getElementById('houseNameSelectTemplate').innerHTML).render(data, function(html) {
document.getElementById('houseNameSelectTemplateBox').innerHTML = html;
});
form.render('select', 'houseNameSelectTemplateBox');
}
});
}
// 初始化证件类型下拉选择
function initIdcardTypeSelect() {
$.ajax({
url: 'api/datadictionary/listdictionarybyparentid/76c5044f-805a-4313-b1e8-79e966b97c0d',
type: 'get',
dataType: 'json',
success: function (data) {
laytpl(document.getElementById('idcardTypeSelectTemplate').innerHTML).render(data, function(html) {
document.getElementById('idcardTypeSelectTemplateBox').innerHTML = html;
});
form.render('select', 'idcardTypeSelectTemplateBox');
}
});
}
initIdcardTypeSelect();
// 初始化表格
function initTable() {
table.render({
elem: '#dataTable',
id: 'dataTable',
url: tableUrl,
width: admin.screen() > 1 ? '100%' : '',
height: $win.height() - 90,
defaultToolbar: [],
limit: 20,
limits: [20, 40, 60, 80, 100, 200],
toolbar: '#headerToolBar',
request: {
pageName: 'page',
limitName: 'rows'
},
cols: [
[
{type:'checkbox', fixed: 'left'},
{field:'rowNum', width:80, title: '序号', fixed: 'left', align:'center', templet: '<span>{{d.LAY_INDEX}}</span>'},
// {field: 'populationInfoId', width: 130, title: 'ID', align:'center',
// templet: function(row) {
// var rowData = row[this.field];
// if(typeof(rowData) === 'undefined' || rowData == null || rowData == '') {
// return '-';
// }
// return rowData;
// }
// },
{field: 'name', width: 130, title: '姓名', align:'center',
templet: function(row) {
var rowData = row[this.field];
if(typeof(rowData) === 'undefined' || rowData == null || rowData == '') {
return '-';
}
return rowData;
}
},
{field: 'idcardType', width: 130, title: '证件类型', align:'center',
templet: function(row) {
var rowData = row[this.field];
if(typeof(rowData) === 'undefined' || rowData == null || rowData == '') {
return '-';
}
return rowData;
}
},
{field: 'idcard', width: 180, title: '证件号码', align:'center',
templet: function(row) {
var rowData = row[this.field];
if(typeof(rowData) === 'undefined' || rowData == null || rowData == '') {
return '-';
}
return rowData;
}
},
{field: 'birthday', width: 130, title: '出生日期', align:'center',
templet: function(row) {
var rowData = row[this.field];
if(typeof(rowData) === 'undefined' || rowData == null || rowData == '') {
return '-';
}
return rowData;
}
},
{field: 'sex', width: 130, title: '性别', align:'center',
templet: function(row) {
var rowData = row[this.field];
if(typeof(rowData) === 'undefined' || rowData == null || rowData == '') {
return '-';
}
return rowData;
}
},
{field: 'nation', width: 130, title: '民族', align:'center',
templet: function(row) {
var rowData = row[this.field];
if(typeof(rowData) === 'undefined' || rowData == null || rowData == '') {
return '-';
}
return rowData;
}
},
// {field: 'label', width: 380, title: '标签', align:'center',
// templet: function(row) {
// var rowData = row['labelList'];
// if(typeof(rowData) === 'undefined' || rowData == null || rowData == '') {
// return '-';
// }
// var b = "";
// for(var i = 0 ; i < rowData.length; i++) {
// b = b + '<button type="button" class="layui-btn layui-btn-xs" style="background-color: ' + rowData[i].color + ';">' + rowData[i].name + '</button>';
// }
// return b;
// }
// },
{field: 'creatorName', width: 120, title: '当前认领人', align:'center',
templet: function(row) {
var rowData = row[this.field];
if(typeof(rowData) === 'undefined' || rowData == null || rowData == '') {
return '-';
}
return rowData;
}
}
]
],
page: true,
parseData: function(data) {
return {
'code': 0,
'msg': '',
'count': data.total,
'data': data.rows
};
}
});
}
// 重载表格
function reloadTable(currentPage) {
var data = getParams();
table.reload('dataTable', {
url: tableUrl,
where: data,
page: {
curr: currentPage
},
height: $win.height() - 90,
});
}
function getParams() {
var dataParams = {
name: $('#name').val(),
idcardType: $('#idcardType').val(),
idcard: $('#idcard').val(),
creatorArea1: "",
creatorArea2: "",
residentialId: "",
buildingId: "",
houseId:""
};
if ($("#creatorArea1").val() == undefined || $("#creatorArea1").val() == "" || $("#creatorArea1").val() == "请选择街道" ) {
initPie("getCommunity", dataParams);
return dataParams;
}else{
dataParams.creatorArea1 = $("#creatorArea1").val();
}
if ($("#creatorArea2").val() == undefined || $("#creatorArea2").val() == "" || $("#creatorArea2").val() == "请选择社区" ) {
initPie("getStreet", dataParams);
return dataParams;
}else{
dataParams.creatorArea2 = $("#creatorArea2").val();
}
if ($("#residentialId").val() == undefined || $("#residentialId").val() == "" || $("#creatorArea2").val() == "请选择小区" ) {
//initPie("getResidential", dataParams);
return dataParams;
}else{
dataParams.residentialId = $("#residentialId").val();
}
if ($("#buildingId").val() == undefined || $("#buildingId").val() == "" || $("#creatorArea2").val() == "请选择楼/排" ) {
//initPie("getBuilding", dataParams);
return dataParams;
}else{
dataParams.residentialId = "";
dataParams.buildingId = $("#buildingId").val();
}
if ($("#houseId").val() == undefined || $("#houseId").val() == "" || $("#creatorArea2").val() == "请选择房屋" ) {
//initPie("getHouse", dataParams);
return dataParams;
}else{
dataParams.residentialId = "";
dataParams.buildingId = "";
dataParams.houseId = $("#houseId").val();
}
return dataParams;
}
initTable();
// 事件 - 页面变化
$win.on('resize', function() {
clearTimeout(resizeTimeout);
resizeTimeout = setTimeout(function() {
reloadTable();
}, 500);
});
// 事件 - 搜索
$(document).on('click', '#search', function() {
reloadTable(1);
});
$(document).on('click', '#clear-search', function() {
initStreetNameSelect("9999");
$("#creatorArea1").val("");
$("#creatorArea2").val("");
$("#residential").val("");
$("#building").val("");
$("#house").val("");
$('#name').val("");
$('#idcard').val("");
initIdcardTypeSelect();
$('#idcardType').val("");
reloadTable(1);
});
// 事件 - 增删改
table.on('toolbar(dataTable)', function(obj) {
var layEvent = obj.event;
var checkStatus = table.checkStatus('dataTable');
var checkDatas = checkStatus.data;
if(layEvent === 'updateEvent') {
if(checkDatas.length === 0) {
layer.msg("至少选择一个人员");
} else if(checkDatas.length > 1) {
layer.msg("只能选择一个人员");
} else {
layer.open({
type: 2,
title: '个人信息卡片',
closeBtn: 1,
area: ['80%', '80%'],
shadeClose: false,
anim: 2,
content: 'pages/housepopulation/index.html#/population-info?populationInfoId=' + checkDatas[0].populationInfoId,
end: function() {
reloadTable();
}
});
}
}
});
function getParametricEquation(startRatio, endRatio) {
let midRatio = (startRatio + endRatio) / 2;
let startRadian = startRatio * Math.PI * 2;
let endRadian = endRatio * Math.PI * 2;
let midRadian = midRatio * Math.PI * 2;
let offsetX = 0;
let offsetY = 0;
let offsetZ = 0;
let tmp;
return {
u: {
min: 0,
max: Math.PI * 2,
step: Math.PI / 250,
},
v: {
min: 0,
max: Math.PI,
step: Math.PI / 50,
},
x: function (u, v) {
if (midRatio < 0.5) {
if (u < startRadian || u > midRadian + Math.PI) {
tmp =
u - Math.PI - midRadian < 0
? u + Math.PI - midRadian
: u - Math.PI - midRadian;
return (
offsetX +
(Math.sin(startRadian) * tmp) /
(Math.PI - midRadian + startRadian)
);
}
if (u > endRadian && u < midRadian + Math.PI) {
tmp = midRadian + Math.PI - u;
return (
offsetX +
(Math.sin(endRadian) * tmp) /
(Math.PI - midRadian + startRadian)
);
}
} else {
if (u < startRadian && u > midRadian - Math.PI) {
tmp = u + Math.PI - midRadian;
return (
offsetX +
(Math.sin(startRadian) * tmp) /
(Math.PI - midRadian + startRadian)
);
}
if (u > endRadian || u < midRadian - Math.PI) {
tmp =
midRadian - Math.PI - u < 0
? midRadian + Math.PI - u
: midRadian - Math.PI - u;
return (
offsetX +
(Math.sin(endRadian) * tmp) /
(Math.PI - midRadian + startRadian)
);
}
}
return offsetX + Math.sin(v) * Math.sin(u);
},
y: function (u, v) {
if (midRatio < 0.5) {
if (u < startRadian || u > midRadian + Math.PI) {
tmp =
u - Math.PI - midRadian < 0
? u + Math.PI - midRadian
: u - Math.PI - midRadian;
return (
offsetX +
(Math.cos(startRadian) * tmp) /
(Math.PI - midRadian + startRadian)
);
}
if (u > endRadian && u < midRadian + Math.PI) {
tmp = midRadian + Math.PI - u;
return (
offsetX +
(Math.cos(endRadian) * tmp) /
(Math.PI - midRadian + startRadian)
);
}
} else {
if (u < startRadian && u > midRadian - Math.PI) {
tmp = u + Math.PI - midRadian;
return (
offsetX +
(Math.cos(startRadian) * tmp) /
(Math.PI - midRadian + startRadian)
);
}
if (u > endRadian || u < midRadian - Math.PI) {
tmp =
midRadian - Math.PI - u < 0
? midRadian + Math.PI - u
: midRadian - Math.PI - u;
return (
offsetX +
(Math.cos(endRadian) * tmp) /
(Math.PI - midRadian + startRadian)
);
}
}
return offsetX + Math.sin(v) * Math.cos(u);
},
z: function (u, v) {
return offsetZ + (Math.cos(v) > 0 ? 0.1 : -0.1);
},
};
}
// 生成模拟 3D 饼图的配置项
function getPie3D(pieData) {
let series = [];
let sumValue = 0;
let startValue = 0;
let endValue = 0;
let legendData = [];
for (let i = 0; i < pieData.length; i++) {
sumValue += pieData[i].value;
let seriesItem = {
name: !pieData[i].name ? `series${i}` : pieData[i].name,
type: "surface",
parametric: true,
wireframe: {
show: false,
},
pieData: pieData[i],
pieStatus: {
selected: false,
hovered: false,
}
};
if (pieData[i].itemStyle) {
let itemStyle = {};
if (pieData[i].itemStyle.color) {
itemStyle.color = pieData[i].itemStyle.color;
}
if (pieData[i].itemStyle.opacity) {
itemStyle.opacity = pieData[i].itemStyle.opacity;
}
seriesItem.itemStyle = itemStyle;
}
series.push(seriesItem);
}
for (let i = 0; i < series.length; i++) {
endValue = startValue + series[i].pieData.value;
series[i].pieData.startRatio = startValue / sumValue;
series[i].pieData.endRatio = endValue / sumValue;
series[i].parametricEquation = getParametricEquation(series[i].pieData.startRatio, series[i].pieData.endRatio);
startValue = endValue;
legendData.push(series[i].name);
}
let option = {
legend: {
// type:'scroll',
show: true,
data: legendData,
textStyle: {
color: "#FFF"
}
},
tooltip: {
formatter: (params) => {
if (params.seriesName !== "mouseoutSeries") {
return `${
params.seriesName
}<br/><span style="display:inline-block;margin-right:5px;border-radius:10px;width:10px;height:10px;background-color:${
params.color
};"></span>${
option.series[params.seriesIndex].pieData
.value
}`;
}
},
},
xAxis3D: {
min: -1,
max: 1,
},
yAxis3D: {
min: -1,
max: 1,
},
zAxis3D: {
min: -1,
max: 1,
},
grid3D: {
show: false,
boxHeight: 100, // 厚度
top: 4,
left: 0,
viewControl: {
//3d效果可以放大、旋转等请自己去查看官方配置
alpha: 43, // 角度
beta: 0, // 饼块开始位置角度
rotateSensitivity: 0,
zoomSensitivity: 0,
panSensitivity: 0,
autoRotate: false,
},
light: {
main: {
color: "rgb(85, 84, 84)", // 主光源的颜色。
shadow: false, // 主光源是否投射阴影
alpha: 80, // 主光源绕 x 轴,即上下旋转的角度
},
},
},
series: series,
};
return option;
}
});
</script>
</body>
</html>