btxtgxq-system-population/src/main/resources/templates/populationinfo/list-bigdata.html
2024-01-30 15:50:49 +08:00

1333 lines
60 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!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;
}
.tabLevel1 > .layui-form-checkbox span {
background-color: #db4343;
}
.tabLevel2 > .layui-form-checkbox span {
background-color: #F48208;
}
.tabLevel3 > .layui-form-checkbox span {
background-color: #F4CF08;
}
.tabLevel4 > .layui-form-checkbox span {
background-color: #08A7F4;
}
.tabLevel5 > .layui-form-checkbox span {
background-color: #08F422;
}
.tabLevelGroup > .layui-form-checkbox:nth-of-type(1) span {
background-color: #db4343;
}
.tabLevelGroup > .layui-form-checkbox:nth-of-type(2) span {
background-color: #F48208;
}
.tabLevelGroup > .layui-form-checkbox:nth-of-type(3) span {
background-color: #F4CF08;
}
.tabLevelGroup > .layui-form-checkbox:nth-of-type(4) span {
background-color: #08A7F4;
}
.tabLevelGroup > .layui-form-checkbox:nth-of-type(5) span {
background-color: #08F422;
}
.layui-form-checkbox {
line-height: 20px !important;
padding-right: 20px !important;
height: 20px !important;
}
.layui-form-checkbox i{
height: 18px !important;
width: 20px !important;
}
.layui-form-checkbox span{
font-size: 11px !important;
padding: 0 2px !important;
}
</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>
<div class="layui-inline layui-form search-item" >
<select id="type" name="type">
<option value="">请选择人员类型</option>
<option value="户籍人口">户籍人口</option>
<option value="常住人口">常住人口</option>
<option value="流动人口">流动人口</option>
</select>
</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>
<div class="layui-input-block layui-form tabLevelGroup" style="margin-left: 0px;margin-top: -2px;min-height: 24px;">
<input type="checkbox" name="tabLevelGroup" value="#db4343" title="特别关注">
<input type="checkbox" name="tabLevelGroup" value="#F48208" title="及时关注">
<input type="checkbox" name="tabLevelGroup" value="#F4CF08" title="一般关注">
<input type="checkbox" name="tabLevelGroup" value="#08A7F4" title="重点关注">
<input type="checkbox" name="tabLevelGroup" value="#08F422" title="日常关注">
</div>
<div class="layui-form-item" id="labelSelectTemplateBox" lay-filter="labelSelectTemplateBox"></div>
<script id="labelSelectTemplate" type="text/html">
{{# var tabLevel1 = 0; var tabLevel2 = 0; var tabLevel3 = 0; var tabLevel4 = 0; var tabLevel5 = 0; }}
{{# for(var i = 0, item; item = d[i++];) { }}
{{# if(item.level == 1) { }}
{{# tabLevel1 = tabLevel1 + 1; }}
{{# } }}
{{# if(item.level == 2) { }}
{{# tabLevel2 = tabLevel2 + 1; }}
{{# } }}
{{# if(item.level == 3) { }}
{{# tabLevel3 = tabLevel3 + 1; }}
{{# } }}
{{# if(item.level == 4) { }}
{{# tabLevel4 = tabLevel4 + 1; }}
{{# } }}
{{# if(item.level == 5) { }}
{{# tabLevel5= tabLevel5 + 1; }}
{{# } }}
{{# } }}
{{# if(tabLevel1 > 0 ) { }}
<div class="layui-input-block layui-form tabLevel1" style="margin-left: 0px;margin-top: -2px;min-height: 24px;">
{{# for(var i = 0, item; item = d[i++];) { }}
{{# if(item.level == 1) { }}
<input type="checkbox" name="tabLevel1" value="{{item.id}}" title="{{item.name}}">
{{# } }}
{{# } }}
</div>
{{# } }}
{{# if(tabLevel2 > 0 ) { }}
<div class="layui-input-block layui-form tabLevel2" style="margin-left: 0px;margin-top: -2px;min-height: 24px;">
{{# for(var i = 0, item; item = d[i++];) { }}
{{# if(item.level == 2) { }}
<input type="checkbox" name="tabLevel2" value="{{item.id}}" title="{{item.name}}">
{{# } }}
{{# } }}
</div>
{{# } }}
{{# if(tabLevel3 > 0 ) { }}
<div class="layui-input-block layui-form tabLevel3" style="margin-left: 0px;margin-top: -2px;min-height: 24px;">
{{# for(var i = 0, item; item = d[i++];) { }}
{{# if(item.level == 3) { }}
<input type="checkbox" name="tabLevel3" value="{{item.id}}" title="{{item.name}}">
{{# } }}
{{# } }}
</div>
{{# } }}
{{# if(tabLevel4 > 0 ) { }}
<div class="layui-input-block layui-form tabLevel4" style="margin-left: 0px;margin-top: -2px;min-height: 24px;">
{{# for(var i = 0, item; item = d[i++];) { }}
{{# if(item.level == 4) { }}
<input type="checkbox" name="tabLevel4" value="{{item.id}}" title="{{item.name}}">
{{# } }}
{{# } }}
</div>
{{# } }}
{{# if(tabLevel5 > 0 ) { }}
<div class="layui-input-block layui-form tabLevel5" style="margin-left: 0px;margin-top: -2px;min-height: 24px;">
{{# for(var i = 0, item; item = d[i++];) { }}
{{# if(item.level == 5) { }}
<input type="checkbox" name="tabLevel5" value="{{item.id}}" title="{{item.name}}">
{{# } }}
{{# } }}
</div>
{{# } }}
</script>
<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>
<button type="button" class="layui-btn layui-btn-sm" lay-event="excelOutEvent">
Excel导出(未脱敏)
</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>
<div style="display: none" id="exportExcel">
<div class="layui-form-item" pane="">
<label class="layui-form-label">导出内容</label>
<div class="layui-input-block layui-form" id="exportFieldTemplateBox" lay-filter="exportFieldTemplateBox" pane=""></div>
<script id="exportFieldTemplate" type="text/html">
{{# for(var i = 0, item; item = d[i++];) { }}
<input type="checkbox" name="exportFieldTemplate" value="{{item.key}}" title="{{item.name}}" data-color="{{item.color}}">
{{# } }}
</script>
</div>
<div class="layui-form-item layui-layout-admin">
<div class="layui-input-block">
<div class="layui-footer" style="left: 0;">
<button type="button" id="excelExport1" class="layui-btn layui-btn-sm">
<i class="fa fa-lg fa-flag-checkered"></i> 全选
</button>
<button type="button" id="excelExport2" class="layui-btn layui-btn-sm">
<i class="fa fa-lg fa-flag-checkered"></i> 选择必填内容
</button>
<button type="button" id="excelExport" class="layui-btn layui-btn-sm">
<i class="fa fa-lg fa-file-excel-o"></i> 开始导出Excel
</button>
</div>
</div>
</div>
</div>
<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 src="assets/js/echarts-auto-tooltip.js"></script>
<script>
layui.config({
base: 'assets/layuiadmin/'
}).extend({
index: 'lib/index', //主入口模块
excel: 'layui_exts/excel'
}).use(['index', 'table', 'form', 'laytpl', 'laydate', 'excel', '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 excel = layui.excel;
var common = layui.common;
var resizeTimeout = null;
var tableUrl = 'api/populationinfo/listpage-system?[[${params}]]';
var countUrl = 'api/populationinfo/count-system?[[${params}]]';
function exportFieldTemplate(data) {
laytpl(document.getElementById('exportFieldTemplate').innerHTML).render(data, function(html) {
document.getElementById('exportFieldTemplateBox').innerHTML = html;
form.render();
});
}
$("#queryTab").height($win.height() - 30);
$("#dataPie").height($win.height() - 200);
// 初始化标签
function initLabelSelect() {
$.ajax({
url: 'api/populationinfo/label',
cache: false,
type: 'get',
dataType: 'json',
success: function (data) {
laytpl(document.getElementById('labelSelectTemplate').innerHTML).render(data, function(html) {
document.getElementById('labelSelectTemplateBox').innerHTML = html;
});
form.render();
}
});
}
function getTabLevelGroup() {
var values = new Array();
$('input[name="tabLevelGroup"]:checked').each(function() {
values.push($(this).val()); // 将选中的值添加到数组中
});
if (values.length < 1) {
return "";
}
return values.join(",");
}
function getTabLevel() {
var values = new Array();
$('input[name="tabLevel1"]:checked').each(function() {
values.push($(this).val()); // 将选中的值添加到数组中
});
$('input[name="tabLevel2"]:checked').each(function() {
values.push($(this).val()); // 将选中的值添加到数组中
});
$('input[name="tabLevel3"]:checked').each(function() {
values.push($(this).val()); // 将选中的值添加到数组中
});
$('input[name="tabLevel4"]:checked').each(function() {
values.push($(this).val()); // 将选中的值添加到数组中
});
$('input[name="tabLevel5"]:checked').each(function() {
values.push($(this).val()); // 将选中的值添加到数组中
});
if (values.length < 1) {
return "";
}
return values.join(",");
}
initLabelSelect();
function initPie(groupBy, data) {
$.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"
};
});
console.log(paramsList);
// echarts清除旧的循环任务
echarts.dispose(document.getElementById("dataPie"))
var option = getPie3D(paramsList);
const elem = echarts.init(document.getElementById("dataPie"));
console.log("option", option);
elem.setOption(option);
// 在需要触发 tooltip 的地方调用函数
elem.on('click', function(params) {
console.log(params);
});
}
});
}
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() - 145,
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() - 145,
});
}
function getParams() {
var tabLevel = getTabLevel();
var tabLevelGroup = getTabLevelGroup();
var dataParams = {
tabLevel: tabLevel,
tabLevelGroup: tabLevelGroup,
type: $("#type").val(),
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();
initLabelSelect();
$('#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();
}
});
}
}else if(layEvent === 'excelOutEvent') {
if ($("#creatorArea1").val() == undefined || $("#creatorArea1").val() == "" || $("#creatorArea1").val() == "请选择街道" ) {
layer.msg("为了提升导出速度 , 请至少选择一个街道");
return;
}
exportFieldTemplate(titleArray);
layer.open({
type: 1,
title: "选择要导出的内容",
closeBtn: 1,
area: ['60%', '50%'],
shadeClose: true,
anim: 2,
content: $("#exportExcel"),
end: function() {
layer.close(loadLayerIndex);
}
});
}
});
$(document).on('click', '#excelExport1' , function() {
// 遍历每个多选框元素
$('input[name="exportFieldTemplate"]').each(function() {
$(this).prop('checked', true);
});
form.render("checkbox");
});
$(document).on('click', '#excelExport2' , function() {
// 遍历每个多选框元素
$('input[name="exportFieldTemplate"]').each(function() {
$(this).prop('checked', false);
});
// 遍历每个多选框元素
$('input[name="exportFieldTemplate"]').each(function() {
if($(this).data("color") == 'FF0000') {
$(this).prop('checked', true);
}
});
form.render("checkbox");
});
$(document).on('click', '#excelExport' , function() {
var selectedValues = []; // 存放选中的值的数组
// 遍历每个多选框元素
$('input[name="exportFieldTemplate"]').each(function() {
if ($(this).is(':checked')) { // 判断当前复选框是否被选中
selectedValues.push($(this).val()); // 将选中的值添加到数组中
}
});
var data1 = getParams();
data1.tabLevelGroup = encodeURIComponent(data1.tabLevelGroup);
var logMsg = "数据正在查询 . </br>请勿关闭窗口 ....";
var loadLayerIndex = layer.msg(logMsg, {icon: 16, time: 0, shade: 0.3});
$.ajax({
url: 'api/populationinfo/list-system?[[${params}]]',
data: data1,
cache: false,
type: 'get',
timeout: 600 * 1000,
contentType: "application/json;charset=utf-8",
success: function (data) {
layer.close(loadLayerIndex);
var len = Math.ceil(data.length / 40000)
if(len > 1) {
for(var i = 0 ; i < len ; i++) {
var dat = data.slice(i*40000, (i+1)*40000);
exportApi(dat, selectedValues);
}
}else{
exportApi(data, selectedValues);
}
}
});
});
/**
* 封装导出的格式
* */
function getExcelFormat(content, bold, color) {
return {
v: content,// 内容
t:"s", // 单元格的类型 'b'布尔值、'n'数字、'e'错误、's'字符串、'd'日期
s:{
alignment: {
horizontal: 'center',// "left"、"center" 或 "right" 水平对齐
vertical: 'center',// "bottom"、"center" 或 "top" 垂直对齐
},
font: {
bold: bold, // 是否加粗
// sz: 12 字号
color: {
rgb: color // 文字颜色
}
}
}
};
}
var titleArray = [
{name: '街道', key: 'creatorArea1', color: 'FF0000'},
{name: '社区', key: 'creatorArea2', color: 'FF0000'},
{name: '认领人', key: 'creatorName', color: 'FF0000'},
{name: '姓名', key: 'name', color: 'FF0000'},
{name: '证件类型', key: 'idcardType', color: 'FF0000'},
{name: '证件号码', key: 'idcard', color: 'FF0000'},
{name: '出生日期', key: 'birthday', color: 'FF0000'},
{name: '性别', key: 'sex', color: 'FF0000'},
{name: '民族', key: 'nation', color: 'FF0000'},
{name: '文化程度', key: 'education', color: 'FF0000'},
{name: '就读院校及专业', key: 'description'},
{name: '所属党派', key: 'organization', color: 'FF0000'},
{name: '宗教信仰', key: 'religion', color: 'FF0000'},
{name: '婚姻状况', key: 'marriageStatus', color: 'FF0000'},
{name: '婚变日期', key: 'marriageChangeTime', color: 'FF0000'},
{name: '初婚日期', key: 'marriageFirstTime', color: 'FF0000'},
{name: '社会保险情况', key: 'socialSecurity', color: 'FF0000'},
{name: '健康状况', key: 'healthStatus', color: 'FF0000'},
{name: '就业状态', key: 'departmentType', color: 'FF0000'},
{name: '工作单位', key: 'department'},
{name: '工作职务', key: 'pastion'},
{name: '专业技术职称', key: 'pastionTitle'},
{name: '专长', key: 'expertise'},
{name: '联系电话', key: 'phone', color: 'FF0000'},
{name: '与户主关系', key: 'relationship', color: 'FF0000'},
{name: '标签', key: 'labels'},
{name: '父亲姓名', key: 'fatherName'},
{name: '父亲证件', key: 'fatherIdcard'},
{name: '父亲电话', key: 'fatherPhone'},
{name: '母亲姓名', key: 'motherName'},
{name: '母亲证件', key: 'motherIdcard'},
{name: '母亲电话', key: 'motherPhone'},
{name: '配偶姓名', key: 'spouseName'},
{name: '配偶证件', key: 'spouseIdcard'},
{name: '配偶电话', key: 'spousePhone'},
{name: '户籍地址', key: 'domicileAreaName', color: 'FF0000'},
{name: '户籍详细地址', key: 'domicileAddress'},
{name: '籍贯地址', key: 'originAddress'},
{name: '流动日期', key: 'flowTime'},
{name: '流动原因', key: 'flowReason'},
{name: '其他原因', key: 'flowReasontext'},
{name: '是否为老年人', key: 'isOldage'},
{name: '老人类别', key: 'oldageType'},
{name: '离退休前单位', key: 'oldageDepartment'},
{name: '生活照料情况', key: 'oldageLift'},
{name: '健康状况', key: 'oldageHealthStatus'},
{name: '生活自理能力', key: 'oldageSelfcare'},
{name: '居住状况', key: 'oldageLive'},
{name: '是否为残疾人', key: 'isDisability'},
{name: '残疾类别', key: 'disabilityType'},
{name: '残疾等级', key: 'disabilityLevel'},
{name: '残疾证号', key: 'disabilityNumber'},
{name: '残疾车牌号', key: 'disabilityCarnumber'},
{name: '居住地址', key: 'disabilityAddress'},
{name: '收入情况', key: 'disabilityIncome'},
{name: '住房来源', key: 'disabilityHouse'},
{name: '办证时间', key: 'disabilityTime'},
{name: '监护人或配偶姓名', key: 'disabilityGuardian'},
{name: '是否为服役/退役', key: 'isMilitary'},
{name: '批准退出现役日期', key: 'militaryTime'},
{name: '退出现役时职级', key: 'militaryPosition'},
{name: '是否为社会救助', key: 'isSuccour'},
{name: '低保户', key: 'succourDibao'},
{name: '医疗救助', key: 'succourHelp'},
{name: '困难职工', key: 'succourDifficulty'},
{name: '老龄补贴', key: 'succourSubsidy'},
{name: '是否为党员', key: 'isParty'},
{name: '党组织名称', key: 'partyOrganization'},
{name: '入党时间', key: 'partyTime'},
{name: '其他', key: 'othertext'}
];
/**
* 将传入的数据导出
*/
function exportApi(list , fieldArray) {
var timestart = Date.now();
var logMsg = "数据正在导出 . </br>请勿关闭窗口 ....";
var loadLayerIndex = layer.msg(logMsg, {icon: 16, time: 0, shade: 0.3});
/**
* v单元格的值
* t单元格的类型 'b'布尔值、'n'数字、'e'错误、's'字符串、'd'日期
* s单元格的样式
*/
var data = new Array();
var obj = {};
for(var i = 0 , item; item = titleArray[i++];) {
for(var j = 0 , item1; item1 = fieldArray[j++];) {
if(item.key == item1) {
obj[item1] = getExcelFormat(item.name, true , '000000');
}
}
}
data.push(obj);
for(var i = 0 ; i < list.length; i++) {
var rowData = list[i].labelList;
var label = "";
for(var j = 0 ; j < rowData.length; j++) {
label = label + rowData[j].name + "、";
}
var obj1 = {};
for(var l = 0 , item; item = titleArray[l++];) {
for(var k = 0 , item1; item1 = fieldArray[k++];) {
if(item.key == item1) {
obj1[item1] = getExcelFormat(list[i][item1], false , (item.color ? item.color : '000000') );
}
}
}
data.push(obj1);
}
// A列宽 200, 默认给80
var colConf = excel.makeColConfig({
}, 140);
// 每一行的行高, 默认给20
var rowConf = excel.makeRowConfig({
1: 30,
}, 20)
var creatorArea1 = $("#creatorArea1").val();
var creatorArea2 = $("#creatorArea2").val();
if ($("#creatorArea2").val() == undefined || $("#creatorArea2").val() == "" || $("#creatorArea2").val() == "请选择社区" ) {
}else{
creatorArea1 = creatorArea1 + "-" + creatorArea2;
}
console.log("开始导出...");
excel.exportExcel({
sheet1: data
}, creatorArea1 + '人口信息.xlsx', 'xlsx', {
extend: {
sheet1: {
'!cols': colConf
, '!rows': rowConf
}
}
})
var timeend = Date.now()
var spent = (timeend - timestart) / 1000
layer.close(loadLayerIndex);
layer.msg('导入耗时 :' + spent + ' 秒');
}
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;
}
seriesItem.label = { //饼图图形上的文本标签
normal:{
show:true,
position:'inner', //标签的位置
textStyle : {
},
formatter:'{d}%'
}
};
series.push(seriesItem);
}
let barData = [];
for (let i = 0; i < series.length; i++) {
let pieData = series[i].pieData;
endValue = startValue + pieData.value;
pieData.startRatio = startValue / sumValue;
pieData.endRatio = endValue / sumValue;
series[i].parametricEquation = getParametricEquation(pieData.startRatio, pieData.endRatio);
startValue = endValue;
legendData.push({name: series[i].pieData.name, value: series[i].pieData.value});
// 柱子,为了在饼状图上显示数字
let midRatio = (pieData.startRatio + pieData.endRatio) / 2;
barData.push({
name: `${pieData.name}: ${pieData.value}`,
// 柱子透明
itemStyle: {
color: [1, 1, 1, 0]
},
label: {
show: true,
formatter: `{b}`,
textStyle: {
color: '#FFFFFF',
fontSize: 14
}
},
value: [Math.sin(midRatio * Math.PI * 2) * 0.6, Math.cos(midRatio * Math.PI * 2) * 0.6, 0.1]
})
}
// 添加柱子,为了在饼状图上显示数字
series.push({
type: 'bar3D',
data: barData,
shading: 'lambert',
label: {
fontSize: 16,
borderWidth: 1
},
emphasis: {
label: {
fontSize: 20,
color: '#FFFFFF'
},
itemStyle: {
color: '#FFFFFF'
}
}
})
let option = {
data: pieData,
legend: {
// type:'scroll',
show: true,
data: legendData,
textStyle: {
color: "#FFF"
},
formatter: function(params) {
for (var i = 0 ; i < legendData.length ; i++) {
if(legendData[i].name == params) {
return legendData[i].name + ': 占比 ' + (legendData[i].value / startValue * 100).toFixed(2) + '%';
}
}
}
},
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
}`;
}else{
return "123";
}
},
},
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: true,
},
light: {
main: {
color: "rgb(85, 84, 84)", // 主光源的颜色。
shadow: false, // 主光源是否投射阴影
alpha: 80, // 主光源绕 x 轴,即上下旋转的角度
},
},
},
series: series,
};
return option;
}
});
</script>
</body>
</html>