//******************************************* //初始化控件操作 // 使用全局样式样式去掉 initScrollWrapper(); /** * 使用区域滚动组件,需手动初始化scroll控件 */ function initScrollWrapper() { mui('.mui-scroll-wrapper').scroll({ scrollY: true, //是否竖向滚动 scrollX: false, //是否横向滚动 startX: 0, //初始化时滚动至x startY: 0, //初始化时滚动至y indicators: true, //是否显示滚动条 deceleration: 0.0004, //阻尼系数,系数越小滑动越灵敏 bounce: true //是否启用回弹 }); } //******************************************* //窗口操作等 /** * 选项卡点击事件 */ mui("body").on("tap", ".mui-table-view-cell a", function(e) { //处理链接 var linktype = this.getAttribute("data-linktype"); //打开网络页面 if(linktype == "netpage") { var title = this.getAttribute("data-title"); var target = this.getAttribute("data-target"); var targetPage = plus.webview.getWebviewById("netpage"); if(targetPage) { mui.fire(targetPage, "loadnetpage", { title: title, pageurl: target }); targetPage.show("slide-in-right", 150); } //打开新页面 } else if(linktype == "newpage") { newpage(this); } else if(linktype == "cachedpage") { var target = this.getAttribute("data-pageid"); var targetPage = plus.webview.getWebviewById(target); targetPage.show('slide-in-right', 150); } else if(linktype == "action") { var action = this.getAttribute("data-action"); //do something if(action == "noaction") { plus.nativeUI.toast(this.innerText.trim() + "服务暂未开启"); } else if(action == "exitlogin") { plus.nativeUI.confirm("确定要重新登录吗?", function(e) { if(e.index == 0) { //restart app. plus.runtime.restart(); } }, app.APP_NAME_CN); } else if(action == "exitapp") { if(confirm('是否要退出系统?')) { plus.runtime.quit(); } } } }); /** * 打开新页面 * @param {出发DOM控件:this} e * @param {传到新窗口的参数} extras */ function newpage(e, extras) { var id = e.getAttribute("data-pageid"); var url = e.getAttribute("data-pageurl"); var title = e.getAttribute("data-pagetitle"); if(title) { mui.openWindow({ url: url, id: id, styles: { // 窗口参数 参考5+规范中的WebviewStyle,也就是说WebviewStyle下的参数都可以在此设置 //top: '15px', //String类型,窗口垂直向下的偏移量.支持百分比、像素值,默认值为0px.未设置top属性值时,优先通过bottom和height属性值来计算窗口的top位置. titleNView: { // 窗口的标题栏控件 autoBackButton: true, //显示左侧返回按钮 titleText: title, // 标题栏文字,当不设置此属性时,默认加载当前页面的标题,并自动更新页面的标题 titleColor: "#000000", // 字体颜色,颜色值格式为"#RRGGBB",默认值为"#000000" titleSize: "17px", // 字体大小,默认17px backgroundColor: "#F7F7F7", // 控件背景颜色,颜色值格式为"#RRGGBB",默认值为"#F7F7F7" progress: { // 标题栏控件的进度条样式 color: "#00FF00", // 进度条颜色,默认值为"#00FF00" height: "2px" // 进度条高度,默认值为"2px" }, splitLine: { // 标题栏控件的底部分割线,类似borderBottom color: "#CCCCCC", // 分割线颜色,默认值为"#CCCCCC" height: "1px" // 分割线高度,默认值为"2px" } } }, //errorPage: 'none', //String类型,窗口加载错误时跳转的页面地址.当Webview窗口无法加载指定的url地址时(如本地页面不存,或者无法访问的网络地址),此时会自动跳转到指定的错误页面地址(仅支持本地页面地址).设置为"none"则关闭跳转到错误页面功能,此时页面显示Webview默认的错误页面内容.默认使用5+ Runtime内置的错误页面. extras: { //新窗口的额外扩展参数,可用来处理页面间传值 extras: extras //自定义 } }); } else { mui.openWindow(url, id, { waiting: { autoShow: false }, extras: { //新窗口的额外扩展参数,可用来处理页面间传值 extras: extras //自定义 } }); } } //******************************************* //用户菜单操作等 /** * 获取程序分组 * @param {view窗口ID} viewId * @param {程序分组} exe_group */ function loadExeGroup(viewId, exe_group) { var data = GetUserMenu('menu', viewId); if(data.status != 0) { mui.alert(JSON.stringify(data.message)); return; } console.log("获取程序菜单权限" + JSON.stringify(data)); // var exe_group = mui("#exe_group")[0]; //程序分组 exe_group.innerHTML = ""; SetUserMenu_Exe_Group(data.data, exe_group); //杨俊燃 2018-11-21 //注:安卓5.0出现九宫格高度问题,暂是发现是 $mui.style="..." 这个操作没有执行成功,可能不兼容吧 //至于mui解决办法应该是有的,就等着你去发现了,我先用jq的操作执行咯~以下为未执行成功,导致界面异常的示例代码 //slider_group.style = "height: " + JSON.stringify($(window).height() - 20) + "px;"; $("#exe_group").height($(window).height() - 20) $("#exe_group .mui-slider-group").height($(window).height() - 20); $("#exe_group .mui-slider-indicator").css("margin-top", "5px"); $("#exe_group .mui-scroll-wrapper").css("top", "40px"); $("#exe_group li").css("font-size", "20px"); //刷新九宫格 var sliderApi = mui(exe_group).slider(); sliderApi.refresh(); initScrollWrapper(); } /** * 获取用户菜单权限 * @param {类型:系统-sys,菜单-meun,程序-exe} type * @param {系统编号} type */ function GetUserMenu(type, SysNumber) { var results = {}; var currentSession = app.loadconfig(app.CONFIG_CURRENT_SESSION); //console.log(JSON.stringify(currentSession)); var user_id = currentSession.user_id var data = { spname: "APP_GetUserMenu", //获取用户菜单权限 returnvalue: 1, _sp_Type: type, //类型 _sp_SysNumber: SysNumber, //系统编号 _sp_UserNumber: user_id //用户编号 // _sp_Type: sys, //类型 // _sp_SysNumber: SysNumber, //系统编号 // _sp_UserNumber: 'admin' //用户编号 }; var responseData = AjaxOperation(data, "获取用户菜单权限", true, app.API_METHOD_SYSAPI_ESP)//app.API_METHOD_ESP)//app.API_METHOD_SYSAPI_ESP) if(responseData.state) { console.log("获取用户菜单权限" + JSON.stringify(responseData)); results = responseData.data; } return results; } /** * 设置用户菜单 * @param {数据源} data * @param {ul表格容器} list */ function SetUserMenu_Menu(data, list) { list.innerHTML = ""; //移除所有列表 mui.each(data, function(index, item) { var PRA001 = item['PRA001']; //程序编号 var PRA002 = item['PRA002']; //上级系统编号 var PRA003 = item['PRA003']; //程序名称 var PRA009 = item['PRA009']; //程序路径 var li = document.createElement("li"); li.className = "mui-table-view-cell mui-media mui-col-xs-6 mui-col-sm-3"; li.id = PRA001; var a = document.createElement("a"); a.setAttribute("data-linktype", "newpage"); a.setAttribute("data-pageid", PRA001); a.setAttribute("data-pageurl", PRA009); a.setAttribute("data-pagetitle", PRA003); //********************** // var img = document.createElement("img"); // img.src = "images/Menu_img/faliao.png"; // img.className = "mui-media-icon mui-pull-caption head-img"; // img.style = "width: 40px;"; // a.appendChild(img); a.innerHTML = ""; //添加图表 var a_div = document.createElement("div"); a_div.className = "mui-media-body"; a_div.innerHTML = PRA003; a.appendChild(a_div); li.appendChild(a); list.appendChild(li); }); } /** * 设置程序分组列表 * @param {程序分组数据} data * @param {程序分组容器} exe_group */ function SetUserMenu_Exe_Group(data, exe_group) { var slider_group = document.createElement("div"); slider_group.className = "mui-slider-group"; // slider_group.style = "height: " + JSON.stringify($(window).height() - 20) + "px;"; var slider_indicator = document.createElement("div"); slider_indicator.className = "mui-slider-indicator"; // slider_indicator.style = "margin-top: 5px;"; //console.log("集合"+JSON.stringify(data)); //{"PRA001":"APP0101","PRA002":"APP01","PRA003":"物料管理","PRA005":1,"PRA009":""} mui.each(data, function(index, item) { var data_exe = GetUserMenu('exe', item["PRA001"]); //程序明细 //console.log("分组"+JSON.stringify(data_exe)); //1.添加分组项 var div_item = document.createElement("div"); div_item.className = "mui-slider-item"; var div_link = document.createElement("div"); div_link.className = "link-area"; var div_ul = document.createElement("ul"); div_ul.className = "mui-table-view"; var div_ul_li = document.createElement("li"); div_ul_li.className = "mui-table-view-cell"; div_ul_li.style = "font-size: 20px;"; div_ul_li.innerHTML = item["PRA003"]; var div_span = document.createElement("li"); div_span.className = "mui-badge mui-badge-primary"; div_span.innerHTML = data_exe.data.length; var div_wrapper = SetUserMenu_Exe(data_exe); //获得全部分组的菜单DOM div_ul_li.appendChild(div_span); div_ul.appendChild(div_ul_li); div_link.appendChild(div_ul); div_item.appendChild(div_link); div_item.appendChild(div_wrapper); slider_group.appendChild(div_item); //添加分组图标 var div_indicator = document.createElement("div"); div_indicator.className = (index == 0) ? "mui-indicator mui-active" : "mui-indicator"; slider_indicator.appendChild(div_indicator); }); exe_group.appendChild(slider_group); exe_group.appendChild(slider_indicator); }; /** * 设置程序列表 * @param {当前小分组程序集合} data_exe */ function SetUserMenu_Exe(data_exe) { var div_wrapper = document.createElement("div"); div_wrapper.className = "mui-scroll-wrapper"; // div_wrapper.style = "top: 40px"; var div_scroll = document.createElement("div"); div_scroll.className = "mui-scroll"; var div_ul = document.createElement("div"); div_ul.className = "mui-table-view mui-grid-view mui-grid-9"; //{"PRB001":"ReadyMaterialHtml","PRB002":"APP0102","PRB003":"前加工备料","PRB005":1,"PRB009":"ReadyMaterialHtml.html"} mui.each(data_exe.data, function(index_exe, item_exe) { var PRB001 = item_exe['PRB001']; //程序编号 var PRB002 = item_exe['PRB002']; //上级系统编号 var PRB003 = item_exe['PRB003']; //程序名称 var PRB009 = item_exe['PRB009']; //程序路径 var PRB016 = item_exe['PRB016']; //图标ID var div_li = document.createElement("li"); div_li.className = "mui-table-view-cell mui-media mui-col-xs-4 mui-col-sm-3"; var a = document.createElement("a"); a.setAttribute("data-linktype", "newpage"); a.setAttribute("data-pageid", PRB001); a.setAttribute("data-pageurl", PRB009); a.setAttribute("data-pagetitle", PRB003); //************************* //var img = document.createElement("img"); //img.src="../../images/Menu_img/faliao.png"; //img.className="mui-media-object mui-pull-caption head-img"; //img.style="width: 40px;"; //a.appendChild(img); a.innerHTML = ""; var a_div = document.createElement("div"); a_div.className = "mui-media-body"; if(PRB003.length > 6) { var marquee = document.createElement("marquee"); marquee.setAttribute("behavior", "alternate"); marquee.setAttribute("scrolldelay", "700"); marquee.innerHTML = PRB003 a_div.appendChild(marquee); } else { a_div.innerHTML = PRB003; } a.appendChild(a_div); div_li.appendChild(a); div_ul.appendChild(div_li); }); div_scroll.appendChild(div_ul); div_wrapper.appendChild(div_scroll); return div_wrapper; }; //******************************************* //其他公用方法 /** * 得到最大单号 绑定 * @param 单别 billType * @param 创建时间 为空默认为当前日期 createDate * @return 执行结果 result */ function GetMaxBillNO(billType, createDate) { if(!billType) { mui.alert("请输入单别!"); return ""; } if(!createDate) { createDate = ''; } var rul = "/B/GetMaxBillNO?strBillType=" + billType + "&strBillDate=" + createDate; return AjaxOperation({}, "", true, rul).data; } /** * 获得服务期日期、时间 * @return 日期[sys_date]和时间[sys_time]对象 result */ function GetSysDateTime() { var responseData = AjaxOperation({}, "获取服务器时间", true, "/b/sysDateTime") if(!responseData.state) { //不获取服务器日期时间,返回手机端日期时间 var D = new Date(); var d = formatDate(D); var h = D.getHours(); //获取当前小时数(0-23) var m = D.getMinutes(); //获取当前分钟数(0-59) var t = h + ":" + m; //获取当前时间 var date = {}; date.sys_date = d; date.sys_time = t; plus.nativeUI.toast("单头建立日期时间改为获取本机时间", { verticalAlign: 'center' }); return date; } return responseData.data.data; } /** * Javascript 将字符串日期格式化为 yyyy-mm-dd * @param 日期时间 date */ function formatDate(date) { var d = new Date(date), month = '' + (d.getMonth() + 1), day = '' + d.getDate(), year = d.getFullYear(); if(month.length < 2) month = '0' + month; if(day.length < 2) day = '0' + day; return [year, month, day].join('-'); } /** * ajax 数据操作 * @param 请求数据 data * @param 异常提示 errorMsg * @param 是否返回值 returnvalue :true/false * @param 调用api类型 api */ function AjaxOperation(data, errorMsg, returnvalue, api) { console.log('Ajax'+app.API_URL_HEADER); var results = {}; results.state = false; $.ajax(app.API_URL_HEADER + api, { //更新卡板号 data: data, dataType: "json", type: "post", timeout: 15000, async: false, success: function(resp) { results.state = resp.status == 0; if(returnvalue) { //返回结果 results.data = resp; } if(resp.status != 0 && errorMsg != "") { mui.alert(resp.message, errorMsg); return; } }, error: function(xhr, type, error) { //console.log(error); mui.alert(JSON.stringify(error)); } }); return results; }; /* * 播放声音 * Type(类型:NG/OK) */ var p; function playerAudio(Type) { if(typeof plus == "undefined") return; // 解决连续扫多个条码没声音的问题 if(p){ p.stop(); p.close(); p = null; } if(Type == "NG") { p = plus.audio.createPlayer("../../audio/NG.wav"); } else { p = plus.audio.createPlayer("../../audio/OK.wav"); } p.play(function() { //定时停止声音 setTimeout(function() { p.stop(); }, 100); }, function(e) { // alert("声音异常: " + e.message); }) } /* 当页面的文本失去焦点时,让其再次获取焦点 */ /** * @param {出发DOM控件:this} e */ function SetInputFoucs(codeID) { var itemTag = document.activeElement.tagName; //获取元素的标签名 var name = document.activeElement.name; //获取元素的名称 //如果控件不是文本 //如果控件是文本,Name非空时(如checkbox) //条码获取焦点 if((itemTag != 'INPUT') || (itemTag == 'INPUT' && name != '')) { $(codeID).focus(); } } mui.plusReady(function() { //1.设置多语言 var multilingual = plus.storage.getItem("Multilingual"); //var multilingual = 'CN'; loadProperties(multilingual); }); /** * 设置多语言 * @param {语言类型} lang */ function loadProperties(lang) { var lang = lang || navigator.languge || "CN"; //没有传人语言时候,就用浏览器缓存的 var name = ""; switch(lang) { case 'VN': //越南 name = 'strings_vn'; //调用国际化函数 break; case 'EN': //英文 name = 'strings_en'; //调用国际化函数 break; case 'JP': //日文 name = 'strings_jp'; //调用国际化函数 break; default: //默认:CN-中文 name = 'strings_cn'; //调用国际化函数 break; } // var path = plus.io.convertLocalFileSystemURL("_doc/" + app.MULTILINGUAL_PATH); // $.i18n.properties({ // name: name, //这个是参数path指定路径的首个单词,也就是资源文件名 // path: path, //app.MULTILINGUAL_PATH, //指定国际化映射文件的路径 // mode: 'map', //指定以键值对的形式获取资源 // language: lang, //指定语言类型中英文,举个例子:"zh_CN"为中文 // callback: function() { //加载完成后的回调函数 // var viewId = plus.webview.currentWebview().id; // //console.log(app.MULTILINGUAL_PATH + name); // //console.log(name + lang + JSON.stringify($.i18n)); // //console.log("窗口ID=" + viewId); // //alert(JSON.stringify(plus.webview.getLaunchWebview())); // //alert(viewId); // //添加html // $('[data-i18n]').each(function() { //遍历所有属性是data-i18n // var key = viewId + "_" + $(this).data("i18n"); // if($.i18n.prop(key) != "[" + key + "]") { // $(this).html($.i18n.prop(key)); //把这个属性值传入翻译后放到页面上 // } // }); // //添加提示文本 // $('[data-i18n_placeholder]').each(function() { //遍历所有属性是data-i18n // var key = viewId + $(this).data("i18n_placeholder"); // if($.i18n.prop(key) != "[" + key + "]") { // $(this).attr('placeholder', $.i18n.prop(key)); //翻译placeholder属性值 // } // }); // //添加title属性内容 // $('[data-i18n_title]').each(function() { //遍历所有属性是data-i18n // var key = viewId + $(this).data("i18n_title"); // if($.i18n.prop(key) != "[" + key + "]") { // $(this).attr('title', $.i18n.prop(key)); //翻译placeholder属性值 // } // }); // //添加value内容 // $('[data-i18n_value]').each(function() { //遍历所有属性是data-i18n // var key = viewId + $(this).data("i18n_value"); // if($.i18n.prop(key) != "[" + key + "]") { // $(this).val($.i18n.prop(key)); //翻译placeholder属性值 // } // }); // } // }) }