const $ = require('jquery');
require("../css/uncorrectedCasesStatistics.less");
require('./modal.js');
const { api } = require('./api.js')
const { post, getCookie, getUrlArgObjectNew, emptyBox, setTitleTxt, setDatePicker, getPickerDate, expJson, downloadExportedData, initScroll, listenScroll } = require('./utils.js')
require('./../resource/jquery-ui/jquery-ui.min.js');
require('./../resource/jquery-ui/jquery-ui.min.css');
const iconCheck = require("./../images/icon_check.png")
const iconUnCheck = require("./../images/icon_unchecked.png")
const iconDown = require("./../images/arrow_down.png")
const iconUp = require("./../images/arrow_up.png")
const loadingImg = require("./../images/loading.gif")
const arrowLeft = require("./../images/arrow_left.png")
const arrowRight = require("./../images/arrow_right.png")
let deptName = "", behospitalCode = "", deptNameTemp = "", deptId = '', deptIdTemp = '', behospitalCodeTemp = "", data_desc = "", data_asc = "", columns = [], isfirstRenderTitle = false;
let srcUrl = $("#contentIframe", parent.document).attr("src")
statisticsType = getUrlArgObjectNew("dateType", srcUrl) || "";
from = getUrlArgObjectNew("from", srcUrl) || ""
lineType = getUrlArgObjectNew("lineType", srcUrl) || ""
let startDateParam = getUrlArgObjectNew("startDateParam", srcUrl) || ""
let endDateParam = getUrlArgObjectNew("endDateParam", srcUrl) || ""
/*if(lineType){
$("th[code="+data_desc+"]").addClass("desc");
}*/
//setTitleTxt('',from) //导航栏面包屑
let isPlacefile = getCookie('isPlacefile') || 1
let tableType = 1;
let timelinessId = "3241";
let globaltableData = [];
listenScroll()
if (statisticsType == 1) {
setDatePicker($("#datepicker"), $("#datepicker2"), 1)
} else if (statisticsType == 2) {
setDatePicker($("#datepicker"), $("#datepicker2"), 2)
} else if (statisticsType == 3) {
setDatePicker($("#datepicker"), $("#datepicker2"), 3, new Date(startDateParam), new Date(endDateParam))
} else {
setDatePicker($("#datepicker"), $("#datepicker2"), 'default')
}
if (!statisticsType) {
setDatePicker($("#datepicker"), $("#datepicker2"), 'default')
}
$(".abnormalClear").click(function () {
data_desc = "";
data_asc = "";
deptId = "";
deptIdTemp = "";
deptName = "";
deptNameTemp = "";
casesEntryId = "";
setDatePicker($("#datepicker"), $("#datepicker2"), "default")
$(".selectDept").attr({ 'title': "首次病程未在患者入院8小时内完成(杭州七院标准版)", 'data-id': '' }).val("首次病程未在患者入院8小时内完成(杭州七院标准版)")
$('.patientNumInp').val('')
$("th[code]").removeClass("asc desc")
//behospitalCode =behospitalCodeTemp= ""
getDeptList()
getTabData(1)
})
$(".partTitle a").click(function () {
//初始菜单选中
$(".menu .page", parent.document).removeClass("active").eq(0).addClass("active");
$(".container", parent.document).addClass("console-cont");
})
$(".menu .page", parent.document).removeClass("active")
$(parent.document).find(".menu .page[code=YH-ZKK-SXXXGTJ_GLY]").addClass("active")
//判断有无某一权限
/*function hasData(data){
let trdObj = JSON.parse(getCookie("trdObj"))
let lis = trdObj['YH-BLZK-ZKPF']
if(!lis){
return false
}
if(lis.indexOf(data)>-1){//有权限
return true
}
return false;
}*/
function getTabData(activePage) {
const dateStatrt = getPickerDate($("#datepicker"), 1)
const dateEnd = getPickerDate($("#datepicker2"), 2)
const start = new Date(dateStatrt).getTime()
const end = new Date(dateEnd).getTime()
if (start > end) {
$.alerModal({ "message": '开始时间不能大于结束时间~', type: "tip", time: '1000', isFather: true, fatherWrapper: $("#mainBox", parent.document) });
return
}
const param = {
"current":activePage ,
// size: 15,
// "deptName": deptName == "全部" ? "" : deptName || "",
// "name": deptName == "全部" ? "" : deptName || "",
// "asc": [data_asc], //升序
"ascs": [],
// "desc": [data_desc],
"descs": ["behospitalDate"], //降序
//"type": 0, //1-本月,2-本年,0-自定义时间(现在所有都是自定义时间,都会传开始日期和结束日期)
"startDate": dateStatrt.replace(/\//g, '-'),
"endDate": dateEnd.replace(/\//g, '-'),
"casesEntryId": timelinessId,
"size": 15
}
startDateParam = dateStatrt
endDateParam = dateEnd
$('.pagination').html("")
$('.key-list tbody').html(emptyBox('努力加载中...', '', 1))
let url
if (tableType === 1) {
url = api.getDeptA
} else {
url = api.getDeptB
}
post(url, param).then(res => {
if (res.data.code == '0') {
globaltableData = res.data.data || [];
console.log(globaltableData);
renderTabTitle(globaltableData)
renderTab(globaltableData, globaltableData.hospitalId, activePage);
// // if (isfirstRenderTitle === false) { renderTabTitle(data) } //首次渲染渲染Table表头
// // globaltableData = data;
// // rende renderPaginationrTab(data, data.hospitalId, activePage);
let totalNum =parseInt(globaltableData.data.total);
console.log(totalNum);
let totalPage = Math.ceil(totalNum / 15); // 假设每页15条
if (totalPage > 0) {
renderPagination(totalPage, activePage, totalNum);
} else {
$('.pagination').html("");
}
} else {
$.alerModal({
"message": res.data.msg,
type: "tip",
time: '1000',
isFather: true,
fatherWrapper: $("#mainBox", parent.document)
});
}
}).catch((e) => {
console.log(e);
});
}
getTabData(1)
$(".filter").on("click", function (e) {
deptName = deptNameTemp;
behospitalCode = behospitalCodeTemp;
if (deptName == "") {
$(".selectDept").attr({ 'title': "首次病程未在患者入院8小时内完成(杭州七院标准版)", 'data-id': '' }).val("首次病程未在患者入院8小时内完成(杭州七院标准版)")
}
getTabData(1)
})
// // 处理th tr数据
function formatTableData(data) {
let newColumns = data.filter(function (item, index) {
if (item.isShow === 1) {
return item
}
})
return newColumns
}
function renderTab(data, hisId, activePage) {
let formatColumns = formatTableData(data.columns)
data = data.data.records;
console.log(data);
// console.log("renderTab", data);
let str = ``
if(data.length===0){
$('.key-list tbody').html(emptyBox())
return;
}
for (let i = 0; i < data.length; i++) {
const item = data[i];
const pageSize = 15;
// 获取当前页的数据 (根据 activePage 计算要显示的起始位置和结束位置)
const startIndex = (activePage - 1) * pageSize;
// 获取当前页的数据
const currentPageData = data;
console.log("当前页数据", currentPageData);
let str = ``;
// 遍历当前页的数据并生成表格行
for (let i = 0; i < currentPageData.length; i++) {
const item = currentPageData[i];
if (tableType === 1) {
str += `
${startIndex + i + 1} |
${item.behospitalCode || "-"} |
${item.name || "-"} |
${item.sex || "-"} |
${item.fileCode || "-"} |
${item.doctorName || "-"} |
${item.behDeptName || "-"} |
${item.ruleName || "-"} |
${(item.behospitalDate || "-").split(' ')[0]} |
${(item.behospitalGmtCreate || "-").split(' ')[0]} |
${item.isPlacefile || "-"} |
`;
} else {
str += `
${startIndex + i + 1} |
${item.behospitalCode || "-"} |
${item.name || "-"} |
${item.sex || "-"} |
${item.fileCode || "-"} |
${item.doctorName || "-"} |
${item.behDeptName || "-"} |
${item.ruleName || "-"} |
${item.remark || "-"} |
${item.behospitalDate || "-"} |
${item.isPlacefile || "-"} |
`;
}
}
// console.log(str);
$('.key-list tbody').html(str?str:emptyBox())
/*bindScoreDetail(hisId)*/
// 跳转至详情页
$(".goHomeDetail").click(function () {
let casesName = $(this).attr("data-name") || '';
let casesId = $(this).attr("data-id");
let name = $(this).attr("dept-name");
name = name === "全院" ? "全部" : name;
let id = $(this).attr("dept-id");
$(parent.document).find("#contentIframe").attr("src", "uccDetail.html?from=3&deptName=" + name + "&deptId=" + id + "&casesEntryId=" + casesId + "&defectName=" + casesName + "&startDate=" + startDateParam + "&endDate=" + endDateParam)
})
// initScroll("partDetailControl","YX",1)
}
}
$('.selectDept').on("focus", function (e) {
e.stopPropagation()
// let val = $(this).val().trim()
// deptName = deptNameTemp = val
// val&&getDeptList(val)
$(".deptList ").css("display", "block")
})
$('.selectDept').on("blur", function (e) {
$(".deptList ").css("display", "none")
$(".selectDept .arrow").attr("src", iconDown)
})
$('.selectDept').on("input", function (e) {
let val = $(this).val().trim()
deptName = deptNameTemp = val
getDeptList(deptName)
})
//获取科室列表
getDeptList()
function getDeptList(val) {
post(api.getTimelinessList, { inputStr: val == "首次病程未在患者入院8小时内完成(杭州七院标准版)" ? "" : val || "" }).then(res => {
if (res.data.code == '0') {
const deptList = res.data.data || []
// console.log("111111111", deptList);
rendeDeptList(deptList)
} else {
rendeDeptList([])
}
}).catch((e) => {
})
}
function rendeDeptList(deptList) {
if (deptList.length == 0) {
$('.deptList').html("")
return
}
let str = ``;
for (let i = 0; i < deptList.length; i++) {
str += ` ${deptList[i].timelinessName}`
}
$('.deptList').html(str)
bindDeptSelect()
}
//科室选择
function bindDeptSelect() {
$('.deptItem').on("mousedown", function () {
let index = $(this).index()
if (index > 3) {
tableType = 2
} else {
tableType = 1
}
timelinessId = $(this).attr("data-id")
// console.log(timelinessId);
const deptItemName = $(this).attr("data-name")
const deptItemId = $(this).attr("data-id")
deptIdTemp = deptItemId;
deptNameTemp = deptItemName === "全部" ? "" : deptItemName;
$('.selectDept').val(deptItemName)
$('.selectDept ').attr('title', deptItemName)
$(".deptList").css("display", "none")
$('.selectDept').removeClass('unSelect')
// console.log("index", index);
})
}
//获取页面配置
// function getPageSet(){
// const dateStatrt = getPickerDate($("#datepicker"),1)
// const dateEnd = getPickerDate($("#datepicker2"),2)
// const start = new Date(dateStatrt).getTime()
// const end = new Date(dateEnd).getTime()
// if(start > end){
// $.alerModal({"message":'开始时间不能大于结束时间~',type:"tip",time:'1000',isFather: true, fatherWrapper: $("#mainBox", parent.document)});
// return
// }
// const param = {
// "name": deptName,
// "asc":data_asc, //升序
// "desc":data_desc, //降序
// "startDate":dateStatrt.replace(/\//g,'-'),
// "endDate":dateEnd.replace(/\//g,'-')
// }
// startDateParam = dateStatrt
// endDateParam = dateEnd
// post(api.unModifyMRStatistics,param).then(res =>{
// if(res.data.code == '0'){
// const data = res.data.data||[];
// renderTabTitle(data) //渲染Table表头
// }else{
// $.alerModal({"message":res.data.msg,type:"tip",time:'1000',isFather: true, fatherWrapper: $("#mainBox", parent.document)});
// }
// }).catch((e) =>{
// })
// }
// getPageSet()
// 渲染 table 表头
function renderTabTitle(data) {
isfirstRenderTitle = true;
data = data.columns;
// console.log("data", data);
let str = `
序号 | `;
// 遍历 columns 数据,渲染表头
for (let i = 0; i < data.length; i++) {
const item = data[i];
if (item.isShow == 1) {
str += `${item.columnName} | `;
}
}
// console.log("str", str); // 打印生成的表头
// 将生成的表头渲染到页面
$(".tabTitle").html(str);
// 绑定事件
bindOrder();
}
function loading() {
const str = `
`
$("#mainBox", parent.document).append(str)
}
function hideLoading() {
$("#mainBox .loadingBox", parent.document).remove()
}
// 上升下降筛选
function bindOrder() {
$("th[code]").off("click").on("click", function () {
const code = $(this).attr("code");
console.log(code, 'code');
let type;
// 根据当前状态切换升序和降序
if (data_asc === code) {
data_desc = code;
data_asc = "";
$("th[code]").removeClass("asc desc");
$(this).addClass("desc");
type = "desc";
} else {
data_desc = "";
data_asc = code;
$("th[code]").removeClass("asc desc");
$(this).addClass("asc");
type = "asc";
}
// 字段与实际对象字段的映射
const fieldMapping = {
"病人住院序号": "behospitalCode",
"病人姓名": "name",
"性别": "sex",
"病案号": "fileCode",
"主管医生": "doctorName",
"住院科室": "behDeptName",
"规则名称": "ruleName",
"入院日期": "behospitalDate",
"首次病程创建时间": "behospitalGmtCreate",
"是否归档": "isPlacefile",
"备注": "remark"
};
const field = fieldMapping[code];
if (!field) return; // 如果没有对应的字段则返回
// 判断字段类型,并执行排序
const isNumericField = ["behospitalCode", "fileCode", "isPlacefile"].includes(field);
const isDateField = ["behospitalDate", "behospitalGmtCreate"].includes(field);
globaltableData.data.records.sort((a, b) => {
if (isNumericField) {
return sortByKey(new Number(a[field]), new Number(b[field]), type);
} else if (isDateField) {
return sortByKey(new Date(a[field]), new Date(b[field]), type);
} else {
return sortByKey(a[field], b[field], type);
}
});
renderTab(globaltableData, globaltableData.hospitalId, 1);
});
}
// 通用排序函数
function sortByKey(a, b, type) {
if (type === "asc") {
return a > b ? 1 : (a < b ? -1 : 0);
} else {
return a < b ? 1 : (a > b ? -1 : 0);
}
}
//分页渲染
function renderPagination(totalPage, activePage, totalNum) {
let str = `共${totalPage}页/${totalNum}条数据
`;
// 如果总页数小于等于6,直接渲染所有页码
if (totalPage <= 6) {
for (let i = 1; i <= totalPage; i++) {
str += `${i}`;
}
} else {
// 如果总页数大于6
if (activePage <= 3) {
// 如果当前选中页小于等于3,渲染前4页并显示省略号
for (let i = 1; i <= 4; i++) {
str += `${i}`;
}
str += `...`;
str += `${totalPage}`;
} else if (activePage > totalPage - 3) {
// 如果当前页接近最后3页,渲染最后几页
str += `1`;
str += `...`;
for (let i = totalPage - 3; i <= totalPage; i++) {
str += `${i}`;
}
} else {
// 如果当前页在中间区域,渲染1、当前页前后、最后一页
str += `1`;
str += `...`;
str += `${activePage - 1}`;
str += `${activePage}`;
str += `${activePage + 1}`;
str += `...`;
str += `${totalPage}`;
}
}
str += `
`;
// 渲染分页HTML
$('.pagination').html(str);
// 高亮当前页
$(`.page${activePage}`).addClass('activePage');
// 绑定页码点击事件
$(".pageNum").off("click").on("click", function () {
const activePageNow = Number($(this).attr('data-page'));
getTabData(activePageNow);
});
// 绑定上一页按钮
$(".prePage").off("click").on("click", function () {
let activePageNow = Number($(".activePage").attr('data-page'));
if (activePageNow > 1) {
activePageNow--;
getTabData(activePageNow);
}
});
// 绑定下一页按钮
$(".nextPage").off("click").on("click", function () {
let activePageNow = Number($(".activePage").attr('data-page'));
if (activePageNow < totalPage) {
activePageNow++;
getTabData(activePageNow);
}
});
}
// function renderPagination(totalPage, activePage, totalNum) {
// let str = `共${totalPage}页/${totalNum}条数据
`
// if (totalPage <= 6) {
// for (let i = 1; i <= totalPage; i++) {
// str += `${i}`
// }
// } else {
// if (activePage <= 3) { //选中页数小于4
// for (let i = 1; i <= 4; i++) {
// str += `${i}`
// }
// str += `...`
// str += `${totalPage}`
// } else if (activePage > totalPage - 3) {
// str += `1`
// str += `...`
// str += `${totalPage - 3}`
// str += `${totalPage - 2}`
// str += `${totalPage - 1}`
// str += `${totalPage}`
// } else {
// str += `1`
// str += `...`
// str += `${activePage - 1}`
// str += `${activePage}`
// str += `${activePage + 1}`
// str += `...`
// str += `${totalPage}`
// }
// }
// str += `
`
// $('.pagination').html(str)
// $('.page' + activePage).addClass('activePage')
// $(".pageNum").on("click", function (e) {
// const activePageNow = Number($(this).attr('data-page'))
// getTabData(activePageNow)
// // renderPagination(totalPage,activePageNow,totalNum)
// })
// $(".prePage").on("click", function (e) {
// let activePageNow = Number($(".activePage").attr('data-page'))
// if (activePageNow > 1) {
// activePageNow--
// getTabData(activePageNow)
// // renderPagination(totalPage,activePageNow,totalNum)
// }
// })
// $(".nextPage").on("click", function (e) {
// let activePageNow = Number($(".activePage").attr('data-page'))
// if (activePageNow < totalPage) {
// activePageNow++
// getTabData(activePageNow)
// // renderPagination(totalPage,activePageNow,totalNum)
// }
// })
// }
$(".patientNumInp").on("input", function (e) {
const val = $(this).val().trim()
deptName = val
})
$(function () {
const iconCalenBlue = require("./../images/icon_calen_blue.png")
const iconCalenGrey = require("./../images/icon_calen_grey.png")
$('.datapickerBox').append(`
`)
$('.iconCalen').on("mouseenter", function (e) {
$(this).attr("src", iconCalenBlue)
})
$('.iconCalen').on("mouseleave", function (e) {
$(this).attr("src", iconCalenGrey)
})
$('.iconCalen').on("click", function (e) {
$(this).parent().find("input").focus()
})
$('.exportData').click(function () {
const start = new Date(startDateParam).getTime()
const end = new Date(endDateParam).getTime()
if (start > end) {
$.alerModal({ "message": '开始时间不能大于结束时间~', type: "tip", time: '1000', isFather: true, fatherWrapper: $("#mainBox", parent.document) });
return
}
let limitTime = 3 * 30 * 24 * 60 * 60 * 1000;
const param = {
//"type": 0, //1-本月,2-本年,0-自定义时间(现在所有都是自定义时间,都会传开始日期和结束日期)
"startDate": startDateParam.replace(/\//g, '-'),
"endDate": endDateParam.replace(/\//g, '-')
}
// if (start - end > limitTime) {
// $.alerModal({ "message": '最多只能导出90天', type: "tip", time: '1000', isFather: true, fatherWrapper: $("#mainBox", parent.document) });
// return
// } else {
// expJson(api.AdmunModifyMRSExportByDept, param).then(res => {
// downloadExportedData(res.data, "时效性相关统计管理员.xls")
// })
// }
// 直接调用导出函数,不设置时间限制
expJson(api.AdmunModifyMRSExportByDept, param).then(res => {
downloadExportedData(res.data, "时效性相关统计管理员.xls");
}).catch(error => {
// 添加错误处理,以便于在导出失败时给出提示
$.alerModal({ "message": '导出数据失败', type: "error", time: '1000', isFather: true, fatherWrapper: $("#mainBox", parent.document) });
});
// 初始渲染TableTitle
// getPageSet().then(res =>{
// $(".filter").click(); //初始查询
// })
})
});