// 基本信息(包括userAgent、上个页面传递的数据) var baseInfo = null, // 基础环境信息(包括当前webview) baseEnv = null; var $profileItemList = $('.lin-sel-group'), // 搜索无结果时显示 $noResultWrap = $('#no_result_wrap'), $selectedProfileName = $('#selected_profile_name'), $pageContent = $('.page-content'); // 分页查询当前页数 var curPage = 1, // iscroll 滚动条实例 iscroller; // 获取基本信息(包括userAgent、上个页面传递的数据) var getBaseInfoPromise = function() { // 登录的相关信息 var userAgent = plus && JSON.parse(plus.storage.getItem("userAgent")) return { userAgent: userAgent, eventInfo: baseEnv.webview.eventInfo, patiInfo: baseEnv.webview.patiInfo } }, // 获取基础环境信息 getBaseEnvPromise = function () { var env = { webview: plus&&plus.webview.currentWebview() }; return Promise.resolve().then(function(res) { return env; }); }, // 初始化就诊事件列表 initProfileList = function() { var catalog = baseInfo.eventInfo.CATALOG, list = []; // TODO 临时排除 var except = ["0102","0111","0132","0116"]; if(catalog) { _.mapObject(catalog, function(name, key) { if(!_.contains(except,$.trim(key))) { list.push({code: key, name: name}) } }); // TODO 临时添加档案类型列表 list.push({code: '0201', name: "住院诊疗基本信息"},{code: '0211', name: "住院病案首页"},{code: '0214', name: "长期医嘱"},{code: '0215', name: "临时医嘱"},{code: '0216', name: "住院手术记录"},{code: '0213', name: "出院小结"},{code: '0212', name: "入院病历记录"}) var html = template("profile_item_tmpl", {list: list}); $profileItemList.append(html); } var $first = $profileItemList.find("li").eq(0), name = $.trim($first.attr("data-name")), code = $.trim($first.attr("data-code")); $first.addClass('checked'); if(name&&code) { $selectedProfileName.text(name); getProfileTemplateHtml(code); } }, showProfileItemSel = function() { var isShow = isShow || $('.lin-mask:hidden').length != 0; $('.lin-mask').toggle(isShow); $profileItemList.toggle(isShow); }, getProfileTemplateHtml = function(tempalteCode){ plus.nativeUI.showWaiting(); var patiInfo = baseInfo.patiInfo, eventInfo = baseInfo.eventInfo; var templateRequest = new Promise(function(resolve, reject) { mui.ajax('../template/'+tempalteCode+'.html', { dataType: 'html', type:'GET', error: function(xht, type, throwErr) { mui.toast("档案模板获取失败。"); plus.nativeUI.closeWaiting(); }, success: function(html) { resolve(html); } }) }), profileDataRequest = getReqPromise(healthProfileServer+"wlyy_service/record/healthData",{ strSSID: patiInfo.ssc, // 健康卡号 strEvent: eventInfo.EVENT, // 事件ID strCatalog: tempalteCode, // 档案类型 strSerial: "1" // 该类别顺序号,默认填1 },'GET'); Promise.all([templateRequest,profileDataRequest]).then(function(datas){ plus.nativeUI.closeWaiting(); var html = datas[0], profileRes = datas[1]; $pageContent.html(html); if(profileRes.status == 200) { var xmlToJson = window["dsXmlToJson"+tempalteCode], jsonData = {}; if(xmlToJson && $.isFunction(xmlToJson)) { // xml 转 json if((typeof profileRes.data=='string')&&profileRes.data.constructor==String) { // 去除携带的脚本内容 profileRes.data = profileRes.data.replace(/]*?>[\s\S]*?<\/script>/ig,''); jsonData = xmlToJson(profileRes.data.replace(/<\?xml .*\?>/,'')); } } renderProfileTemplate($.extend(true,{},jsonData)); } else { mui.toast(profileRes.msg); } }).catch(function(e) { console && console.error(e); plus.nativeUI.closeWaiting(); }); }, renderProfileTemplate = function(data) { $pageContent.removeAttr('avalonctrl').attr('ms-controller',"viewController"); var vm = avalon.define($.extend({},{"$id": "viewController"},data)); avalon.scan(); }, // 绑定页面事件 bindEvents = function () { $('.demo-comtop h1').on('click', showProfileItemSel); $('.lin-mask').on('click', showProfileItemSel); $profileItemList.on('click', 'li', function(){ var code = $.trim($(this).attr("data-code")), name = $.trim($(this).attr("data-name")); getProfileTemplateHtml(code); $selectedProfileName.text(name); showProfileItemSel(undefined, false); if(!$(this).hasClass('checked')){ $(this).addClass('checked').siblings().removeClass('checked'); } }); }; // 页面业务处理流程开始 new Promise(function(resolve, reject) { mui.plusReady(function() { // plus已经准备好,可以往下执行 resolve(true); }); }).then(function() { // 获取基础环境信息 return getBaseEnvPromise().then(function(env) { baseEnv = env; }).then(function() { // 获取登录医生信息 baseInfo = getBaseInfoPromise(); initProfileList(); // 绑定页面事件 bindEvents(); }) }).catch(function(e) { plus.nativeUI.closeWaiting(); console && console.error(e); });