效果图
1.使用iframe引入页面
area_qysyb2: function() {
$("#_result").css('width', '100%');
$("#_result").css('height', '100%');
var page = `
<div style="width:100%; height:100%">
<iframe frameborder="no" scrolling-y="yes" allowtransparency="yes" src="../business/ak_business/html/ak_xmtj/ak_qysybtj.html?type=${ak_right.type2}" style="list-style:none;width:100%;height:100%;"></iframe>
</div>`;
$('#_result').html(page);
var docuWidth = $(document).width();
_slipWin.upws(docuWidth * 0.27);
_slipWin.show();
},
2.html页面
编写一个iframe引入的hrml页面
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1">
<title></title>
<link rel="stylesheet" type="text/css" href="../../css/rightPage_common.css" />
</head>
<body class="page-header-fixed page-sidebar-closed-hide-logo page-sidebar-closed-hide-logo"
style="background-color: rgba(0,0,0,0);">
<!--#include virtual="../../common/head_global.html"-->
<!--#include virtual="../../common/head_theme.html"-->
<!-- 股份机构的国家机构数量统计 -->
<div class="panel-heading">
<span id="head_title"></span>
<!-- <img id="imgSlide" src="../../../build/slipWin/up.png"> -->
<!-- <span id="head_total"></span> -->
</div>
<div class="panel-body" id="slide_body" style="display: none;">
<form id="formSearch" class="form-horizontal">
<div class="form-group" style="margin-top:3px;opacity: 0.7;">
<!-- 大洲 -->
<div class="col-md-2">
<input type="text" class="form-control" id="startTime" placeholder="统计起始时间" autocomplete="off">
</div>
<!-- 国家 -->
<div class="col-md-2">
<input type="text" class="form-control" id="endTime" placeholder="统计结束时间" autocomplete="off">
</div>
</div>
<div class="form-group" style="margin-top:3px;opacity: 0.7;">
<div class="col-md-3" style="width: 93%">
<select id="projectStatus" class="form-control" data-size="3"
multiple="multiple: true"></select>
</div>
</div>
<div class="form-group" style="margin-top:3px;margin-bottom: 0;justify-content: start;">
<div class="col-md-3" style="margin-left: 8px;">
<button type="button" id="btn_query" class="btn btn-primary"
style="margin-left:5px;background-color: #1a4264;">查询</button>
<button type="button" id="btn_reset" class="btn btn-primary"
style="margin-left:5px;background-color: #1a4264;">重置</button>
</div>
</div>
</form>
</div>
<div id="body"></div>
<!-- 有意思的是, 只有在 html 目录下创建的文件, bottom.html 文件才会生效. -->
<!--#include virtual="../../common/bottom.html"-->
<script src="../../common/assets/global/plugins/bootstrap/js/bootstrap-paginator.js" type="text/javascript"
charset="utf-8"></script>
</body>
<script type="text/javascript" src="../../js/ak_xmtj/ak_qysybtj_gjtj.js"></script>
<script type="text/javascript">
jQuery(document).ready(function() {
ak_qysybtj_gjtj.init();
});
</script>
</html>
3.脚本
先初始化列表参数
init: function() {
ak_qysybtj_gjtj.areaId = ak_qysybtj_gjtj.getQuery(window.location.search, 'areaId'); // 区域事业部 id
ak_qysybtj_gjtj.projectstatus = ak_qysybtj_gjtj.getQuery(window.location.search, 'projectstatus'); //施工状态
ak_qysybtj_gjtj.startTime = ak_qysybtj_gjtj.getQuery(window.location.search, 'startTime'); // 统计起始时间
ak_qysybtj_gjtj.endTime = ak_qysybtj_gjtj.getQuery(window.location.search, 'endTime'); // 统计结束时间
if(ak_qysybtj_gjtj.projectstatus !== 'null') { // 处理 施工状态 参数格式
let status = ak_qysybtj_gjtj.projectstatus;
status = status.split(",").join("','");
status = "'" + status + "'";
ak_qysybtj_gjtj.projectstatus = status;
}
// console.log(ak_qysybtj_gjtj.projectstatus)
console.log(ak_qysybtj_gjtj.startTime)
console.log(ak_qysybtj_gjtj.endTime)
$("#head_title").text("区域事业部国家统计"); // 标题
// this.initSelect(); // 初始化下拉框
this.ButtonInit(); // 初始化 Button 的点击事件
// this.initDatepicker(); // 初始化时间控件
// this.initSlide(); // 初始化条件滑动和滑出
ak_qysybtj_gjtj.initSearch(); // 接收请求的参数
},
接收请求的参数,并调用请求后端接口方法
initSearch: function() {
this.offset = this.pagesize * (this.page - 1);
ak_qysybtj_gjtj.temp = {
Authorization: akglobe_config.token,
areaId:ak_qysybtj_gjtj.areaId, // 区域事业部 id
projectstatus: ak_qysybtj_gjtj.projectstatus, // 施工状态
startTime: ak_qysybtj_gjtj.startTime,
endTime: ak_qysybtj_gjtj.endTime,
}
ak_qysybtj_gjtj.getDate(); // 请求列表数据
},
调用后端接口,获取数据,将获取的数据传递给回调函数,在回调函数中将数量处理成列表
// 请求列表数据接口查询
getDate: function() {
var options = new Object();
options.url = "/manage-api/IndexTjfx1Controller/getQysybtj";
options.type = "GET";
options.data = ak_qysybtj_gjtj.temp;
options.errorback = akglobe_config.errBack;
options.callback = function(data) {
ak_qysybtj_gjtj.callBackGET(data);
}
// 如果是测试环境 使用假数据
if(parent.typep002==2){
ak_qysybtj_gjtj.callBackGET(ak_ztqg.getQysybtj);
}else{
akglobe_config.ajaxQuery(options);
}
},
callBackGET:function(data){
if(!data) return;
ak_qysybtj_gjtj.initList(data); // 初始化 html 内容
parent.ak_right_sybgj.getAllByNameGoods(data.rows, true); // 区域和国家连线标注
},
初始化 html内容
// 初始化 html 内容
initList: function(data) {
var data = data.rows;
var html = "";
html += "<div id='pageid_obstacle' style='overflow-y:auto;overflow-x:hidden;margin-top:10px;'>";
html += ak_qysybtj_gjtj.htmlTable(data); // 列表和分页 html 结构。
html += "</div>";
html += "<div id='pagebottom_poi' class=\"pageListbottom\"></div>";
html += `<div id="Paginator" style="text-align: center"> <ul id="pageLimit"></ul> </div>`;
$('#body').html(html);
},
htmlTable: function(r) {
var comlist = r;
var length = r.length;
var table = [];
for(var i=0;i< length;i++){
var db = comlist[i];
var id = db.code; // 国家编号
var name = db.name; // 国家名称
// 超出的字符用省略号表示
if(name){
if(name.length > 15) {
name = name.substr(0, 15) + '...'
}
}else{
name = ""
}
var num = db.num; // 数量
var x = db.latitude; // 纬度
var y = db.longitude; // 经度
var rmb = db.rmb; //合同额 (人民币)
var value = db.value; //合同额 (美元)
var quantity = db.quantity; // 数量
var jsonstr = JSON.stringify(db); //将json对象转换为json字符串
var index = i + 1;
// 第一行
table.push("<div style='position:relative'><input type='button' class='callBack_button1' style='width:80%;height:27px;margin-left: 10%;' value='"+name+"' onclick='ak_qysybtj_gjtj.handleEvent("+jsonstr+")' />");
table.push("<div style='position: absolute;width: 30px;height: 20px;top: 4px;left: 10%;color: #0a69fb;background-color: #d6c6ff;border-bottom-right-radius: 50%;border-top-right-radius: 50%;text-align: center;line-height: 20px;'>"+index+"</div>");
table.push("</div>")
// 第三行
table.push("<div style='width: 80%;height: 30px;margin:0 auto;display:flex;justify-content:space-between;align-items: center;font-weight: normal;'>");
table.push("<div style=''><span style='color:#fff'>合同金额:</span> <a style='color:white;'>"+rmb+"</a><span style='color:#fff'>亿(人民币)</span></div>");
table.push("<div style=';'></div>");
table.push("</div>");
// 第三行
table.push("<div style='width: 80%;height: 30px;margin:0 auto;display:flex;justify-content:space-between;align-items: center;font-weight: normal;'>");
table.push("<div style=''><span style='color:#fff'>合同金额:</span> <a style='color:white;'>"+value+"</a><span style='color:#fff'>亿(美元)</span></div>");
table.push("<div style=';'></div>");
table.push("</div>");
// 第四行
table.push("<div style='width: 80%;height: 30px;margin:0 auto;display:flex;justify-content:space-between;align-items: center;font-weight: normal;'>");
table.push("<div style=''><span style='color:#fff'>合同数:</span> <a style='color:white '>"+quantity+"</a><span style='color:#fff'>个</span></div>");
table.push(`<div style=''><a href='javaScript:;' onclick='ak_qysybtj_gjtj.Xq(${jsonstr})' style='color:#00FFFF'>详情</a></div>`);
table.push("</div>");
}
return table.join("");
},
点击列表中的详情按钮,跳转详情页面方法
Xq:function(jsonstr){
var db={};
db.country = jsonstr.code; // 国家编码
db.projectStatus = ak_qysybtj_gjtj.projectstatus; // 施工状态
db.statisticsdateBegin =ak_qysybtj_gjtj.startTime; // 统计起始时间
db.statisticsdateEnd = ak_qysybtj_gjtj.endTime; // 统计结束时间
akglobe_config.setDDoptions(db,'ak_gchtList'); // 设置要传递的参数
var href=ak_config.tm_urm+'ak_business/html/ak_ztqygl_gcht/ak_gchtList.html';
window.open(href);
},
点击列表标题名称,查看该列表下级内容方法,调用下级列表方法
4.完整js脚本
// 区域事业部统计
var ak_qysybtj = {
temp: null, // 区域事业部统计 请求的参数
temp2: null, // 专门处理所有数据标注的参数
page: 1, // 当前的页数
pagesize: 10, // 一页几行
offset: 0, // 用于计算当前页数
type:null,
init: function() {
ak_qysybtj.type = ak_qysybtj.getQuery(window.location.search, 'type'); // 施工状态
$("#head_title").text("区域事业部统计"); // 标题
this.initSlide(); // 初始化条件滑动和滑出
this.initSelectTable(); // 初始化年份选择下拉框 html 结构
this.initDatepicker(); // 初始化时间控件
//this.initSelect(); // 初始化下拉框
ak_qysybtj.initSearch(); // 接收请求的参数
this.ButtonInit(); // 初始化 Button 的点击事件
},
// 初始化年份选择下拉框 html 结构
initSelectTable: function (){
var start = akglobe_config.seleTime;
var end = (new Date).getFullYear() + 1;
var time = end - start;
var content = '<option value ="">请选择年份</option>';
for(let i = 0; i < time; i++) {
var times = time - i - 1;
content += `<option value ="${start+times}">${start+times}年</option>`
}
$("#selectTime").html(content);
},
// 初始化时间控件
initDatepicker:function (){
//日期控件 初始化
$("#startTime").datepicker({
format: 'yyyy-mm-dd',
minView: 'month',
language: 'zh-CN',
autoclose: true
}).on("click", function() {
$("#startTime").datepicker("setEndDate", $("#startTime").val())
});
$("#endTime").datepicker({
format: 'yyyy-mm-dd',
minView: 'month',
language: 'zh-CN',
autoclose: true
}).on("click", function() {
$("#endTime").datepicker("setStartDate", $("#endTime").val())
});
// 默认当年第一天和最后一天
if(ak_qysybtj.type == 2){
var year = (new Date).getFullYear();
$("#selectTime").val(year); // 年份选择下拉框
var startTime = ak_qysybtj.changeDateFormat2(new Date(year, 0, 1).getTime());
var endTime = ak_qysybtj.changeDateFormat2(new Date(year, 11, 31).getTime());
$("#startTime").val(startTime); // 开始时间
$("#endTime").val(endTime); // 结束时间
}
},
// 初始化条件滑动和滑出
initSlide: function() {
// 标题
$(".panel-heading").click(function(){
var img = $("#imgSlide").attr("src");
if(img == '../../../build/slipWin/down.png') {
$("#imgSlide").attr("src", '../../../build/slipWin/up.png');
}else {
$("#imgSlide").attr("src", '../../../build/slipWin/down.png');
}
$("#slide_body").slideToggle("slow");
});
},
// 初始化下拉框
initSelect: function() {
var options = new Object();
options.url = "/manage-api/TJwProjectController/TObjSelect1";
options.defualtOption = "全部施工状态";
options.id = "projectStatus";
options.type="get"; // 如果有,显示搜索栏,否则不显示搜索栏
options.data = {
dictionName: 'projectStatus',
dictionType: 'projects'
}
options.callback = function(){
if(ak_qysybtj.type == 1) $("#projectStatus").val(akglobe_config.underConstruction);
$("#projectStatus").select2(); // 机构类型下拉框多选
ak_qysybtj.initSearch(); // 接收请求的参数
}
akglobe_config.SelectInit(options);
},
// 获得 iframe 嵌套页面参数值的通用函数
getQuery: function(url, name) {
// console.log(url);
var index = url.indexOf('?'); // 获取 ? 的位置
// 如果没有参数, 返回 null
if (index !== -1) {
var query = url.substring(index + 1).split('&'); // 截取字符串 分割字符串为数组
// console.log(query) // (2)['pageIndex=1', 'pageSize=10']
for (let i = 0; i < query.length; i++) {
// console.log(query[i].split('='))
var itemArr = query[i].split('=') // 分割每个参数的键值对,
if (itemArr[0] === name) { // 判断是否为要找的键名
return itemArr[1] // 返回对应键值对的值
}
}
}
return null
},
// 接收请求的参数
initSearch: function() {
this.offset = this.pagesize * (this.page - 1);
let projectStatus = $("#projectStatus").val(); // 项目状态
if(projectStatus) {
projectStatus = projectStatus.join("','");
projectStatus = "'" + projectStatus + "'";
}
ak_qysybtj.temp = {
Authorization: akglobe_config.token,
projectstatus:projectStatus, // 项目状态
startTime: $("#startTime").val(), // 统计起始时间
endTime: $("#endTime").val(), // 统计结束时间
}
ak_qysybtj.getDate(); // 请求列表数据
},
// 请求列表数据接口查询
getDate: function() {
var options = new Object();
options.url = "/manage-api/IndexTjfx1Controller/getQyHtXqTj";
options.type = "GET";
options.data = ak_qysybtj.temp;
options.errorback = akglobe_config.errBack;
options.callback = function(data) {
ak_qysybtj.callBackGET(data);
}
// 如果是测试环境 使用假数据
if(parent.typep002==2){
ak_qysybtj.callBackGET(ak_ztqg.getQyHtXqTj);
}else{
akglobe_config.ajaxQuery(options);
}
},
callBackGET:function(data){
if(!data) return;
ak_qysybtj.initList(data); // 初始化 html 内容
parent.ak_gjtj.area_qysyb2_callback(data); // 区域事业部的图层
},
// 接收请求的参数2, 专门是所有数据都标注.
initSearch2: function() {
let projectStatus = $("#projectStatus").val(); // 项目状态
if(projectStatus) {
projectStatus = projectStatus.join("','");
projectStatus = "'" + projectStatus + "'";
}
ak_qysybtj.temp2 = {
Authorization: akglobe_config.token,
projectStatus:projectStatus, // 项目状态
startTime: $("#startTime").val(), // 统计起始时间
endTime: $("#endTime").val(), // 统计结束时间
}
ak_qysybtj.getDate2(); // 所有数据标注数据接口
},
// 所有数据标注数据接口
getDate2: function() {
var options = new Object();
options.url = "/manage-api/IndexTjfx1Controller/getQyHtXqTj";
options.type = "GET";
options.data = ak_qysybtj.temp2;
options.errorback = akglobe_config.errBack;
options.callback = function(data) {
if(!data) return;
// console.log(data)
// parent.ak_left_click5.topCallBack(data.rows); // 初始化三维标注
// parent.ak_left_click5.initConfig(data.rows); // 初始化三维 Echarts 标注
}
akglobe_config.ajaxQuery(options);
},
// 初始化 html 内容
initList: function(data) {
var data = data.rows;
var html = "";
html += "<div id='pageid_obstacle' style='overflow-y:auto;overflow-x:hidden;margin-top:10px;'>";
html += ak_qysybtj.htmlTable(data); // 列表和分页 html 结构。
html += "</div>";
html += "<div id='pagebottom_poi' class=\"pageListbottom\"></div>";
html += `<div id="Paginator" style="text-align: center"> <ul id="pageLimit"></ul> </div>`;
$('#body').html(html);
},
htmlTable: function(r) {
var comlist = r;
var length = r.length;
var table = [];
for(var i=0;i< length;i++){
var db = comlist[i];
var id = db.code; // 国家编号
var name = db.name; // 国家名称
// 超出的字符用省略号表示
if(name){
if(name.length > 15) {
name = name.substr(0, 15) + '...'
}
}else{
name = ""
}
var num = db.num; // 数量
var x = db.latitude; // 纬度
var y = db.longitude; // 经度
var my = db.my == null ? '0' : db.my.toFixed(2); // 合同金额
var num = db.num == null ? '0' : db.num; // 合同金额
var rmb = db.rmb == null ? '0' : db.rmb.toFixed(2); // 人民币
var jsonstr = JSON.stringify(db); //将json对象转换为json字符串
var index = i + 1;
// 第一行
table.push("<div style='position:relative'><input type='button' class='callBack_button1' style='width:80%;height:27px;margin-left: 10%;' value='"+name+"' onclick='ak_qysybtj.handleEvent("+jsonstr+")' />");
table.push("<div style='position: absolute;width: 30px;height: 20px;top: 4px;left: 10%;color: #0a69fb;background-color: #d6c6ff;border-bottom-right-radius: 50%;border-top-right-radius: 50%;text-align: center;line-height: 20px;'>"+index+"</div>");
table.push("</div>")
table.push("<div style='width: 80%;height: 30px;margin:0 auto;display:flex;justify-content:space-between;align-items: center;font-weight: normal;'>");
table.push("<div style=''><span style='color:#fff'>合同金额:</span> <a style='color:white '>"+rmb+"</a><span style='color:#fff'>亿(人民币)</span></div>");
table.push("</div>");
// 第三行
table.push("<div style='width: 80%;height: 30px;margin:0 auto;display:flex;justify-content:space-between;align-items: center;font-weight: normal;'>");
table.push("<div style=''><span style='color:#fff'>合同金额:</span> <a style='color:white;'>"+my+"</a><span style='color:#fff'>亿(美元)</span></div>");
table.push("</div>");
// 第四行
table.push("<div style='width: 80%;height: 30px;margin:0 auto;display:flex;justify-content:space-between;align-items: center;font-weight: normal;'>");
table.push("<div style=';'><span style='color:#fff'>合同数:</span> <a style='color:white '>"+num+"</a><span style='color:#fff'>个</span></div>");
table.push(`<div style=''><a href='javaScript:;' onclick='ak_qysybtj.Xq(${jsonstr})' style='color:#00FFFF'>详情</a></div>`);
table.push("</div>");
}
return table.join("");
},
Xq:function(jsonstr){
var db = {};
db.areaId = jsonstr.code; // 区域事业部编码
db.projectStatus = $("#projectStatus").val(); // 施工状态
db.statisticsdateBegin = $("#startTime").val(); // 统计起始时间
db.statisticsdateEnd = $("#endTime").val(); // 统计结束时间
akglobe_config.setDDoptions(db,'ak_gchtList'); // 设置要传递的参数
var href=ak_config.tm_urm+'ak_business/html/ak_ztqygl_gcht/ak_gchtList.html';
window.open(href);
},
handleEvent:function(jsonstr){
console.log(jsonstr)
jsonstr.projectstatus = $("#projectStatus").val(); // 施工状态
jsonstr.startTime = $("#startTime").val().trim(); // 统计起始时间
jsonstr.endTime = $("#endTime").val().trim(); // 统计结束时间
parent.ak_right_sybgj.init(jsonstr, true);
},
// 子页面向父页面传值
gjxq: function (jsonstr) {
let jigoutype = $("#jigouType").val()
if (jigoutype) {
jigoutype = jigoutype.join("','");
jigoutype = "'" + jigoutype + "'";
}
var db={};
db.jigouType = jigoutype;//机构类型
db.countryId =jsonstr.code;//国家id
akglobe_config.setDDoptions(db,'ak_jigoutreeList'); // 设置要传递的参数
var href=ak_config.tm_urm+'ak_business/html/ak_ztqygl_tree/ak_jigoutreeList.html';
window.open(href);
},
// 项目详情
xmDelite: function(id, projectId) {
var db = {
id,
projectId,
};
akglobe_config.setDDoptions(db, 'ak_jwxmDetails'); // 设置要传递的参数
window.open(ak_config.tm_urm+'../business/ak_business/html/ak_ztqygl_jwxm/ak_jwxmDetails.html');
},
// 初始化分页
initPage: function(data) {
data.currenPage = parseInt(data.currenPage/this.pagesize+1);
if(data.currenPage == 1 || data.currenPage == data.pageCount) {
var currenPage = data.currenPage;
}else if(data.currenPage == 0){
var currenPage = data.currenPage + 1;
}else {
var currenPage = data.currenPage;
}
$('#pageLimit').bootstrapPaginator({
bootstrapMajorVersion: 3, //对应bootstrap版本
currentPage: currenPage, //当前页
totalPages: data.pageCount == 0 ? 1 : data.pageCount, // 总页数
size:"normal", //分页大小
alignment:"right",
numberOfPages: 5, //显示的页数
// itemTexts: function (type, page, current) {
// switch (type) {
// case "first": return "首页";
// case "prev": return "上一页";
// case "next": return "下一页";
// case "last": return "末页";
// case "page": return page;
// }
// },
/**
* 分页点击事件
* @param event [jquery对象]
* @param originalEvent [dom原生对象]
* @param type [按钮类型]
* @param page [点击按钮对应的页码]
*/
onPageClicked: function (event, originalEvent, type, page) {
// render(page);//根据点击页数渲染页面
ak_qysybtj.page = page; // 点击的页数
ak_qysybtj.initSearch(); // 接收请求的参数
}
});
},
// 初始化 Button 的点击事件
ButtonInit: function() {
// 查询 按钮
$("#btn_query").click(function () {
ak_qysybtj.initSearch(); // 接收请求的参数
// ak_qysybtj.initSearch2(); // 接收请求的参数2, 专门是所有数据都标注.
});
// 重置 按钮
$("#btn_reset").click(function () {
$("#startTime").val(''); // 统计起始时间
$("#endTime").val(''); // 统计结束时间
$("#projectStatus").val(''); // 施工状态
$("#projectStatus").select2(); // 机构类型下拉框多选
$("#selectTime").val(''); // 年份选择下拉框
ak_qysybtj.initSearch(); // 接收请求的参数
// ak_qysybtj.initSearch2(); // 接收请求的参数2, 专门是所有数据都标注.
});
$("#projectStatus").change(function () {
ak_qysybtj.projectStatus = $("#projectStatus").val(); // 赋值, 防止错误查询.
ak_qysybtj.initSearch(); // 接收请求的参数
// ak_qysybtj.initSearch2(); // 接收请求的参数2, 专门是所有数据都标注.
});
// 年份选择下拉框
$("#selectTime").change(function() {
var time = $("#selectTime").val();
if (!time) {
$("#startTime").val('');
$("#endTime").val('');
} else {
var startTime = ak_qysybtj.changeDateFormat2(new Date(time, 0, 1).getTime());
var endTime = ak_qysybtj.changeDateFormat2(new Date(time, 11, 31).getTime());
$("#startTime").val(startTime);
$("#endTime").val(endTime);
}
ak_qysybtj.initSearch(); // 接收请求的参数
});
},
//转换日期格式(时间戳转换为datetime格式)
changeDateFormat2:function (cellval) {
var dateVal = cellval + "";
if (cellval != null) {
var date = new Date(parseInt(dateVal.replace("/Date(", "").replace(")/", ""), 10));
var month = date.getMonth() + 1 < 10 ? "0" + (date.getMonth() + 1) : date.getMonth() + 1;
var currentDate = date.getDate() < 10 ? "0" + date.getDate() : date.getDate();
var hours = date.getHours() < 10 ? "0" + date.getHours() : date.getHours();
var minutes = date.getMinutes() < 10 ? "0" + date.getMinutes() : date.getMinutes();
var seconds = date.getSeconds() < 10 ? "0" + date.getSeconds() : date.getSeconds();
return date.getFullYear() + "-" + month + "-" + currentDate + " ";
}
},
}