Index: ssts-web/src/main/webapp/dx-disinfectsystem/js/reviewView/reviewView-BsTable.js =================================================================== diff -u --- ssts-web/src/main/webapp/dx-disinfectsystem/js/reviewView/reviewView-BsTable.js (revision 0) +++ ssts-web/src/main/webapp/dx-disinfectsystem/js/reviewView/reviewView-BsTable.js (revision 24840) @@ -0,0 +1,1290 @@ +/***************** + * 2018.11.08 + * 基于bootstrap-Table表格插件的审核打包js(现已不用) + * +/****全局变量**********/ +//任务组 +var taskGroup; +//审核界面的审核人是否默认为上一次审核的审核人(未配置或配置为false以外的值表示是,为false表示否) sstsConfig.reviewPageReviewerDefaultLastReviewer +var reviewPageReviewerDefaultLastReviewer = true; +/****************/ + +/** + * 文档就绪后执行 + */ +$(function () { + //获取任务组 + var paramName = "taskGroup"; + var reg = new RegExp("(^|&)" + paramName + "=([^&]*)(&|$)"); //构造一个含有目标参数的正则表达式对象 + var r = window.location.search.substr(1).match(reg); //匹配目标参数 + if (r != null) { + taskGroup = decodeURI(r[2]) + } + //页面一加载就获取焦点 + $("#barcode").focus(); + //加载表单 + renderTable(); + //点击导航 的审核统计、入筐器械包时才渲染数据 + $("a[href='#reviewedChartTab']").click(function(){ + $('#reviewedChartTable').bootstrapTable('refresh',{ + url: WWWROOT + "/disinfectSystem/packingReviewController/loadReviewRecord.mhtml" + }); + }); + $("a[href='#reviewedBasketTab']").click(function(){ + $('#tousseInstanceTable').bootstrapTable('refresh',{ + //url: "http://rap2api.taobao.org/app/mock/85153/disinfectSystem/tousseInstanceController/loadAllTousseInstance.mhtml"//没接口 + }); + }); + + //是否显示灭菌日期 + if(sstsConfig.printLabelWhenReviewing){ + $('#sterileDate').parent().show(); + datePick("sterileDate", "yyyy-mm-dd hh:ii", "bottom-right"); //加载时间插件 + } + + /************导航:审核任务的绑定事件******************** */ + //点击右边进入审核列表按钮 + $("#batchAddToussesToReviewedGrid").click(batchAddToussesToReviewedGrid); + //点击右边刷新 按钮 + $("#refreshUnReview").click(function () { + $("#unReviewTousseTable").bootstrapTable("refresh"); + }); + //点击审核物品 按钮 + $("#reviewTousse").click(function () { + reviewTousse(); + }) + //扫条码回车事件 + $("#barcode").keyup(function (event) { + if (event.keyCode == 13) { + //扫描条码 + scanBarcode(); + } + }); + + //点击右边修改按钮 + $("#modifyUnReviewTousseInstances").click(modifyTousseInstances); + //隐藏:修改器械包模态框时触发 + $('#modal-modifyTousseInstances').on('hidden.bs.modal', function () { + cleanForm('modifyTousseInstances'); + }); + //隐藏:显示图片模态框时触发 + $('#modal-packageImg').on('hidden.bs.modal', function () { + $('#materialGridTable').bootstrapTable('destroy'); + }); +}) + +/** + * 加载表单 + */ +function renderTable() { + /** 左边 页面的已加入的待审核器械包列表**/ + var forReviewGridHeaderColumns = [{ + field: 'tousseId', + visible: false + }, { + title: '器械包名称', + field: "tousseName", + align: 'center', + sortable: true //正序,逆序 + }, { + title: "条码", + field: "barcode", + align: 'center', + sortable: true + }, { + title: "包装类型", + field: "packageType", + align: 'center', + sortable: true + }, { + title: "灭菌开始日期", + field: "sterileStartDate", + align: 'center', + sortable: true + }, { + title: "灭菌程序", + field: "sterilingMethod", + align: 'center', + sortable: true + }, { + title: "灭菌方式", + field: "sterilingMode", + align: 'center', + sortable: true + }, { + title: "虚拟篮筐", + field: "virtualBasketSeqNum", + align: 'center', + sortable: true, + visible: false //隐藏 + }, { + title: '删除', + field: 'deleteItem', + align: 'center', + sortable: true, + formatter: function (value, row, index) { + var remove = ""; + return remove; + } + }]; + + $("#forReviewGrid").bootstrapTable({ + //url 动态补上 + columns: forReviewGridHeaderColumns, //列表头 + undefinedText: "", // 当数据为 undefined 时显示的字符 + striped: true, //是否显示行间隔色 + cache: false, //是否使用缓存,默认为true,所以一般情况下需要设置一下这个属性(*) + // pagination: true, //是否显示分页(*) + sortable: true, //是否启用排序 + sortOrder: "asc", //排序方式 + // toolbar: "#materialBar", + search: false, //是否显示表格搜索,此搜索是客户端搜索,不会进服务端,所以,个人感觉意义不大 + strictSearch: true, + showColumns: false, //是否显示所有的列 + showRefresh: false, //是否显示刷新按钮 + // height: 900, //行高,如果没有设置height属性,表格自动根据记录条数觉得表格高度 + //minimumCountColumns: 2, //最少允许的列数 + clickToSelect: true, //是否启用点击选中行 + uniqueId: "tousseId", //每一行的唯一标识,一般为主键列 + cardView: false, //是否显示详细视图 + detailView: false //是否显示父子表 + // removeByUniqueId: 1 + }); + + /*****************右边待审核的器械包****************************** */ + var unReviewTousseColumns = [{ + checkbox: true + }, { + field: 'id', + visible: false + }, { + field: 'scanned', + visible: false + }, { + title: '器械包名称', + field: "tousseName", + align: 'center', + sortable: true + }, { + title: '器械包类型', + field: "tousseType", + align: 'center', + sortable: true + }, { + title: "条码", + field: "barcode", + align: 'center', + sortable: true + }, { + title: "病人姓名", + field: "patientName", + align: 'center', + sortable: true + }, { + title: "诊疗号", + field: "treatmentNum", + align: 'center', + sortable: true + }, { + title: "住院号", + field: "hospitalNum", + align: 'center', + sortable: true + }, { + title: "包装类型", + field: "packageType", + align: 'center', + sortable: true + }, { + title: "是否加急", + field: "isUrgentTousse", + align: 'center', + sortable: true + }, { + title: '灭菌开始日期', + field: 'sterileStartDate', + align: 'center', + sortable: true + }, { + title: '装配人', + field: 'operator', + align: 'center', + sortable: true + }, { + title: '装配时间', + field: 'operationTimeStr', + align: 'center', + // width:'100%', + sortable: true + }, { + title: '灭菌程序', + field: 'sterilingType', + align: 'center', + sortable: true + }, { + title: '灭菌方式', + field: 'sterilingMode', + align: 'center', + sortable: true + }, { + title: '有效期至', + field: 'validUntilStr', + align: 'center', + sortable: true + }]; + + $("#unReviewTousseTable").bootstrapTable({ + url: WWWROOT + "/disinfectSystem/packingReviewController/findUnReviewedTousseInstanceList.mhtml", //服务器数据的加载地址。 + method: "get", //服务器数据的加载地址。 + dataType: "json", + // contentType: "application/x-www-form-urlencoded", + contentType:"application/json;charset=utf-8", + dataField: "rows", // 这是返回的json数组的key.默认好像是"rows".这里只有前后端约定好就行 + sidePagination: "server", //分页方式:client客户端分页,server服务端分页(*) + columns: unReviewTousseColumns, //列表头 + undefinedText: "", // 当数据为 undefined 时显示的字符 + striped: false, //是否显示行间隔色 + cache: false, //是否使用缓存,默认为true,所以一般情况下需要设置一下这个属性(*) + pagination: true, //是否显示分页 + // toolbar: "#materialBar", + pageNumber: 1, //初始化加载第一页,默认第一页 + pageSize: 20, //每页的记录行数(*) + pageList: [10, 25, 50, 100], //可供选择的每页的行数(*) + search: false, //是否显示表格搜索,此搜索是客户端搜索,不会进服务端 + showRefresh: false, //是否显示刷新按钮 + // height: 600, //行高,如果没有设置height属性,表格自动根据记录条数觉得表格高度 + cardView: false, //是否显示详细视图 + sortable: true, //是否启用排序 + sortOrder: "desc", //排序方式 + sortName: 'id', //排序字段 + idField: "id", //每一行的唯一标识,一般为主键列 + clickToSelect: true, //是否启用点击选中行 + queryParams: function (params) { //自定义参数,这里的参数是传给后台的,我这是是分页用的 + return { //这里的params是table提供的 + offset: params.offset, //从数据库第几条记录开始 + limit: params.limit, //每页多少行 + taskGroup: taskGroup, //任务组 + sortName: params.sort,//排序字段 + sortOrder: params.order//排序顺序 + }; + }, + onDblClickRow: function (row, $element) { //双击列触发 + //显示图片 + getAndShowTousseInModel(row); + }, + rowStyle: function (row, index) { //修改行样式 + // console.log(row.scanned); + var style = {}; + if (row.scanned) { + style = { + css: { + "background-color": "#ffff40" + } + }; + } + return style; + } + + }); + /***************审核统计****************** */ + var reviewedChartCm = [{ + title: '器械包名称', + field: 'tousseName', + align: 'center', + sortable: true + }, { + title: '审核人', + field: 'reviewer', + align: 'center', + sortable: true + }, { + title: '数量', + field: 'amount', + align: 'center', + sortable: true + }]; + + $("#reviewedChartTable").bootstrapTable({ + //url: WWWROOT + "/disinfectSystem/packingReviewController/loadReviewRecord.mhtml", //服务器数据的加载地址。 + method: "get", //服务器数据的加载地址。 + dataType: "json", + // contentType:"application/x-www-form-urlencoded", + dataField: "rows", // 这是返回的json数组的key.默认好像是"rows".这里只有前后端约定好就行 + sidePagination: "server", //分页方式:client客户端分页,server服务端分页(*) + columns: reviewedChartCm, //列表头 + undefinedText: "", // 当数据为 undefined 时显示的字符 + striped: true, //是否显示行间隔色 + cache: false, //是否使用缓存,默认为true,所以一般情况下需要设置一下这个属性(*) + pagination: true, //是否显示分页 + // toolbar: "#materialBar", + pageNumber: 1, //初始化加载第一页,默认第一页 + pageSize: 15, //每页的记录行数(*) + pageList: [10, 25, 50, 100], //可供选择的每页的行数(*) + search: false, //是否显示表格搜索,此搜索是客户端搜索,不会进服务端 + showRefresh: false, //是否显示刷新按钮 + // height: 600, //行高,如果没有设置height属性,表格自动根据记录条数觉得表格高度 + cardView: false, //是否显示详细视图 + sortable: true, //是否启用排序 + sortOrder: "asc", //排序方式 + // sortName: 'tousseName',//排序字段 + // idField: "id", //每一行的唯一标识,一般为主键列 + clickToSelect: true, //是否启用点击选中行 + queryParams: function (params) { + return { + taskGroup: taskGroup + }; + }, + onLoadSuccess: function(data){//远程数据加载成功时触发成功 + //console.log(data.rows); + var amount = 0; + if(!isUndefinedOrNullOrEmpty(data.rows)){ + amount = data.rows.length; + } + $('#reviewedsum').val(amount); + } + }); + + + + /***********入筐器械包*************** */ + var tousseInstanceCm = [{ + title: '名称', + field: 'name', + align: 'center', + sortable: true + }, { + title: '条形码', + field: 'barcode', + align: 'center', + sortable: true + }, { + title: '操作', + field: 'type', + align: 'center', + sortable: true + }]; + + $("#tousseInstanceTable").bootstrapTable({ + //url: "http://rap2api.taobao.org/app/mock/85153/disinfectSystem/tousseInstanceController/loadAllTousseInstance.mhtml", //服务器数据的加载地址。 + //url: WWWROOT +"/disinfectSystem/tousseInstanceController/loadAllTousseInstance.mhtml", //服务器数据的加载地址。 + method: "get", //服务器数据的加载地址。 + dataType: "json", + // contentType:"application/x-www-form-urlencoded", + dataField: "rows", // 这是返回的json数组的key.默认好像是"rows".这里只有前后端约定好就行 + sidePagination: "server", //分页方式:client客户端分页,server服务端分页(*) + columns: tousseInstanceCm, //列表头 + undefinedText: "", // 当数据为 undefined 时显示的字符 + striped: true, //是否显示行间隔色 + cache: false, //是否使用缓存,默认为true,所以一般情况下需要设置一下这个属性(*) + pagination: true, //是否显示分页 + // toolbar: "#materialBar", + pageNumber: 1, //初始化加载第一页,默认第一页 + pageSize: 15, //每页的记录行数(*) + pageList: [10, 25, 50, 100], //可供选择的每页的行数(*) + search: false, //是否显示表格搜索,此搜索是客户端搜索,不会进服务端 + showRefresh: false, //是否显示刷新按钮 + // height: 600, //行高,如果没有设置height属性,表格自动根据记录条数觉得表格高度 + cardView: false, //是否显示详细视图 + sortable: true, //是否启用排序 + sortOrder: "asc", //排序方式 + // sortName: 'tousseName',//排序字段 + // idField: "id", //每一行的唯一标识,一般为主键列 + clickToSelect: true, //是否启用点击选中行 + queryParams: function (params) { + return { + taskGroup: taskGroup + }; + } + }); + + //调整高度 + // console.log($(window).height()); + $("#unReviewTousseTable").bootstrapTable('resetView', { //右边待审任务列表 + height: $(window).height() - 230 + }); + $("#forReviewGrid").bootstrapTable('resetView', { //左边审核确认列表 + height: $(window).height() - 270 + }); + $("#reviewedChartTable").bootstrapTable('resetView', { //审核统计 + height: 650 + }); + $("#tousseInstanceTable").bootstrapTable('resetView', { //入筐器械包 + height: 640 + }); +} + +/********************进入审核列表************************************ */ +/** + * 点击右边进入审核列表按钮 + * 校验并添加左边审核确认的列表数据 + */ +function batchAddToussesToReviewedGrid() { + var selectedRecords = $('#unReviewTousseTable').bootstrapTable('getSelections'); //右边待审核列表已选择的器械包信息 + var forReviewGridDAta = $('#forReviewGrid').bootstrapTable('getData');//左边审核确认列表的数据 + var basketName = $('#basketName').val();//灭菌篮框名称 + var basketBarcode = $('#basketBarcode').val();//灭菌篮框条码 + //console.log(selectedRecords); + if (selectedRecords.length == 0) { + alert("请选择器械包!"); + return false; + } + //如果篮筐名称与条码都不为空时才进行判断 + if(!isUndefinedOrNullOrEmpty(basketName) && !isUndefinedOrNullOrEmpty(basketBarcode)){ + //校验灭菌方式 + if(validateSterilingMethod(selectedRecords) == false){ + return false; + } + } + //读取config.js的配置:审核页面点进入审核列表按钮,所选的器械包灭菌程序与审核确认列表的器械包的灭菌程序不同的,不会被添加至左边的已审核列表,true表示不会被添加至左边,默认及false表示会被添加至左边 + if(sstsConfig.tousseWithDifferentSterilingTypeCanNotBatchAddReview){ + records = []; + //左边的审核列表及第一条记录的灭菌程序 + var sterilingMethod; + if(forReviewGridDAta && forReviewGridDAta.length > 0){ + sterilingMethod = forReviewGridDAta[0]['sterilingMethod']; + } + if(!sterilingMethod){ + sterilingMethod = selectedRecords[0]['sterilingType']; + } + for ( var i = 0;i添加" ); + selectedRecords.splice(i, 1); + continue; + } + needValidateRecords.push(record); + } + } + // + if(rightGridVaildPass == false){ + alert("提示:所选的器械包灭菌方式不一致"); + // top.Ext.MessageBox.confirm("提示","待审核的器械包灭菌方式不一致,要继续审核吗?",function(btn){ + // if(btn == 'yes'){ + //添加到左边的审核确认列表 + addTousse(needValidateRecords); + // }else{ + // return false; + // } + // }); + }else{ + var leftGridVaildPass = true; + for(var i=0;i 1){ + for(var i = 1;i < selectedRecords.length;i++){ + if(firstSterilingMode != selectedRecords[i]["sterilingMode"]){ + var currentSterilingMode = selectedRecords[i]["sterilingMode"]; + //showResult(getDiffSterilingModeMessage(selectedRecords[0].data["tousseDefinition.name"] , currentSterilingMode, sterilingModeFromLeftReviewGrid)); + alert(getDiffSterilingModeMessage(selectedRecords[0].data["tousseDefinition.name"] , currentSterilingMode, sterilingModeFromLeftReviewGrid)); + return false; + } + } + } +} + +/** + *校验灭菌程序能否进入审核列表 + * @param {*} sType 灭菌程序 + * @returns + */ +function validateSterilingTypeCanAddToReview(sType,record) {//没接口 + var result = false; + $.ajax({ + type: 'get', + url: 'http://rap2api.taobao.org/app/mock/85153/disinfectSystem/tousseInstanceController/validateSterilingTypeCanAddToReview.mhtml', + //url:'/disinfectSystem/tousseInstanceController/validateSterilingTypeCanAddToReview.mhtml', + async: false, + dataType: 'json', + data: { + sType: sType + }, + success: function (result) { + // console.log(result); + if (result.success) { + result = true; + } else { + if(result.message){ + alert(result.message) + }else{ + alert("条码为" + record['barcode'] + "的" + record['tousseDefinition.name'] + "的灭菌程序 " + sType + " 不能通过<进入审核列表>添加"); + } + } + }, + error: function () { + + } + }) + return result; +} + +/** + * 获取左边审核列表里的包的灭菌方式 + * 如果列表的包数量为0,则返回null + * 如果列表的包数量大于0时,则取第一个包的灭菌方式,如果灭菌方式为空,则返回空字符串:"" + */ +function getSterilingModeFromLeftReviewGrid (){ + var store = $("#forReviewGrid").bootstrapTable("getData"); + var tousseCount = store.length; + if(tousseCount == 0){ + return null; + } + var record = store[0]; + var sterilingMode = record.sterilingMode; + if(!sterilingMode){ + return ""; + } + return sterilingMode; +} +/** + * 根据当前物品的名称、灭菌方式及原有物品的灭菌方式获取提示消息 + * @param currentTousseName 当前物品的名称 + * @param currentSterilingMode 当前物品的灭菌方式 + * @param orginalSterilingMode 原有物品的灭菌方式 + */ +function getDiffSterilingModeMessage(currentTousseName , currentSterilingMode , orginalSterilingMode){ + return "【"+ currentTousseName +"】"+ (currentSterilingMode ? ("属于【"+ currentSterilingMode +"】物品") : "") + +"与原有"+ (orginalSterilingMode ? ("【"+ orginalSterilingMode +"】物品") : "物品灭菌方式") +"不一致,不能入框审核"; +} + +/** + * 添加左边的审核确认列表 + * @param {*} records + */ +function addTousse(records) { + // console.log(records); + for (var i = 0; i < records.length; i++) { + var record = records[i]; + var tousseId = record.id; + var tousseName = record.tousseName; + //var sterilizer = records.sterilizer;//灭菌炉号 + //var frequency = records.frequency;//灭菌炉次 + // var virtualBasketSeqNum = records[i].data['virtualBasketSeqNum'];//虚拟篮框 + var sterilingType = record.sterilingType; + var sterilingMode = record.sterilingMode; + var barcode = record.barcode; + var sterileStartDate = record.sterileStartDate; + var packageType = record.packageType; + + //若左边已有该器械包id则不用放到左边 + var forReviewGridDatas = $("#forReviewGrid").bootstrapTable("getData"); + if (isExist(forReviewGridDatas, "tousseId", tousseId)) { + continue; + } + var tousseInstance = { + tousseId: tousseId, + tousseName: tousseName, + barcode: barcode, + sterileStartDate: sterileStartDate, + sterilingMethod: sterilingType, + sterilingMode: sterilingMode, + packageType: packageType + // sterilizer : sterilizer, + // virtualBasketSeqNum : virtualBasketSeqNum, + // frequency : frequency + } + // var tousseInstance = new tousseInstanceRecord(tousseId,tousseName,barcode,null,sterileStartDate,null,sterilingType,sterilingMode,packageType,null); + // console.log(tousseInstance); + //插入到审核确认列表 + $("#forReviewGrid").bootstrapTable("insertRow", { + index: 0, + row: tousseInstance + }) + //记日志 + // logItems.push({tousseId:tousseId,tousseName:tousseName,barcode:barcode}); + } + onScannedTousseAmountChanged(); +} + +/***********************旧表格载入没有灭菌炉号和灭菌炉次字段(新页面是否需要验证?)********* */ +/** + *验证炉号 + * @param {*} records 右边待审核选中的任务列表 + */ +function validateSterilizer(records){ + var tempPS = null; + var rightGridVaildPass = true; + //验证右边grid选中的项是否是 相同的灭菌炉 + for ( var i = 0;i0){ + // Ext.Msg.confirm("审核确认","系统检测到您已扫描过["+basketName+"],是否要审核["+basketName+"]?",function(btn){ + // if(btn=='yes'){ + reviewTousse(basketName,basketBarcode); + // } + // }); + } + } + $("#basketName").val(rows[0].name); //篮框名字 + $("#basketBarcode").val(rows[0].barcode); //篮框条码 + $("#barcode").val(""); + // speaker.speak(obj.containerName); + return; + } + //器械包 + if (barcodeType == "器械包") { + // console.log("器械包"); + // if(taskGroup != reuslt_taskGroup){ + // alert("该条码所对应的器械包不属于当前任务组!"); + // $("#barcode").val(""); + // return; + // } + for (var i = 0; i < rows.length; i++) { + var data = rows[i]; + // console.log(data); + //获取左边审核列表的包的灭菌方式 + var sterilingModeFromLeftReviewGrid = getSterilingModeFromLeftReviewGrid(); + //判断所选中的包里是否有灭菌方式不同的包,如果有则进行提示不能扫入,没有再判断是否有和左边审核列表中的包的灭菌方式不一致,如果有则进行提示不能扫入 + if(sterilingModeFromLeftReviewGrid || sterilingModeFromLeftReviewGrid === "") { + if((data.sterilingMode || sterilingModeFromLeftReviewGrid) && data.sterilingMode != sterilingModeFromLeftReviewGrid){ + showResult(getDiffSterilingModeMessage(data.name , data.sterilingMode, sterilingModeFromLeftReviewGrid)); + return false; + } + } + // + var tousseInstance = { + tousseId: data.id, + tousseName: data.name, + barcode: data.barcode, + sterileStartDate: data.sterileStartDate, + sterilingMethod: data.sterilingMethod, + sterilingMode: data.sterilingMode, + packageType: data.packageType, + virtualBasketSeqNum: data.virtualBasketSeqNum + } + //插入到审核确认列表 + $("#forReviewGrid").bootstrapTable("insertRow", { + index: 0, + row: tousseInstance + }) + } + onScannedTousseAmountChanged(); // 待审核包数量数量变化处理 + // speaker.speak(obj.tousseName); + return; + } + //旧代码接口会返回的类型// + if(barcodeType == "basketNotFound"){//条码不存在 + alert("找不到该包或篮筐或人员信息。"); + $("#barcode").val(""); + return; + } + if(barcodeType == "basketUsed"){// + //alert("无法录入篮筐,篮筐正处于[" + obj.status + "]状态"); + alert("无法录入篮筐,篮筐正处于[]状态"); + clearBarcodeAndBasketName(); + return; + } + if(barcodeType == "erroeStatus"){ + showResult("器械包状态异常,请录入待审核的器械包"); + $("#barcode").val(""); + return; + } + if(returnType == "noResult"){//无结果输出 + //showResult("无符合条件的器械包。" , null , sstsConfig.messagePauseTimeOnReviewPage); + return; + } + if(returnType == "multiTousseInstancesSuccess"){//扫描的是虚拟篮框(单个或首尾)或首尾器械包(返回结果为单个器械包,暂保留) + // var tousseInstanceArray = obj.tousseInstances; + // if(tousseInstanceArray && tousseInstanceArray.length > 0){ + // if(taskGroup != tousseInstanceArray[0].taskGroup){ + // showResult("该条码所对应的器械包不属于当前任务组。" , null , sstsConfig.messagePauseTimeOnReviewPage); + // Ext.getCmp('barcode').setValue(''); + // return; + // } + // var alreadyAdd = 0; + // var speakBasket = new SpeakBasket(); + // for(var i = 0;i < tousseInstanceArray.length;i++){ + // if(Ext.getCmp('forReviewGrid').getStore().find('barcode', tousseInstanceArray[i].barcode) != -1){ + // continue; + // } + // var tousseInstance = new tousseInstanceRecord({ + // id: tousseInstanceArray[i].tousseId, + // tousseDefinitionName: tousseInstanceArray[i].tousseName, + // barcode: tousseInstanceArray[i].barcode, + // packageType: tousseInstanceArray[i].packageType, + // sterileStartDate: tousseInstanceArray[i].sterileStartDate, + // sterilingMethod:tousseInstanceArray[i].sterilingMethod, + // sterilingMode:tousseInstanceArray[i].sterilingMode, + // virtualBasketSeqNum:tousseInstanceArray[i].virtualBasketSeqNum + // }); + + // Ext.getCmp('forReviewGrid').getStore().insert(0,tousseInstance); + // alreadyAdd++; + // speakBasket.addGoods('',tousseInstanceArray[i].tousseName,1); + // } + // if(alreadyAdd > 0){ + // if(hiddenEndBarcode || currentScanMode == 'single'){ + // Ext.getCmp('barcode').setValue("");//如果未使用虚拟篮筐机制或者使用篮筐机制但扫描模式为单个扫描,扫描成功后需要清除该文本内容 + // }else{ + // Ext.getCmp('barcodeEnd').focus();//否则不清除,条码/篮筐(尾)获得焦点 + // } + // speakBasket.speakContent(); + // }else{ + // showResult("未找到相应的器械包或器械包已扫描" , null , sstsConfig.messagePauseTimeOnReviewPage); + // } + // onScannedTousseAmountChanged();// 待审核包数量数量变化处理 + // } + } +} +/***************************************************** */ + + + +/***********************审核物品************************************ */ +/** + * 审核物品 + * @param {*} basketName + * @param {*} basketBarcode + */ +function reviewTousse(basketName, basketBarcode) { + var forReviewGridData = $("#forReviewGrid").bootstrapTable("getData");// + var count =forReviewGridData.length; + var sterileDate = $("#sterileDate").val(); //灭菌时间 + var reviewer = $("#reviewer").val(); //审核名字 + var reviewerCode = $("#reviewerCode").val(); //审核工号 + //验证当前登录用户属于一级供应室还是二级供应室 + //var isFirstRoomPeople = checkForSupplyType();//没接口 + var isFirstRoomPeople = true;//暂时为true + // 如果是一级供应室用户,并且需要入筐;或者是二级供应室用户,并且二级供应室需要入筐 + if ((sstsConfig.mustScanBasketForTousseReview && isFirstRoomPeople) || (sstsConfig.mustScanBasketForTousseReviewOf2ndSupplyRoom && !isFirstRoomPeople)){ + if (isObjEmpty(basketName)) { + //判断所扫器械包是否已全部加入至虚拟篮筐,如存在有未加入虚拟篮筐的器械包则进行提示,否则通过 + //var alreadyJoinVirtualBasket = true;//是否加入虚拟篮筐 + for(var i = 0;i < count ;i++){ + var virtualBasketSeqNum = forReviewGridData[i]['virtualBasketSeqNum']; + if(!virtualBasketSeqNum || virtualBasketSeqNum == ''){ + //showResult('请先扫描灭菌篮筐' , null , sstsConfig.messagePauseTimeOnReviewPage); + alert('请先扫描灭菌篮筐'); + return; + } + } + } + } + //获得器械包ids + var tousseIds = ""; + for (var index = 0; index < count; index++) { + var data = forReviewGridData[index]; + if (tousseIds) { + tousseIds += ";" + data.tousseId; + } + tousseIds += data.tousseId; + } + if (tousseIds == "") { + alert("待审核器械包列表为空!"); + return; + } + // 灭菌开始日期校验,并提示 + var confirmMessage = ''; + if (!isUndefinedOrNullOrEmpty(sterileDate) && count > 1) { + confirmMessage = '所有器械包灭菌开始日期都将修改为'+sterileDate+'!\r\n'; + }else{ + var sterileDates = {}; + var sterileStartDateCount = 0; + for (var i = 0; i < count; i++) { + var sterileStartDate = forReviewGridData[i].sterileStartDate; + if(!isUndefinedOrNullOrEmpty(sterileStartDate)){ + if(sterileDates.hasOwnProperty(sterileStartDate)){ + continue; + } + sterileDates[sterileStartDate] = sterileStartDate; + ++sterileStartDateCount; + } + } + } + if(sterileStartDateCount > 1){ + confirmMessage = '器械包灭菌开始时间不一致!\r\n'; + } + if(basketName != ''){ + confirmMessage += '是否审核下列器械包并将其放入['+basketName+']中?'; + }else{ + confirmMessage += openMustScanBasketTips; + } + // Ext.MessageBox.confirm("请确认",confirmMessage,function(btn) { + // if(btn=='yes') { + reviewTousseInstance(tousseIds, reviewer, reviewerCode, sterileDate, basketName, basketBarcode, taskGroup); + // } + // }) +} + +/** + *验证当前登录用户属于一级供应室还是二级供应室 + */ +function checkForSupplyType(){//没接口 + var isFirstRoomPeople = false;//是否一级供应室 + $.ajax({ + type: 'get', + // UserTableManager.checkForSupplyType + //url: 'http://rap2api.taobao.org/app/mock/85153/disinfectSystem/packingReviewController/reviewTousseInstance.mhtml', + async: false, + dataType: 'json', + success: function (result) { + // console.log(result); + if (result.success) { + if(result.result){//一级供应室 + isFirstRoomPeople = true; + } + } + }, + error: function () { + + } + }) + return isFirstRoomPeople; +} + +/** + * 调用审核物品接口 + * @param {*} tousseIds + * @param {*} reviewer + * @param {*} reviewerCode + * @param {*} sterileDate + * @param {*} basketName + * @param {*} basketBarcode + * @param {*} taskGroup + */ +function reviewTousseInstance(tousseIds, reviewer, reviewerCode, sterileDate, basketName, basketBarcode, taskGroup) { + if(isUndefinedOrNullOrEmpty(sterileDate)){ + sterileDate = new Date(); + } + $.ajax({ + type: 'get', + url: WWWROOT + "/disinfectSystem/packingReviewController/reviewTousseInstance.mhtml", //审核物品 + async: false, + dataType: 'json', + data: { + tousseIds: tousseIds, + sterileBasketBarcode: basketBarcode, + basketName : basketName, + taskGroup: taskGroup, + reviewerName: reviewer, + reviewerCode: reviewerCode, + sterileDate: sterileDate.getTime() + }, + success: function (result) { + // console.log(result); + if (result.success) { + // 审核时打印标签 + // if (sstsConfig.printLabelWhenReviewing == true){ + // var tousses = result.tousses; + // var printGroupType = Ext.getCmp('printGroupType').getValue(); + // var cfg = createPrintLabelsConfig(printGroupType); + // doPrintLabels(tousses,cfg);//打印接口 + // } + alert("审核成功"); + //待审核列表刷新 + $("#unReviewTousseTable").bootstrapTable("refresh"); + //审核统计刷新 + $("#reviewedChartTable").bootstrapTable("refresh"); + //已审核列表清空 + $("#forReviewGrid").bootstrapTable("removeAll"); + clearBarcodeAndBasketName(); + clearReviewInfoByConfig(); + onScannedTousseAmountChanged(); // 待审核包数量数量变化处理 + } else { + alert("审核失败:" + result.message); + } + }, + error: function () { + + } + }) +} + +/************************************************************* */ + + +/** + * + * @param {*} data + * @param {*} field + * @param {*} value + */ +function isExist(data, field, value) { + // console.log("进入是否存在:"+data); + //是否为数组 + if (Array.isArray(data)) { + for (var i = 0; i < data.length; i++) { + var record = data[i]; + if (record[field] == value) { + return true; + } + } + } else { + if (data[field] == value) { + return true; + } + } + return false; +} + +//当左边扫描的审核器械包数量变化后调用 +function onScannedTousseAmountChanged() { + // 重置待审核器械包数量 + var forReviewGridDAta = $('#forReviewGrid').bootstrapTable('getData'); + // console.log(forReviewGridDAta); + var amount = forReviewGridDAta.length; + $('#alreadyScanAmount').val(amount); + // + var scannedInfo = {}; + for (var i = 0; i < forReviewGridDAta.length; i++) { + var tousseId = forReviewGridDAta[i].tousseId; + if (!isUndefinedOrNullOrEmpty(tousseId)) { + scannedInfo[tousseId] = tousseId; + } + } + // console.log(scannedInfo); + var unReviewTousseTableData = $('#unReviewTousseTable').bootstrapTable('getData'); + for (var index = 0; index < unReviewTousseTableData.length; index++) { + var id = unReviewTousseTableData[index].id; + if (scannedInfo.hasOwnProperty(id)) { + // console.log(index); + $('#unReviewTousseTable').bootstrapTable('updateCell', { + index: index, //行索引 + field: 'scanned', //字段名称 + value: true //新字段值 + }) + continue; + } + $('#unReviewTousseTable').bootstrapTable('updateCell', { + index: index, + field: 'scanned', + value: false + }) + }; +} + +function clearBarcodeAndBasketName() { + $("#barcode").val(""); + $("#basketName").val(""); + $("#basketBarcode").val(""); +} +/** + * 根据id删除指定表格列 + * @param {*} tousseId + */ +function removeTableItemById(tableId,tousseId) { + // console.log(tousseId); + $("#"+tableId).bootstrapTable("removeByUniqueId", tousseId); + onScannedTousseAmountChanged(); +} + +/** + *根据form表单id清除数据 + * @param {*} formId + */ +function cleanForm(formId) { + $('#' + formId).find('input,select,textarea').each(function () { + $(this).val(''); + $(this).empty(); + }); +} + +/** + * 如果配置了要清除审核人,则清除审核人,否则不干活 + */ +function clearReviewInfoByConfig() { + //如果审核界面的审核人是否默认为上一次审核的审核人配置为false,则审核完后需要重新清空 + if (reviewPageReviewerDefaultLastReviewer == false) { + $("#reviewer").val(""); + $("#reviewerCode").val(""); + } +} + +//日期插件 +function datePick(dateId, format, direction) { + $("#" + dateId).datetimepicker({ //选择年月日 + format: format, + language: 'zh-CN', + weekStart: 1, + todayBtn: 1, //显示‘今日’按钮 + autoclose: true, //当选择一个日期之后是否立即关闭此日期时间选择器。 + todayHighlight: true, //是否高亮当前日期 + startView: 2, //Number, String. 默认值:0, 'hour',日期时间选择器所能够提供的最精确的时间选择视图。 + minView: 2, + clearBtn: true, //清除按钮 + forceParse: 0, + minView: 2, //最小精确值 0:到分.1:到时,2:到日 + pickerPosition: direction + }); +} +datePick("sterileStartTime", "yyyy-mm-dd hh:ii", "bottom-right"); //灭菌时间 + +//调整窗口时自适应 +$(window).resize(function () { + // console.log("窗口高度:" + $(window).height()); + //暂时写着:样式还是有问题 + $("#forReviewGrid").bootstrapTable('resetView', { + height: $(window).height() - 280 + }); + $("#unReviewTousseTable").bootstrapTable('resetView', { + height: $(window).height() - 300 + }); + $("#reviewedChartTable").bootstrapTable('resetView'); + $("#tousseInstanceTable").bootstrapTable('resetView'); +}) + +//旧方法-------extjs 清除扫描内容 +// function clearScanText(){ +// var barcodeEnd = Ext.getCmp("barcodeEnd").getValue().Trim(); +// // if(barcodeEnd == '') +// { +// if(hiddenEndBarcode || currentScanMode == 'single'){ +// Ext.getCmp('barcode').setValue("");//如果未使用虚拟篮筐机制或者使用篮筐机制但扫描模式为单个扫描,扫描成功后需要清除该文本内容 +// }else{ +// Ext.getCmp('barcodeEnd').focus();//否则不清除,条码/篮筐(尾)获得焦点 +// } +// } +// } \ No newline at end of file Index: ssts-web/src/main/webapp/dx-disinfectsystem/css/reviewView/reviewView.css =================================================================== diff -u -r24711 -r24840 --- ssts-web/src/main/webapp/dx-disinfectsystem/css/reviewView/reviewView.css (.../reviewView.css) (revision 24711) +++ ssts-web/src/main/webapp/dx-disinfectsystem/css/reviewView/reviewView.css (.../reviewView.css) (revision 24840) @@ -42,6 +42,12 @@ padding-left: 0; border-left:1px solid #aedeb4; } +.yellow{ + background-color: #ffff40 !important; +} +.reallyHidden { + display:none !important; +} /* .fixed-table-pagination{ position: fixed; bottom: 0; Index: ssts-web/src/main/webapp/dx-disinfectsystem/js/reviewView/review-Image.js =================================================================== diff -u --- ssts-web/src/main/webapp/dx-disinfectsystem/js/reviewView/review-Image.js (revision 0) +++ ssts-web/src/main/webapp/dx-disinfectsystem/js/reviewView/review-Image.js (revision 24840) @@ -0,0 +1,89 @@ +/**********************显示器械包图片模态框--start**************************************** */ +/** + * 显示图片模态框 + */ +function getAndShowTousseInModel(record) { + // console.log(record); + if (typeof (record) == 'object') { + var tousseDefinition = record.tousseDefinition; + var materialName = tousseDefinition.name; + var tousseDefinitionId = tousseDefinition.id; + $("#modal-packageImg .modal-title").text(materialName + "信息") + $("#modal-packageImg").modal({ + show: true, + backdrop: "static" + }); + getAndShowTousseInfoDiv(materialName,tousseDefinitionId); + } +} +//展示器械包图片信息 +function getAndShowTousseInfoDiv(tousseName,tousseDefinitionId) { + renderTousseInfo(tousseName,tousseDefinitionId); + +} + +function renderTousseInfo(tousseName,tousseDefinitionId){ + var materialStore = getMaterialStore(tousseName,tousseDefinitionId); + var materialGridTableColumns = [{ + field: 'materialDefinitionId', + visible: false + }, { + title: '材料名称', + field: "name", + align: 'center', + sortable: true //正序,逆序 + },{ + title:'数量', + field:'count', + align:'center', + sortable:true + }]; + $('#materialGridTable').bootstrapTable({ + data: materialStore, + // url:WWWROOT + '/disinfectSystem/baseData/tousseDefinitionAction!getMaterialDefinitionByTousseName.do', + // method: "post", //服务器数据的加载地址。 + dataType: "json", + // contentType: "application/x-www-form-urlencoded", + sidePagination: "server", //分页方式:client客户端分页,server服务端分页(*) + columns: materialGridTableColumns, //列表头 + undefinedText: "", // 当数据为 undefined 时显示的字符 + striped: false, //是否显示行间隔色 + cache: false, //是否使用缓存,默认为true,所以一般情况下需要设置一下这个属性(*) + pagination: false, //是否显示分页 + search: false, //是否显示表格搜索,此搜索是客户端搜索,不会进服务端 + showRefresh: false, //是否显示刷新按钮 + height: 400, //行高,如果没有设置height属性,表格自动根据记录条数觉得表格高度 + cardView: false, //是否显示详细视图 + sortable: true, //是否启用排序 + sortOrder: "desc", //排序方式 + sortName: 'materialDefinitionId', //排序字段 + idField: "materialDefinitionId", //每一行的唯一标识,一般为主键列 + clickToSelect: true, //是否启用点击选中行 + onDblClickRow: function (row, $element) { //双击列触发 + //显示图片 + //getAndShowTousseInModel(row); + } + }) +} + +function getMaterialStore(tousseName,tousseDefinitionId){ + var materialStore = []; + $.ajax({ + type: "post", + url: WWWROOT + '/disinfectSystem/baseData/tousseDefinitionAction!getMaterialDefinitionByTousseName.do', + dataType: "json", + async:false, + data: { + tousseName : tousseName, + tousseDefinitionId:tousseDefinitionId + }, + success: function (response) { + // console.log(response); + materialStore = response; + } + }); + return materialStore; +} + + +/************************显示图片模态框--end*********************************************** */ \ No newline at end of file Index: ssts-web/src/main/webapp/dx-disinfectsystem/js/reviewView/modifyTousseInstances.js =================================================================== diff -u -r24711 -r24840 --- ssts-web/src/main/webapp/dx-disinfectsystem/js/reviewView/modifyTousseInstances.js (.../modifyTousseInstances.js) (revision 24711) +++ ssts-web/src/main/webapp/dx-disinfectsystem/js/reviewView/modifyTousseInstances.js (.../modifyTousseInstances.js) (revision 24840) @@ -5,7 +5,8 @@ */ function modifyTousseInstances() { // console.log("修改按钮"); - var selectRecords = $('#unReviewTousseTable').bootstrapTable('getSelections'); + // var selectRecords = $('#unReviewTousseTable').bootstrapTable('getSelections'); + var selectRecords = getSelectedRowsData(unReviewTousseGrid); //右边待审核列表已选择的器械包信息 // console.log(selectRecords); if (selectRecords.length == 0) { alert("请选择要修改的器械包!"); Index: ssts-web/src/main/webapp/dx-disinfectsystem/js/reviewView/reviewView.js =================================================================== diff -u -r24711 -r24840 --- ssts-web/src/main/webapp/dx-disinfectsystem/js/reviewView/reviewView.js (.../reviewView.js) (revision 24711) +++ ssts-web/src/main/webapp/dx-disinfectsystem/js/reviewView/reviewView.js (.../reviewView.js) (revision 24840) @@ -3,6 +3,14 @@ var taskGroup; //审核界面的审核人是否默认为上一次审核的审核人(未配置或配置为false以外的值表示是,为false表示否) sstsConfig.reviewPageReviewerDefaultLastReviewer var reviewPageReviewerDefaultLastReviewer = true; +//左边待审核器械包列表grid +var forReviewGrid; +//右边右边待审核的器械包列表grid +var unReviewTousseGrid; +//今天审核任务统计列表grid +var reviewedChartGrid; +//入筐器械包列表grid +var reviewedBasketGrid; /****************/ /** @@ -16,36 +24,46 @@ if (r != null) { taskGroup = decodeURI(r[2]) } - //加载表单 - renderTable(); - //点击导航 的审核统计、入筐器械包时才渲染数据 - $("a[href='#reviewedChartTab']").click(function(){ - $('#reviewedChartTable').bootstrapTable('refresh',{ - url: WWWROOT + "/disinfectSystem/packingReviewController/loadReviewRecord.mhtml" - }); - }); - $("a[href='#reviewedBasketTab']").click(function(){ - $('#tousseInstanceTable').bootstrapTable('refresh',{ - //url: "http://rap2api.taobao.org/app/mock/85153/disinfectSystem/tousseInstanceController/loadAllTousseInstance.mhtml"//没接口 - }); - }); - + //渲染grid + renderGrids(); //是否显示灭菌日期 - if(sstsConfig.printLabelWhenReviewing){ + if (sstsConfig.printLabelWhenReviewing) { $('#sterileDate').parent().show(); datePick("sterileDate", "yyyy-mm-dd hh:ii", "bottom-right"); //加载时间插件 } + //页面一加载就获取焦点 + $("#barcode").focus(); + //点击导航 的审核统计、入筐器械包时才渲染数据 + $("a[href='#reviewedChartTab']").click(function () { + // + setGridData(reviewedChartGrid, WWWROOT + "/disinfectSystem/packingReviewController/loadReviewRecord.mhtml", { + taskGroup: taskGroup + }); + // + setReviewedsum(); + }); + $("a[href='#reviewedBasketTab']").click(function () { + // setGridData(reviewedBasketGrid, 'http://rap2api.taobao.org/app/mock/85153/disinfectSystem/tousseInstanceController/loadAllTousseInstance.mhtm', { //没接口 + // taskGroup: taskGroup + // }); + }); /************导航:审核任务的绑定事件******************** */ //点击右边进入审核列表按钮 $("#batchAddToussesToReviewedGrid").click(batchAddToussesToReviewedGrid); //点击右边刷新 按钮 $("#refreshUnReview").click(function () { - $("#unReviewTousseTable").bootstrapTable("refresh"); + // + renderGridDateAndPage(unReviewTousseGrid, 'unReviewGridPager', + WWWROOT + "/disinfectSystem/packingReviewController/findUnReviewedTousseInstanceList.mhtml", { + taskGroup: taskGroup + }); }); //点击审核物品 按钮 $("#reviewTousse").click(function () { - reviewTousse(); + var basketName = $("#basketName").val(); + var basketBarcode = $("#basketBarcode").val(); + reviewTousse(basketName,basketBarcode); }) //扫条码回车事件 $("#barcode").keyup(function (event) { @@ -54,7 +72,6 @@ scanBarcode(); } }); - //点击右边修改按钮 $("#modifyUnReviewTousseInstances").click(modifyTousseInstances); //隐藏:修改器械包模态框时触发 @@ -63,410 +80,71 @@ }); //隐藏:显示图片模态框时触发 $('#modal-packageImg').on('hidden.bs.modal', function () { - $('#materialGridTable').bootstrapTable('destroy'); + $('#materialGridTable').bootstrapTable('destroy'); }); }) +/******************************* */ -/** - * 加载表单 - */ -function renderTable() { - /** 左边 页面的已加入的待审核器械包列表**/ - var forReviewGridHeaderColumns = [{ - field: 'tousseId', - visible: false - }, { - title: '器械包名称', - field: "tousseName", - align: 'center', - sortable: true //正序,逆序 - }, { - title: "条码", - field: "barcode", - align: 'center', - sortable: true - }, { - title: "包装类型", - field: "packageType", - align: 'center', - sortable: true - }, { - title: "灭菌开始日期", - field: "sterileStartDate", - align: 'center', - sortable: true - }, { - title: "灭菌程序", - field: "sterilingMethod", - align: 'center', - sortable: true - }, { - title: "灭菌方式", - field: "sterilingMode", - align: 'center', - sortable: true - }, { - title: "虚拟篮筐", - field: "virtualBasketSeqNum", - align: 'center', - sortable: true, - visible: false //隐藏 - }, { - title: '删除', - field: 'deleteItem', - align: 'center', - sortable: true, - formatter: function (value, row, index) { - var remove = ""; - return remove; - } - }]; - - $("#forReviewGrid").bootstrapTable({ - //url 动态补上 - columns: forReviewGridHeaderColumns, //列表头 - undefinedText: "", // 当数据为 undefined 时显示的字符 - striped: true, //是否显示行间隔色 - cache: false, //是否使用缓存,默认为true,所以一般情况下需要设置一下这个属性(*) - // pagination: true, //是否显示分页(*) - sortable: true, //是否启用排序 - sortOrder: "asc", //排序方式 - // toolbar: "#materialBar", - search: false, //是否显示表格搜索,此搜索是客户端搜索,不会进服务端,所以,个人感觉意义不大 - strictSearch: true, - showColumns: false, //是否显示所有的列 - showRefresh: false, //是否显示刷新按钮 - // height: 900, //行高,如果没有设置height属性,表格自动根据记录条数觉得表格高度 - //minimumCountColumns: 2, //最少允许的列数 - clickToSelect: true, //是否启用点击选中行 - uniqueId: "tousseId", //每一行的唯一标识,一般为主键列 - cardView: false, //是否显示详细视图 - detailView: false //是否显示父子表 - // removeByUniqueId: 1 - }); - - /*****************右边待审核的器械包****************************** */ - var unReviewTousseColumns = [{ - checkbox: true - }, { - field: 'id', - visible: false - }, { - field: 'scanned', - visible: false - }, { - title: '器械包名称', - field: "tousseName", - align: 'center', - sortable: true - }, { - title: '器械包类型', - field: "tousseType", - align: 'center', - sortable: true - }, { - title: "条码", - field: "barcode", - align: 'center', - sortable: true - }, { - title: "病人姓名", - field: "patientName", - align: 'center', - sortable: true - }, { - title: "诊疗号", - field: "treatmentNum", - align: 'center', - sortable: true - }, { - title: "住院号", - field: "hospitalNum", - align: 'center', - sortable: true - }, { - title: "包装类型", - field: "packageType", - align: 'center', - sortable: true - }, { - title: "是否加急", - field: "isUrgentTousse", - align: 'center', - sortable: true - }, { - title: '灭菌开始日期', - field: 'sterileStartDate', - align: 'center', - sortable: true - }, { - title: '装配人', - field: 'operator', - align: 'center', - sortable: true - }, { - title: '装配时间', - field: 'operationTimeStr', - align: 'center', - // width:'100%', - sortable: true - }, { - title: '灭菌程序', - field: 'sterilingType', - align: 'center', - sortable: true - }, { - title: '灭菌方式', - field: 'sterilingMode', - align: 'center', - sortable: true - }, { - title: '有效期至', - field: 'validUntilStr', - align: 'center', - sortable: true - }]; - - $("#unReviewTousseTable").bootstrapTable({ - url: WWWROOT + "/disinfectSystem/packingReviewController/findUnReviewedTousseInstanceList.mhtml", //服务器数据的加载地址。 - method: "get", //服务器数据的加载地址。 - dataType: "json", - // contentType: "application/x-www-form-urlencoded", - contentType:"application/json;charset=utf-8", - dataField: "rows", // 这是返回的json数组的key.默认好像是"rows".这里只有前后端约定好就行 - sidePagination: "server", //分页方式:client客户端分页,server服务端分页(*) - columns: unReviewTousseColumns, //列表头 - undefinedText: "", // 当数据为 undefined 时显示的字符 - striped: false, //是否显示行间隔色 - cache: false, //是否使用缓存,默认为true,所以一般情况下需要设置一下这个属性(*) - pagination: true, //是否显示分页 - // toolbar: "#materialBar", - pageNumber: 1, //初始化加载第一页,默认第一页 - pageSize: 20, //每页的记录行数(*) - pageList: [10, 25, 50, 100], //可供选择的每页的行数(*) - search: false, //是否显示表格搜索,此搜索是客户端搜索,不会进服务端 - showRefresh: false, //是否显示刷新按钮 - // height: 600, //行高,如果没有设置height属性,表格自动根据记录条数觉得表格高度 - cardView: false, //是否显示详细视图 - sortable: true, //是否启用排序 - sortOrder: "desc", //排序方式 - sortName: 'id', //排序字段 - idField: "id", //每一行的唯一标识,一般为主键列 - clickToSelect: true, //是否启用点击选中行 - queryParams: function (params) { //自定义参数,这里的参数是传给后台的,我这是是分页用的 - return { //这里的params是table提供的 - offset: params.offset, //从数据库第几条记录开始 - limit: params.limit, //每页多少行 - taskGroup: taskGroup, //任务组 - sortName: params.sort,//排序字段 - sortOrder: params.order//排序顺序 - }; - }, - onDblClickRow: function (row, $element) { //双击列触发 - //显示图片 - getAndShowTousseInModel(row); - }, - rowStyle: function (row, index) { //修改行样式 - // console.log(row.scanned); - var style = {}; - if (row.scanned) { - style = { - css: { - "background-color": "#ffff40" - } - }; - } - return style; - } - - }); - /***************审核统计****************** */ - var reviewedChartCm = [{ - title: '器械包名称', - field: 'tousseName', - align: 'center', - sortable: true - }, { - title: '审核人', - field: 'reviewer', - align: 'center', - sortable: true - }, { - title: '数量', - field: 'amount', - align: 'center', - sortable: true - }]; - - $("#reviewedChartTable").bootstrapTable({ - //url: WWWROOT + "/disinfectSystem/packingReviewController/loadReviewRecord.mhtml", //服务器数据的加载地址。 - method: "get", //服务器数据的加载地址。 - dataType: "json", - // contentType:"application/x-www-form-urlencoded", - dataField: "rows", // 这是返回的json数组的key.默认好像是"rows".这里只有前后端约定好就行 - sidePagination: "server", //分页方式:client客户端分页,server服务端分页(*) - columns: reviewedChartCm, //列表头 - undefinedText: "", // 当数据为 undefined 时显示的字符 - striped: true, //是否显示行间隔色 - cache: false, //是否使用缓存,默认为true,所以一般情况下需要设置一下这个属性(*) - pagination: true, //是否显示分页 - // toolbar: "#materialBar", - pageNumber: 1, //初始化加载第一页,默认第一页 - pageSize: 15, //每页的记录行数(*) - pageList: [10, 25, 50, 100], //可供选择的每页的行数(*) - search: false, //是否显示表格搜索,此搜索是客户端搜索,不会进服务端 - showRefresh: false, //是否显示刷新按钮 - // height: 600, //行高,如果没有设置height属性,表格自动根据记录条数觉得表格高度 - cardView: false, //是否显示详细视图 - sortable: true, //是否启用排序 - sortOrder: "asc", //排序方式 - // sortName: 'tousseName',//排序字段 - // idField: "id", //每一行的唯一标识,一般为主键列 - clickToSelect: true, //是否启用点击选中行 - queryParams: function (params) { - return { - taskGroup: taskGroup - }; - }, - onLoadSuccess: function(data){//远程数据加载成功时触发成功 - //console.log(data.rows); - var amount = 0; - if(!isUndefinedOrNullOrEmpty(data.rows)){ - amount = data.rows.length; - } - $('#reviewedsum').val(amount); - } - }); - - - - /***********入筐器械包*************** */ - var tousseInstanceCm = [{ - title: '名称', - field: 'name', - align: 'center', - sortable: true - }, { - title: '条形码', - field: 'barcode', - align: 'center', - sortable: true - }, { - title: '操作', - field: 'type', - align: 'center', - sortable: true - }]; - - $("#tousseInstanceTable").bootstrapTable({ - //url: "http://rap2api.taobao.org/app/mock/85153/disinfectSystem/tousseInstanceController/loadAllTousseInstance.mhtml", //服务器数据的加载地址。 - //url: WWWROOT +"/disinfectSystem/tousseInstanceController/loadAllTousseInstance.mhtml", //服务器数据的加载地址。 - method: "get", //服务器数据的加载地址。 - dataType: "json", - // contentType:"application/x-www-form-urlencoded", - dataField: "rows", // 这是返回的json数组的key.默认好像是"rows".这里只有前后端约定好就行 - sidePagination: "server", //分页方式:client客户端分页,server服务端分页(*) - columns: tousseInstanceCm, //列表头 - undefinedText: "", // 当数据为 undefined 时显示的字符 - striped: true, //是否显示行间隔色 - cache: false, //是否使用缓存,默认为true,所以一般情况下需要设置一下这个属性(*) - pagination: true, //是否显示分页 - // toolbar: "#materialBar", - pageNumber: 1, //初始化加载第一页,默认第一页 - pageSize: 15, //每页的记录行数(*) - pageList: [10, 25, 50, 100], //可供选择的每页的行数(*) - search: false, //是否显示表格搜索,此搜索是客户端搜索,不会进服务端 - showRefresh: false, //是否显示刷新按钮 - // height: 600, //行高,如果没有设置height属性,表格自动根据记录条数觉得表格高度 - cardView: false, //是否显示详细视图 - sortable: true, //是否启用排序 - sortOrder: "asc", //排序方式 - // sortName: 'tousseName',//排序字段 - // idField: "id", //每一行的唯一标识,一般为主键列 - clickToSelect: true, //是否启用点击选中行 - queryParams: function (params) { - return { - taskGroup: taskGroup - }; - } - }); - - //调整高度 - // console.log($(window).height()); - $("#unReviewTousseTable").bootstrapTable('resetView', { //右边待审任务列表 - height: $(window).height() - 230 - }); - $("#forReviewGrid").bootstrapTable('resetView', { //左边审核确认列表 - height: $(window).height() - 270 - }); - $("#reviewedChartTable").bootstrapTable('resetView', { //审核统计 - height: 650 - }); - $("#tousseInstanceTable").bootstrapTable('resetView', { //入筐器械包 - height: 640 - }); -} - /********************进入审核列表************************************ */ /** * 点击右边进入审核列表按钮 * 校验并添加左边审核确认的列表数据 */ function batchAddToussesToReviewedGrid() { - var selectedRecords = $('#unReviewTousseTable').bootstrapTable('getSelections'); //右边待审核列表已选择的器械包信息 - var forReviewGridDAta = $('#forReviewGrid').bootstrapTable('getData');//左边审核确认列表的数据 - var basketName = $('#basketName').val();//灭菌篮框名称 - var basketBarcode = $('#basketBarcode').val();//灭菌篮框条码 + var selectedRecords = getSelectedRowsData(unReviewTousseGrid); //右边待审核列表已选择的器械包信息 + var forReviewGridData = getforReviewGridDatas(); //左边审核确认列表的数据 + var basketName = $('#basketName').val(); //灭菌篮框名称 + var basketBarcode = $('#basketBarcode').val(); //灭菌篮框条码 //console.log(selectedRecords); if (selectedRecords.length == 0) { alert("请选择器械包!"); return false; } //如果篮筐名称与条码都不为空时才进行判断 - if(!isUndefinedOrNullOrEmpty(basketName) && !isUndefinedOrNullOrEmpty(basketBarcode)){ + if (!isUndefinedOrNullOrEmpty(basketName) && !isUndefinedOrNullOrEmpty(basketBarcode)) { //校验灭菌方式 - if(validateSterilingMethod(selectedRecords) == false){ + if (validateSterilingMethod(selectedRecords) == false) { return false; } } //读取config.js的配置:审核页面点进入审核列表按钮,所选的器械包灭菌程序与审核确认列表的器械包的灭菌程序不同的,不会被添加至左边的已审核列表,true表示不会被添加至左边,默认及false表示会被添加至左边 - if(sstsConfig.tousseWithDifferentSterilingTypeCanNotBatchAddReview){ - records = []; - //左边的审核列表及第一条记录的灭菌程序 - var sterilingMethod; - if(forReviewGridDAta && forReviewGridDAta.length > 0){ - sterilingMethod = forReviewGridDAta[0]['sterilingMethod']; - } - if(!sterilingMethod){ - sterilingMethod = selectedRecords[0]['sterilingType']; - } - for ( var i = 0;i 0) { + sterilingMethod = forReviewGridData[0]['sterilingMethod']; + } + if (!sterilingMethod) { + sterilingMethod = selectedRecords[0]['sterilingType']; + } + for (var i = 0; i < selectedRecords.length; i++) { + if (selectedRecords[i]['sterilingType'] != sterilingMethod) { // showResult("所选的器械包的灭菌程序与审核确认列表的器械包灭菌程序不一致!" , null , sstsConfig.messagePauseTimeOnReviewPage); alert("所选的器械包的灭菌程序与审核确认列表的器械包灭菌程序不一致!"); - return false; + return false; } records.push(selectedRecords[i]); } selectedRecords = records; } //灭菌程序为"无"的器械包能否一键审核,true为允许,false表示不允许,默认时为true var tousseWithNullSterilingTypeCanNotBatchAddReview = sstsConfig.tousseWithNullSterilingTypeCanNotBatchAddReview; - var tempSM = null;//选中的第一个灭菌方式 - var rightGridVaildPass = true; + var tempSM = null; //选中的第一个灭菌方式 + var rightGridVaildPass = true; //需要验证(所选器械包的灭菌程序等)的包实例记录 var needValidateRecords = []; //遍历右边选中的器械包信息 验证右边grid选中的项是否是 相同的灭菌方式 for (var i = 0; i < selectedRecords.length; i++) { //console.log(record); var record = selectedRecords[i]; var sType = record.sterilingType //选中的灭菌方式 - if(tempSM == null){ - tempSM = sType; - } - if(sType != tempSM){ - rightGridVaildPass = false; - } + if (tempSM == null) { + tempSM = sType; + } + if (sType != tempSM) { + rightGridVaildPass = false; + } //验证器械包信息 //验证右边选中的项是否是 相同的灭菌方式 if (sType != "无") { @@ -478,48 +156,48 @@ // } needValidateRecords.push(record); } else { - if(tousseWithNullSterilingTypeCanNotBatchAddReview){ - alert("条码为" + record['barcode'] + "的" + record['tousseDefinition.name'] + "的灭菌程序 " + sType + " 不能通过<进入审核列表>添加" ); + if (tousseWithNullSterilingTypeCanNotBatchAddReview) { + alert("条码为" + record['barcode'] + "的" + record['tousseDefinition.name'] + "的灭菌程序 " + sType + " 不能通过<进入审核列表>添加"); selectedRecords.splice(i, 1); - continue; - } + continue; + } needValidateRecords.push(record); } } // - if(rightGridVaildPass == false){ + if (rightGridVaildPass == false) { alert("提示:所选的器械包灭菌方式不一致"); // top.Ext.MessageBox.confirm("提示","待审核的器械包灭菌方式不一致,要继续审核吗?",function(btn){ - // if(btn == 'yes'){ - //添加到左边的审核确认列表 - addTousse(needValidateRecords); + // if(btn == 'yes'){ + //添加到左边的审核确认列表 + addTousse(needValidateRecords); // }else{ // return false; // } // }); - }else{ + } else { var leftGridVaildPass = true; - for(var i=0;i 1){ - for(var i = 1;i < selectedRecords.length;i++){ - if(firstSterilingMode != selectedRecords[i]["sterilingMode"]){ + if (selectedRecords.length > 1) { + for (var i = 1; i < selectedRecords.length; i++) { + if (firstSterilingMode != selectedRecords[i]["sterilingMode"]) { var currentSterilingMode = selectedRecords[i]["sterilingMode"]; //showResult(getDiffSterilingModeMessage(selectedRecords[0].data["tousseDefinition.name"] , currentSterilingMode, sterilingModeFromLeftReviewGrid)); - alert(getDiffSterilingModeMessage(selectedRecords[0].data["tousseDefinition.name"] , currentSterilingMode, sterilingModeFromLeftReviewGrid)); + alert(getDiffSterilingModeMessage(selectedRecords[0].data["tousseDefinition.name"], currentSterilingMode, sterilingModeFromLeftReviewGrid)); return false; } } @@ -558,7 +235,7 @@ * @param {*} sType 灭菌程序 * @returns */ -function validateSterilingTypeCanAddToReview(sType,record) {//没接口 +function validateSterilingTypeCanAddToReview(sType, record) { //没接口 var result = false; $.ajax({ type: 'get', @@ -574,9 +251,9 @@ if (result.success) { result = true; } else { - if(result.message){ + if (result.message) { alert(result.message) - }else{ + } else { alert("条码为" + record['barcode'] + "的" + record['tousseDefinition.name'] + "的灭菌程序 " + sType + " 不能通过<进入审核列表>添加"); } } @@ -593,28 +270,29 @@ * 如果列表的包数量为0,则返回null * 如果列表的包数量大于0时,则取第一个包的灭菌方式,如果灭菌方式为空,则返回空字符串:"" */ -function getSterilingModeFromLeftReviewGrid (){ - var store = $("#forReviewGrid").bootstrapTable("getData"); - var tousseCount = store.length; - if(tousseCount == 0){ - return null; - } - var record = store[0]; - var sterilingMode = record.sterilingMode; - if(!sterilingMode){ - return ""; +function getSterilingModeFromLeftReviewGrid() { + var store = getforReviewGridDatas(); + var tousseCount = store.length; + if (tousseCount == 0) { + return null; } - return sterilingMode; + var record = store[0]; + var sterilingMode = record.sterilingMode; + if (!sterilingMode) { + return ""; + } + // console.log(sterilingMode); + return sterilingMode; } /** * 根据当前物品的名称、灭菌方式及原有物品的灭菌方式获取提示消息 * @param currentTousseName 当前物品的名称 * @param currentSterilingMode 当前物品的灭菌方式 * @param orginalSterilingMode 原有物品的灭菌方式 */ -function getDiffSterilingModeMessage(currentTousseName , currentSterilingMode , orginalSterilingMode){ - return "【"+ currentTousseName +"】"+ (currentSterilingMode ? ("属于【"+ currentSterilingMode +"】物品") : "") - +"与原有"+ (orginalSterilingMode ? ("【"+ orginalSterilingMode +"】物品") : "物品灭菌方式") +"不一致,不能入框审核"; +function getDiffSterilingModeMessage(currentTousseName, currentSterilingMode, orginalSterilingMode) { + return "【" + currentTousseName + "】" + (currentSterilingMode ? ("属于【" + currentSterilingMode + "】物品") : "") + + "与原有" + (orginalSterilingMode ? ("【" + orginalSterilingMode + "】物品") : "物品灭菌方式") + "不一致,不能入框审核"; } /** @@ -635,13 +313,13 @@ var barcode = record.barcode; var sterileStartDate = record.sterileStartDate; var packageType = record.packageType; - //若左边已有该器械包id则不用放到左边 - var forReviewGridDatas = $("#forReviewGrid").bootstrapTable("getData"); + var forReviewGridDatas = getforReviewGridDatas(); if (isExist(forReviewGridDatas, "tousseId", tousseId)) { continue; } var tousseInstance = { + id: tousseId, //插入列表dataView需要id字段 tousseId: tousseId, tousseName: tousseName, barcode: barcode, @@ -652,14 +330,12 @@ // sterilizer : sterilizer, // virtualBasketSeqNum : virtualBasketSeqNum, // frequency : frequency - } - // var tousseInstance = new tousseInstanceRecord(tousseId,tousseName,barcode,null,sterileStartDate,null,sterilingType,sterilingMode,packageType,null); - // console.log(tousseInstance); + }; + //console.log(tousseInstance); //插入到审核确认列表 - $("#forReviewGrid").bootstrapTable("insertRow", { - index: 0, - row: tousseInstance - }) + var forReviewGridDataView = forReviewGrid.getData(); + forReviewGridDataView.addItem(tousseInstance); + // forReviewGridDataView.setItems(tousseInstance,'tousseId'); //记日志 // logItems.push({tousseId:tousseId,tousseName:tousseName,barcode:barcode}); } @@ -671,104 +347,104 @@ *验证炉号 * @param {*} records 右边待审核选中的任务列表 */ -function validateSterilizer(records){ - var tempPS = null; - var rightGridVaildPass = true; - //验证右边grid选中的项是否是 相同的灭菌炉 - for ( var i = 0;i0){ + if (basketName != null && basketName != '' && basketBarcode != null && basketBarcode != '') { + var forReviewGridData = getforReviewGridDatas(); + if (forReviewGridData.length > 0) { // Ext.Msg.confirm("审核确认","系统检测到您已扫描过["+basketName+"],是否要审核["+basketName+"]?",function(btn){ // if(btn=='yes'){ - reviewTousse(basketName,basketBarcode); + reviewTousse(basketName, basketBarcode); // } // }); } @@ -882,14 +557,15 @@ //获取左边审核列表的包的灭菌方式 var sterilingModeFromLeftReviewGrid = getSterilingModeFromLeftReviewGrid(); //判断所选中的包里是否有灭菌方式不同的包,如果有则进行提示不能扫入,没有再判断是否有和左边审核列表中的包的灭菌方式不一致,如果有则进行提示不能扫入 - if(sterilingModeFromLeftReviewGrid || sterilingModeFromLeftReviewGrid === "") { - if((data.sterilingMode || sterilingModeFromLeftReviewGrid) && data.sterilingMode != sterilingModeFromLeftReviewGrid){ - showResult(getDiffSterilingModeMessage(data.name , data.sterilingMode, sterilingModeFromLeftReviewGrid)); + if (sterilingModeFromLeftReviewGrid || sterilingModeFromLeftReviewGrid === "") { + if ((data.sterilingMode || sterilingModeFromLeftReviewGrid) && data.sterilingMode != sterilingModeFromLeftReviewGrid) { + showResult(getDiffSterilingModeMessage(data.name, data.sterilingMode, sterilingModeFromLeftReviewGrid)); return false; } } // var tousseInstance = { + id: data.id, //插入列表dataView需要id字段 tousseId: data.id, tousseName: data.name, barcode: data.barcode, @@ -900,37 +576,36 @@ virtualBasketSeqNum: data.virtualBasketSeqNum } //插入到审核确认列表 - $("#forReviewGrid").bootstrapTable("insertRow", { - index: 0, - row: tousseInstance - }) + var forReviewGridDataView = forReviewGrid.getData(); + forReviewGridDataView.addItem(tousseInstance); } + clearScanText(); // onScannedTousseAmountChanged(); // 待审核包数量数量变化处理 // speaker.speak(obj.tousseName); return; } //旧代码接口会返回的类型// - if(barcodeType == "basketNotFound"){//条码不存在 + if (barcodeType == "basketNotFound") { //条码不存在 alert("找不到该包或篮筐或人员信息。"); $("#barcode").val(""); return; } - if(barcodeType == "basketUsed"){// + if (barcodeType == "basketUsed") { // //alert("无法录入篮筐,篮筐正处于[" + obj.status + "]状态"); alert("无法录入篮筐,篮筐正处于[]状态"); clearBarcodeAndBasketName(); return; } - if(barcodeType == "erroeStatus"){ + if (barcodeType == "erroeStatus") { showResult("器械包状态异常,请录入待审核的器械包"); $("#barcode").val(""); return; } - if(returnType == "noResult"){//无结果输出 + if (returnType == "noResult") { //无结果输出 //showResult("无符合条件的器械包。" , null , sstsConfig.messagePauseTimeOnReviewPage); return; - } - if(returnType == "multiTousseInstancesSuccess"){//扫描的是虚拟篮框(单个或首尾)或首尾器械包(返回结果为单个器械包,暂保留) + } + if (returnType == "multiTousseInstancesSuccess") { //扫描的是虚拟篮框(单个或首尾)或首尾器械包(返回结果为单个器械包,暂保留) // var tousseInstanceArray = obj.tousseInstances; // if(tousseInstanceArray && tousseInstanceArray.length > 0){ // if(taskGroup != tousseInstanceArray[0].taskGroup){ @@ -954,7 +629,7 @@ // sterilingMode:tousseInstanceArray[i].sterilingMode, // virtualBasketSeqNum:tousseInstanceArray[i].virtualBasketSeqNum // }); - + // Ext.getCmp('forReviewGrid').getStore().insert(0,tousseInstance); // alreadyAdd++; // speakBasket.addGoods('',tousseInstanceArray[i].tousseName,1); @@ -984,28 +659,30 @@ * @param {*} basketBarcode */ function reviewTousse(basketName, basketBarcode) { - var forReviewGridData = $("#forReviewGrid").bootstrapTable("getData");// - var count =forReviewGridData.length; + var forReviewGridData = getforReviewGridDatas() // + var count = forReviewGridData.length; var sterileDate = $("#sterileDate").val(); //灭菌时间 var reviewer = $("#reviewer").val(); //审核名字 var reviewerCode = $("#reviewerCode").val(); //审核工号 //验证当前登录用户属于一级供应室还是二级供应室 //var isFirstRoomPeople = checkForSupplyType();//没接口 - // 如果是一级供应室用户,并且需要入筐;或者是二级供应室用户,并且需要入筐 - // if ((sstsConfig.mustScanBasketForTousseReview && isFirstRoomPeople) || (sstsConfig.mustScanBasketForTousseReviewOf2ndSupplyRoom && !isFirstRoomPeople)){ - // if (isObjEmpty(basketName)) { - // //判断所扫器械包是否已全部加入至虚拟篮筐,如存在有未加入虚拟篮筐的器械包则进行提示,否则通过 - // //var alreadyJoinVirtualBasket = true;//是否加入虚拟篮筐 - // for(var i = 0;i < count ;i++){ - // var virtualBasketSeqNum = forReviewGridData[i]['virtualBasketSeqNum']; - // if(!virtualBasketSeqNum || virtualBasketSeqNum == ''){ - // //showResult('请先扫描灭菌篮筐' , null , sstsConfig.messagePauseTimeOnReviewPage); - // alert('请先扫描灭菌篮筐'); - // return; - // } - // } - // } - // } + var isFirstRoomPeople = true; //暂时为true + // 如果是一级供应室用户,并且需要入筐;或者是二级供应室用户,并且二级供应室需要入筐 + if ((sstsConfig.mustScanBasketForTousseReview && isFirstRoomPeople) || (sstsConfig.mustScanBasketForTousseReviewOf2ndSupplyRoom && !isFirstRoomPeople)) { + console.log(basketName); + if (isUndefinedOrNullOrEmpty(basketName)) { + //判断所扫器械包是否已全部加入至虚拟篮筐,如存在有未加入虚拟篮筐的器械包则进行提示,否则通过 + //var alreadyJoinVirtualBasket = true;//是否加入虚拟篮筐 + for (var i = 0; i < count; i++) { + var virtualBasketSeqNum = forReviewGridData[i]['virtualBasketSeqNum']; + if (!virtualBasketSeqNum || virtualBasketSeqNum == '') { + //showResult('请先扫描灭菌篮筐' , null , sstsConfig.messagePauseTimeOnReviewPage); + alert('请先扫描灭菌篮筐'); + return; + } + } + } + } //获得器械包ids var tousseIds = ""; for (var index = 0; index < count; index++) { @@ -1022,41 +699,42 @@ // 灭菌开始日期校验,并提示 var confirmMessage = ''; if (!isUndefinedOrNullOrEmpty(sterileDate) && count > 1) { - confirmMessage = '所有器械包灭菌开始日期都将修改为'+sterileDate+'!\r\n'; - }else{ + confirmMessage = '所有器械包灭菌开始日期都将修改为' + sterileDate + '!\r\n'; + } else { var sterileDates = {}; var sterileStartDateCount = 0; for (var i = 0; i < count; i++) { var sterileStartDate = forReviewGridData[i].sterileStartDate; - if(!isUndefinedOrNullOrEmpty(sterileStartDate)){ - if(sterileDates.hasOwnProperty(sterileStartDate)){ + if (!isUndefinedOrNullOrEmpty(sterileStartDate)) { + if (sterileDates.hasOwnProperty(sterileStartDate)) { continue; } sterileDates[sterileStartDate] = sterileStartDate; ++sterileStartDateCount; } } } - if(sterileStartDateCount > 1){ + if (sterileStartDateCount > 1) { confirmMessage = '器械包灭菌开始时间不一致!\r\n'; } - if(basketName != ''){ - confirmMessage += '是否审核下列器械包并将其放入['+basketName+']中?'; - }else{ + if (basketName != '') { + confirmMessage += '是否审核下列器械包并将其放入[' + basketName + ']中?'; + } else { confirmMessage += openMustScanBasketTips; } + alert(confirmMessage); // Ext.MessageBox.confirm("请确认",confirmMessage,function(btn) { // if(btn=='yes') { - reviewTousseInstance(tousseIds, reviewer, reviewerCode, sterileDate, basketName, basketBarcode, taskGroup); + reviewTousseInstance(tousseIds, reviewer, reviewerCode, sterileDate, basketName, basketBarcode, taskGroup); // } // }) } /** *验证当前登录用户属于一级供应室还是二级供应室 */ -function checkForSupplyType(){//没接口 - var isFirstRoomPeople = false;//是否一级供应室 +function checkForSupplyType() { //没接口 + var isFirstRoomPeople = false; //是否一级供应室 $.ajax({ type: 'get', // UserTableManager.checkForSupplyType @@ -1066,7 +744,7 @@ success: function (result) { // console.log(result); if (result.success) { - if(result.result){//一级供应室 + if (result.result) { //一级供应室 isFirstRoomPeople = true; } } @@ -1089,18 +767,18 @@ * @param {*} taskGroup */ function reviewTousseInstance(tousseIds, reviewer, reviewerCode, sterileDate, basketName, basketBarcode, taskGroup) { - if(isUndefinedOrNullOrEmpty(sterileDate)){ + if (isUndefinedOrNullOrEmpty(sterileDate)) { sterileDate = new Date(); } $.ajax({ type: 'get', - url: WWWROOT + "/disinfectSystem/packingReviewController/reviewTousseInstance.mhtml", //审核物品 + url: WWWROOT + "/disinfectSystem/packingReviewController/reviewTousseInstance.mhtml", //审核物品请求 async: false, dataType: 'json', data: { tousseIds: tousseIds, sterileBasketBarcode: basketBarcode, - basketName : basketName, + basketName: basketName, taskGroup: taskGroup, reviewerName: reviewer, reviewerCode: reviewerCode, @@ -1118,11 +796,16 @@ // } alert("审核成功"); //待审核列表刷新 - $("#unReviewTousseTable").bootstrapTable("refresh"); + // $("#unReviewTousseTable").bootstrapTable("refresh"); + renderGridDateAndPage(unReviewTousseGrid, 'unReviewGridPager', + WWWROOT + "/disinfectSystem/packingReviewController/findUnReviewedTousseInstanceList.mhtml", { + taskGroup: taskGroup + }); //审核统计刷新 - $("#reviewedChartTable").bootstrapTable("refresh"); + // $("#reviewedChartTable").bootstrapTable("refresh"); //已审核列表清空 - $("#forReviewGrid").bootstrapTable("removeAll"); + cleanGridDataView(forReviewGrid); + // clearBarcodeAndBasketName(); clearReviewInfoByConfig(); onScannedTousseAmountChanged(); // 待审核包数量数量变化处理 @@ -1138,103 +821,13 @@ /************************************************************* */ -/**********************显示图片模态框--start**************************************** */ /** - * 显示图片模态框 + * 判断 数据是否存在于目标数据列表中 + * @param {*} data 目标数据列表 + * @param {*} field 字段名 + * @param {*} value 需要判断的数据 */ -function getAndShowTousseInModel(record) { - // console.log(record); - if (typeof (record) == 'object') { - var tousseDefinition = record.tousseDefinition; - var materialName = tousseDefinition.name; - var tousseDefinitionId = tousseDefinition.id; - $("#modal-packageImg .modal-title").text(materialName + "信息") - $("#modal-packageImg").modal({ - show: true, - backdrop: "static" - }); - getAndShowTousseInfoDiv(materialName,tousseDefinitionId); - } -} -//展示器械包图片信息 -function getAndShowTousseInfoDiv(tousseName,tousseDefinitionId) { - a(tousseName,tousseDefinitionId); - -} - -function a(tousseName,tousseDefinitionId){ - var materialStore = getMaterialStore(tousseName,tousseDefinitionId); - var materialGridTableColumns = [{ - field: 'materialDefinitionId', - visible: false - }, { - title: '材料名称', - field: "name", - align: 'center', - sortable: true //正序,逆序 - },{ - title:'数量', - field:'count', - align:'center', - sortable:true - }]; - $('#materialGridTable').bootstrapTable({ - data: materialStore, - // url:WWWROOT + '/disinfectSystem/baseData/tousseDefinitionAction!getMaterialDefinitionByTousseName.do', - // method: "post", //服务器数据的加载地址。 - dataType: "json", - // contentType: "application/x-www-form-urlencoded", - sidePagination: "server", //分页方式:client客户端分页,server服务端分页(*) - columns: materialGridTableColumns, //列表头 - undefinedText: "", // 当数据为 undefined 时显示的字符 - striped: false, //是否显示行间隔色 - cache: false, //是否使用缓存,默认为true,所以一般情况下需要设置一下这个属性(*) - pagination: false, //是否显示分页 - search: false, //是否显示表格搜索,此搜索是客户端搜索,不会进服务端 - showRefresh: false, //是否显示刷新按钮 - height: 400, //行高,如果没有设置height属性,表格自动根据记录条数觉得表格高度 - cardView: false, //是否显示详细视图 - sortable: true, //是否启用排序 - sortOrder: "desc", //排序方式 - sortName: 'materialDefinitionId', //排序字段 - idField: "materialDefinitionId", //每一行的唯一标识,一般为主键列 - clickToSelect: true, //是否启用点击选中行 - onDblClickRow: function (row, $element) { //双击列触发 - //显示图片 - //getAndShowTousseInModel(row); - } - }) -} - -function getMaterialStore(tousseName,tousseDefinitionId){ - var materialStore = []; - $.ajax({ - type: "post", - url: WWWROOT + '/disinfectSystem/baseData/tousseDefinitionAction!getMaterialDefinitionByTousseName.do', - dataType: "json", - async:false, - data: { - tousseName : tousseName, - tousseDefinitionId:tousseDefinitionId - }, - success: function (response) { - // console.log(response); - materialStore = response; - } - }); - return materialStore; -} - - -/************************显示图片模态框--end*********************************************** */ -/** - * - * @param {*} data - * @param {*} field - * @param {*} value - */ function isExist(data, field, value) { - // console.log("进入是否存在:"+data); //是否为数组 if (Array.isArray(data)) { for (var i = 0; i < data.length; i++) { @@ -1251,54 +844,55 @@ return false; } -//当左边扫描的审核器械包数量变化后调用 +//当左边扫描的审核器械包数量变化后调用,右边待审核列变色 function onScannedTousseAmountChanged() { // 重置待审核器械包数量 - var forReviewGridDAta = $('#forReviewGrid').bootstrapTable('getData'); + var forReviewGridDAta = getforReviewGridDatas(); // console.log(forReviewGridDAta); var amount = forReviewGridDAta.length; $('#alreadyScanAmount').val(amount); - // - var scannedInfo = {}; + //右边待审核列变色 + var tousseIds = {}; for (var i = 0; i < forReviewGridDAta.length; i++) { var tousseId = forReviewGridDAta[i].tousseId; if (!isUndefinedOrNullOrEmpty(tousseId)) { - scannedInfo[tousseId] = tousseId; + tousseIds[tousseId] = tousseId; } } - // console.log(scannedInfo); - var unReviewTousseTableData = $('#unReviewTousseTable').bootstrapTable('getData'); - for (var index = 0; index < unReviewTousseTableData.length; index++) { - var id = unReviewTousseTableData[index].id; - if (scannedInfo.hasOwnProperty(id)) { - // console.log(index); - $('#unReviewTousseTable').bootstrapTable('updateCell', { - index: index, //行索引 - field: 'scanned', //字段名称 - value: true //新字段值 - }) - continue; + var unReviewTousseGridData = unReviewTousseGrid.getData(); + var columns = unReviewTousseGrid.getColumns(); //列表每个列的定义 + var cssRow = {}; //用于修改行样式 + for (var index = 0; index < unReviewTousseGridData.length; index++) { + var id = unReviewTousseGridData[index].id; + if (tousseIds.hasOwnProperty(id)) { //判断左边是否有右边的器械包id + var changeRow = {}; + for (var i = 1; i < columns.length; i++) { + var column = columns[i]; + changeRow[column.id] = "yellow"; + } + cssRow[index] = changeRow; } - $('#unReviewTousseTable').bootstrapTable('updateCell', { - index: index, - field: 'scanned', - value: false - }) }; + // console.log(cssRow); + if (cssRow) { + unReviewTousseGrid.setCellCssStyles("row-yellow", cssRow); //修改css + }; } + function clearBarcodeAndBasketName() { $("#barcode").val(""); $("#basketName").val(""); $("#basketBarcode").val(""); } + /** * 根据id删除指定表格列 * @param {*} tousseId */ -function removeTableItemById(tableId,tousseId) { - // console.log(tousseId); - $("#"+tableId).bootstrapTable("removeByUniqueId", tousseId); +function removeforReviewGridItemById(tousseId) { + var dataView = forReviewGrid.getData(); + dataView.deleteItem(tousseId); onScannedTousseAmountChanged(); } @@ -1343,29 +937,584 @@ } datePick("sterileStartTime", "yyyy-mm-dd hh:ii", "bottom-right"); //灭菌时间 -//调整窗口时自适应 -$(window).resize(function () { - // console.log("窗口高度:" + $(window).height()); - //暂时写着:样式还是有问题 - $("#forReviewGrid").bootstrapTable('resetView', { - height: $(window).height() - 280 +/***************slickGrid表格插件******************** */ + +function renderGrids() { + /*****************右边待审核的器械包****************************** */ + // $.support.cors = true; + var unReviewTousseGridColums = []; + var checkboxSelector = new Slick.CheckboxSelectColumn({ + cssClass: "slick-cell-checkboxsel" }); - $("#unReviewTousseTable").bootstrapTable('resetView', { - height: $(window).height() - 300 + unReviewTousseGridColums.push(checkboxSelector.getColumnDefinition()); + unReviewTousseGridColums.push({ + field: 'id', + name: 'ID', + minWidth: 0, + width:0, + cssClass: 'reallyHidden', + headerCssClass: 'reallyHidden' + }, { + id: "tousseType", + field: 'tousseType', + name: '器械包类型', + minWidth: 0, + width:0, + cssClass: 'reallyHidden', + headerCssClass: 'reallyHidden' + }, { + field: 'patientName', + name: '病人姓名', + id: "patientName", + width: sstsConfig.showReviewPatientName ? 100 : 0, + minWidth: sstsConfig.showReviewPatientName ? 100 : 0, + cssClass: sstsConfig.showReviewPatientName ? "cell-title" : 'reallyHidden', + headerCssClass: sstsConfig.showReviewPatientName ? "cell-title" : 'reallyHidden' + }, { + field: 'treatmentNum', + name: '诊疗号', + id: "treatmentNum", + width: sstsConfig.showReviewTreatmentNum ? 100 : 0, + minWidth: sstsConfig.showReviewTreatmentNum ? 100 : 0, + cssClass: sstsConfig.showReviewTreatmentNum ? "cell-title" : 'reallyHidden', + headerCssClass: sstsConfig.showReviewTreatmentNum ? "cell-title" : 'reallyHidden' + }, { + field: 'hospitalNum', + name: '住院号', + id: "hospitalNum", + cssClass: "cell-title", + width: sstsConfig.showReviewHospitalNum ? 100 : 0, + minWidth: sstsConfig.showReviewHospitalNum ? 100 : 0, + cssClass: sstsConfig.showReviewHospitalNum ? "cell-title" : 'reallyHidden', + headerCssClass: sstsConfig.showReviewHospitalNum ? "cell-title" : 'reallyHidden' + }, { + id: "tousseName", + name: "器械包名称", + field: "tousseName", + width: 150, + minWidth: 150, + cssClass: "cell-title", + sortable: true + } ,{ + field: 'barcode', + name: '条码', + sortable: true, + id: "barcode", + cssClass: "cell-title", + sortable: true, + minWidth: 100 + },{ + field: 'packageType', + name: '包装类型', + id: "packageType", + cssClass: "cell-title", + sortable: true, + minWidth: 100 + + }, { + field: 'isUrgentTousse', + name: '是否加急', + id: "isUrgentTousse", + cssClass: "cell-title", + sortable: true, + minWidth: 70 + + }, { + field: 'sterileStartDate', + name: '灭菌开始日期', + id: "sterileStartDate", + cssClass: "cell-title", + sortable: true, + minWidth: 100 + + }, { + field: 'operator', + name: '装配人', + id: "operator", + cssClass: "cell-title", + sortable: true, + minWidth: 100 + + }, { + field: 'operationTimeStr', + name: '装配时间', + id: "operationTimeStr", + cssClass: "cell-title", + sortable: true, + minWidth: 150 + + }, { + field: 'sterilingType', + name: '灭菌程序', + id: "sterilingType", + cssClass: "cell-title", + sortable: true, + minWidth: 100 + + }, { + field: 'sterilingMode', + name: '灭菌方式', + id: "sterilingMode", + cssClass: "cell-title", + sortable: true, + minWidth: 100 + + }, { + field: 'validUntilStr', + name: '有效期至', + id: "validUntilStr", + cssClass: "cell-title", + sortable: true, + minWidth: 150 + + }) + // 创建unReviewTousseGrid + unReviewTousseGrid = renderGrid("unReviewTousseGridId", "unReviewToussegridContainer", + unReviewTousseGridColums, "", checkboxSelector + ); + //加载数据并分页 + renderGridDateAndPage(unReviewTousseGrid, 'unReviewGridPager', + WWWROOT + "/disinfectSystem/packingReviewController/findUnReviewedTousseInstanceList.mhtml", { + taskGroup: taskGroup + } + ); + //双击 右边待审核列触发 + unReviewTousseGrid.onDblClick.subscribe(function (e, args) { + var rowData = unReviewTousseGrid.getDataItem(args.row); + getAndShowTousseInModel(rowData); }); - $("#reviewedChartTable").bootstrapTable('resetView'); - $("#tousseInstanceTable").bootstrapTable('resetView'); -}) + //单击 右边待审核列触发 + // unReviewTousseGrid.onClick.subscribe(function (e, args){ + // //被选中后不能触发双击事件 + // unReviewTousseGrid.setSelectedRows([args.row]); + // }); -//旧方法-------extjs 清除扫描内容 -// function clearScanText(){ -// var barcodeEnd = Ext.getCmp("barcodeEnd").getValue().Trim(); -// // if(barcodeEnd == '') -// { -// if(hiddenEndBarcode || currentScanMode == 'single'){ -// Ext.getCmp('barcode').setValue("");//如果未使用虚拟篮筐机制或者使用篮筐机制但扫描模式为单个扫描,扫描成功后需要清除该文本内容 -// }else{ -// Ext.getCmp('barcodeEnd').focus();//否则不清除,条码/篮筐(尾)获得焦点 -// } -// } -// } \ No newline at end of file + /*********** 左边 页面的已加入的待审核器械包列表*************/ + var forReviewGridColumns = [{ + field: 'tousseId', + name: 'tousseID', + width: 0, + minWidth: 0, + cssClass: 'reallyHidden', + headerCssClass: 'reallyHidden' + }, { + id: "tousseName", + name: "器械包名称", + field: "tousseName", + width: 150, + minWidth: 150, + cssClass: "cell-title", + sortable: true + }, { + field: 'barcode', + name: '条码', + sortable: true, + id: "barcode", + cssClass: "cell-title", + sortable: true, + minWidth: 100 + }, { + id: "packageType", + name: "包装类型", + field: "packageType", + width: 120, + minWidth: 120, + cssClass: "cell-title", + sortable: true, + minWidth: 100 + }, { + id: "sterileStartDate", + name: "灭菌开始日期", + field: "sterileStartDate", + width: 120, + minWidth: 120, + cssClass: "cell-title", + sortable: true, + minWidth: 100 + }, { + id: "sterilingMethod", + name: "灭菌程序", + field: "sterilingMethod", + width: 120, + minWidth: 120, + cssClass: "cell-title", + sortable: true, + minWidth: 100 + }, { + id: "sterilingMode", + name: "灭菌方式", + field: "sterilingMode", + width: 120, + minWidth: 120, + cssClass: "cell-title", + sortable: true, + minWidth: 100 + }, { + id: "virtualBasketSeqNum", + name: "虚拟篮筐", + field: "virtualBasketSeqNum", + width: 0, + minWidth: 0, + cssClass: 'reallyHidden', + headerCssClass: 'reallyHidden' + }, { + id: "deleteItem", + name: "删除", + field: "deleteItem", + width: 50, + minWidth: 50, + cssClass: "cell-title", + formatter: function (row, cell, value, columnDef, dataContext) { + var remove = ""; + return remove; + } + }]; + var forReviewGridOptions = { + enableCellNavigation: true, + enableColumnReorder: false, + // autoHeight: true, + // rowHeight: 28, + // editable: false, + // enableAddRow: false, + // forceFitColumns: true, + // checked: true, + // enableForHeaderCells: false + }; + var forReviewGridDataView = new Slick.Data.DataView({ + inlineFilters: true + }); + forReviewGrid = new Slick.Grid("#forReviewGridId", forReviewGridDataView, forReviewGridColumns, forReviewGridOptions); + attachAutoResizeDataGrid(forReviewGrid, 'forReviewGridId', 'forReviewGridContainer');//调整列宽高度 + //当行数改变时触发 + forReviewGridDataView.onRowCountChanged.subscribe(function (e, args) { + forReviewGrid.updateRowCount(); + forReviewGrid.render(); + }); + //当行改变时触发 + forReviewGridDataView.onRowsChanged.subscribe(function (e, args) { + forReviewGrid.invalidateRows(args.rows); + forReviewGrid.render(); + }); + + /***************今天审核任务统计******************************** */ + var reviewedChartGridCm = [{ + id: 'tousseName', + field: 'tousseName', + name: '器械包名称', + cssClass: "cell-title", + sortable: true, + minWidth: 300 + }, { + id: 'reviewer', + field: 'reviewer', + name: '审核人', + cssClass: "cell-title", + sortable: true, + minWidth: 300 + }, { + id: "amount", + field: 'amount', + name: '数量', + cssClass: "cell-title", + sortable: true, + minWidth: 300 + }]; + var reviewedChartGridOptions = { + enableCellNavigation: true, + enableColumnReorder: false + }; + var reviewedChartGridDataView = new Slick.Data.DataView({ + inlineFilters: true + }); + reviewedChartGrid = new Slick.Grid("#reviewedChartGridId", reviewedChartGridDataView, reviewedChartGridCm, reviewedChartGridOptions); + + /****************************入筐器械包********************* */ + var tousseInstanceCm = [{ + id: 'name', + field: 'name', + name: '名称', + cssClass: "cell-title", + sortable: true, + minWidth: 300 + }, { + id: 'barcode', + field: 'barcode', + name: '条形码', + cssClass: "cell-title", + sortable: true, + minWidth: 300 + }, { + id: "type", + name: '操作', + cssClass: "cell-title", + sortable: true, + minWidth: 300 + }]; + var reviewedBasketGridOption = { + enableCellNavigation: true, + enableColumnReorder: false, + rowHeight: 28, + editable: false, + enableAddRow: false, + forceFitColumns: true, + checked: true, + enableForHeaderCells: true + }; + var reviewedBasketGridView = new Slick.Data.DataView({ + inlineFilters: true + }); + reviewedBasketGrid = new Slick.Grid("#reviewedBasketGrid", reviewedBasketGridView, tousseInstanceCm, reviewedBasketGridOption); + // attachAutoResizeDataGrid111(reviewedBasketGrid,'reviewedBasketGrid','reviewedChartGridContainer'); + /******************************************************* */ +} + + +/** + *渲染grid + * @param {*} gridId + * @param {*} gridContainerId + * @param {*} columns + * @param {*} options + * @param {*} checkboxSelector + * @returns + */ +function renderGrid(gridId, gridContainerId, columns, options, checkboxSelector) { + var options = { + enableCellNavigation: true, + enableColumnReorder: false, + // rowHeight: 28, + // editable: false, + autoEdit: false, + // enableAddRow: false, + // forceFitColumns: true, + // checked: true, + // enableForHeaderCells: true + }; + dataView = new Slick.Data.DataView({ + inlineFilters: true + }); + // var dataView = []; + grid = new Slick.Grid("#" + gridId, dataView, columns, options); + if (!isUndefinedOrNullOrEmpty(checkboxSelector)) { + grid.registerPlugin(checkboxSelector); + } + attachAutoResizeDataGrid(grid, gridId, gridContainerId); + grid.setSelectionModel(new Slick.RowSelectionModel({ + selectActiveRow: false //单选 + })); + $(".slick-viewport").css({ + "overflow-x": "auto" + }); + return grid; +}; + + +/** + *重新加载数据并分页 + * @param {*} grid + * @param {*} url + * @param {*} params + */ +function renderGridDateAndPage(grid, pagerId, url, params) { + var mytranslation = { + pagelabel: "页", + currentpage: "当前页", + refresh: "刷新", + recordstatelabel: "显示", + currentrecords: "显示/隐藏当前记录状态", + perpage: "每页条数", + pageminus: "上一页", + pageplus: "下一页", + resultset_first: "第一页", + resultset_prev: "上一页", + resultset_next: "下一页", + resultset_last: "最后一页" + }; + + //分页行id + var pagercontent = $("#" + pagerId); + var url = url; + var search = '', + searchFields = '', + order = 'desc'; + + function pageIng(remoteUrl, container, datagrid, pagerType, trans, params, order, search, searchFields) { + new Slick.Controls.EnhancementPager({ + container: container, + remoteUrl: remoteUrl, + datagrid: datagrid, + pagerType: pagerType, + trans: trans, //i18n support + params: params, + limt: 25, + order: order, + search: search, + searchFields: searchFields, + }); + } + pageIng(url, pagercontent, grid, '', mytranslation, params, order); +} + + +/************************************************ */ + +/*********通用方法********* */ + +/** + * + * + * @param {*} grid + * @param {*} url + * @param {*} params + */ +function setGridData(grid, url, params) { + var data = {}; + if (params != null) { + $.each(params, function (k, v) { + data[k] = v; + }) + }; + $.ajax({ + type: 'get', + url: url, + async: false, + dataType: 'json', + data: data, + success: function (result) { + // console.log(result); + // var a = []; + // for (var i = 1; i < 100; i++) { + // a.push({ + // tousseName: i + // }) + // } + // grid.setData(result.rows); + grid.setData(result.rows); + grid.render(); + }, + error: function () { + + } + }) +} + +/** + * + * + * @param {*} grid + * @returns + */ +function getSelectedRowsData(grid) { + var rowIndexArray = grid.getSelectedRows(); + var data = []; + $.each(rowIndexArray, function (index, rowIndex) { + var slectedData = grid.getDataItem(rowIndex); + data.push(slectedData) + }); + return data +}; + +/** + * + * + * @returns + */ +function getforReviewGridDatas() { + // var data = forReviewGrid.getData() + var data = forReviewGrid.getData().getItems(); + return data; +} + +/** + * + * + * @param {*} grid + */ +function cleanGridDataView(grid) { + var dataView = grid.getData(); + var gridData = dataView.getItems(); + var length = gridData.length; + var itemIds = []; + for (var j = 0; j < length; j++) { + var id = gridData[j].id; + if (!isUndefinedOrNullOrEmpty(id)) { + itemIds.push(id); + } + } + for (var i = 0; i < length; i++) { + dataView.deleteItem(itemIds[i]); + } +} + +// +function setReviewedsum() { + var rows = reviewedChartGrid.getData(); + var amount = 0; + if (!isUndefinedOrNullOrEmpty(rows)) { + amount = rows.length; + } + $('#reviewedsum').val(amount); +} + +// +function clearScanText() { + $('#barcode').val(""); + //extjs旧代码 + // var barcodeEnd = Ext.getCmp("barcodeEnd").getValue().Trim(); + // // if(barcodeEnd == '') + // { + // if(hiddenEndBarcode || currentScanMode == 'single'){ + // Ext.getCmp('barcode').setValue("");//如果未使用虚拟篮筐机制或者使用篮筐机制但扫描模式为单个扫描,扫描成功后需要清除该文本内容 + // }else{ + // Ext.getCmp('barcodeEnd').focus();//否则不清除,条码/篮筐(尾)获得焦点 + // } + // } +} +/********************************************************* */ +/****************动态计算表格列宽************************ */ +function attachAutoResizeDataGrid(grid, gridId, gridContainerId) { + var gridDomElm = $('#' + gridId); + if (!gridDomElm || typeof gridDomElm.offset() === "undefined") { + return null; + } + resizeToFitBrowserWindow(grid, gridId, gridContainerId); + $(window).on("resize", function () { + resizeToFitBrowserWindow(grid, gridId, gridContainerId); + resizeToFitBrowserWindow(grid, gridId, gridContainerId); + }); +} +function calculateGridNewDimensions(gridId, gridContainerId) { + var DATAGRID_MIN_HEIGHT = 0; + var DATAGRID_MIN_WIDTH = 300; + var DATAGRID_BOTTOM_PADDING = 150; + + var availableHeight = $(window).height() - $('#' + gridId).offset().top - DATAGRID_BOTTOM_PADDING; + var availableWidth = $('#' + gridContainerId).width(); + // console.log('#' + gridContainerId + ":availableHeight-" + availableHeight); + // console.log('#' + gridContainerId + ":availableWidth-" + availableWidth); + var newHeight = availableHeight; + var newWidth = availableWidth; + if (newHeight < DATAGRID_MIN_HEIGHT) { + newHeight = DATAGRID_MIN_HEIGHT; + } + if (newWidth < DATAGRID_MIN_WIDTH) { + newWidth = DATAGRID_MIN_WIDTH; + } + + return { + height: newHeight, + width: newWidth + }; +}; + +function resizeToFitBrowserWindow(grid, gridId, gridContainerId) { + var newSizes = calculateGridNewDimensions(gridId, gridContainerId); + if (newSizes) { + $('#' + gridId).height(newSizes.height); + $('#' + gridId).width(newSizes.width); + if (new RegExp('MSIE [6-8]').exec(navigator.userAgent) === null && grid) { + grid.resizeCanvas(); + } + } +}; +/************************************** */ \ No newline at end of file Index: ssts-web/src/main/webapp/dx-disinfectsystem/pages/disinfectsystem/review/reviewView.jsp =================================================================== diff -u -r24711 -r24840 --- ssts-web/src/main/webapp/dx-disinfectsystem/pages/disinfectsystem/review/reviewView.jsp (.../reviewView.jsp) (revision 24711) +++ ssts-web/src/main/webapp/dx-disinfectsystem/pages/disinfectsystem/review/reviewView.jsp (.../reviewView.jsp) (revision 24840) @@ -1,30 +1,48 @@ <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> + +<%@ include file="../commons/tagLibsPath.jsp"%> + - - <%@ include file="../commons/tagLibsPath.jsp"%> 审核打包 + + + + + + + + - + - + + + + + + +