wbc
2024-09-06 8177b79722037a348b08375c63723356c07690c5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
//*******************************************
//初始化控件操作
 // 使用全局样式样式去掉
 
 
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 =
            "<svg class='iconfont-icon' aria-hidden='true'>" +
            "<use xlink:href='#" + PRA001 + "'></use>" +
            "</svg>"; //添加图表
        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 =
            "<svg class='iconfont-icon' aria-hidden='true'>" +
            "<use xlink:href='#" + PRB016 + "'></use>" +
            "</svg>";
        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)
 */
function playerAudio(Type) {
    if(typeof plus == "undefined")
        return;
    var p;
    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属性值
    //             }
    //         });
    //     }
    // })
}