写味粒子用到的方法

获取设备ID

var deviceId = api.deviceId(api里有封装好的这个方法 )

image.png

获取时间戳

  var=timestamp = (new Date()).getTime()/1000;
    consoledebug.log('时间戳————————————————————————>>>>'+JSON.stringify(timestamp))

定时器设置与方法

    //定义一个定时器
    定时器的总时间是30S
    var maxTime = 30; // seconds  
    apiready = function () {
        setTimeDevice()

        //todo  监听页面消失的时候,关掉页面就可以了
        api.addEventListener({
            name:'viewdisappear'
        },function(){
            api.closeWin();
        });
    }

触发与更改定时器的条件

function setTimeDevice() {
        $('#phone_num').focus(function (e) {      获取焦点刷新定时器
            maxTime = 30
            // clearInterval(intervalId);  清除定时器
        });
        $('#password').focus(function (e) {
            maxTime = 30
            // clearInterval(intervalId);
        });

        var intervalId = setInterval(function () {  
            maxTime--;
            consoledebug.log(maxTime)
            if (maxTime == 0) {
                clearTimeout(intervalId);
                ShowInvalidLoginMessage();
                // clearInterval(intervalId);
                return
            }
        }, 1000)
       //当maxtime==0的时候 计时器停止走ShowInvalidLoginMessage() 关闭这个页面
        function ShowInvalidLoginMessage() {
            closeToWin('root')
        }
    }

另一种简单的定时器(简单好用) 关闭定时可以给想要关闭的定时器起别名然后在 定义一个clearTimeout(‘别名’)方法

   定义全局变量
    var waitingtime= 180//付款时间
  // 等待支付时间取消订单方法
    function waitingForBuy() {
        //计时器等于0的时候调用取消订单接口
        if (waitingtime === 0) {
          var param={
              device_id:device_id,
              order_id:order_id,
              timestamp:timestamp,
              sign:hex_md5(detive_token+timestamp)
            }
            order_close(param,function (ret,err) {
                consoledebug.log('order_close--------------------->>>返回的是'+JSON.stringify(ret))
                if (ret.code=='202'){
                    closeToWin('root')
                }
            })


            //倒计时计时器
        } else {
            consoledebug.log("-----------"+waitingtime)
            $('#waiting_btn').text('请在'+waitingtime+"S内完成支付").addClass('disable')
            waitingtime--
            //给付款等待的计时器起一个别名
            fuKuan=setTimeout(function () {
                waitingForBuy()
            }, 1000)
        }
    }
    //关闭支付成功模版
    function closemengban() {
        if (colsetime===0){
            openWin('makeing_win','../../make/',{},2,false)
            //跳页之后取消付款等待的计时器
            clearTimeout(fuKuan);
        }else{
            colsetime--
            setTimeout(function () {
                closemengban()
            }, 1000)
        }
    }

双模版处理方法

 //如果接口访问成功
            if (ret.result) {
                var msgObj = ret.ret.data
                // 如果数组里有数据
                if (msgObj.length > 0) {
                    // 走耗材预警状态 0或者1
                    if (progress_type == 0 || progress_type == 1) {
                        for (var i = 0; i < msgObj.length; i++) {
                            // 如果状态为0的时候 文字是应答
                            if (msgObj[i].progress == 0) {
                                msgObj[i].type_str = '应答'
                                // 如果状态为0的时候 文字是完成填料
                            } else if (msgObj[i].progress == 1) {
                                msgObj[i].type_str = '完成填料'
                            }
                        }
                        // 渲染状态0/1的模版
                        var interText = doT.template($("#message-content-template").text())
                        $("#message-content").append(interText(msgObj));
                    } else {
                        // 走除了 状态0 /1的模版
                        var interText = doT.template($("#message-content-template-done").text())
                        $("#message-content-done").append(interText(msgObj));
                    }
                    page++
                    loading_flag = false
                } else {
                    //如果 没有数据状态显示
                    if (progress_type == 0 || progress_type == 1) {
                        if (page == 1 && msgObj.length == '0') {
                            $("#message-content").html(getNodataTipHtml('../..', "暂无耗材信息"));
                            return;
                        }
                    } else {
                        if (page == 1 && msgObj.length == '0') {
                            $("#message-content-done").html(getNodataTipHtml('../..', "暂无耗材信息"));
                            return;
                        }
                    }
                }

            } else {

            }
        }


    }

获取焦点消失,失去焦点显示 直接加在div里

 placeholder="提示文字"
 onfocus="this.placeholder=''"    // 获取焦点
 onblur="this.placeholder=''提示文字"   //失去焦点

输入框与背景字样式

这样写是光标与背景字之间没有间距页面也不会晃动

input::-webkit-input-placeholder{
            font-size: 14px;
            color:#AAAAAA ;
            margin-left: 0;
            padding-left: 0;
        }
        input{
            width: auto !important;
            height: 16px;
            font-size: 14px;
            position:relative;
            left:20px
        }

判断是否为空

      if (judgeIsAnyNullStr(phone_num)){
                showToast('请输入手机号')
                return
            }

封装好的judgeIsAnyNullStr方法

function judgeIsAnyNullStr(argument) {
    consoledebug.log('judgeIsAnyNullStr argument is : ' + argument)
    if (argument == null || argument == 'null' || argument == "" || argument == undefined || argument == "未设置" || argument == "undefined") {
        return true
    }
    return false
}

验证码从新发送

封装好的 waitingForVerify()方法

var globalTimeForVerify = 60

/**
 * @name 一分钟后获取验证码
 *
 * @author leek
 */
function waitingForVerify() {
    if (globalTimeForVerify === 0) {
        // var get_code=language_update($api.getStorage('language'),'get_code')
        $('#verify_btn').text('重新发送').removeClass('disable')
        $('#demo').addClass('aui-hide')
        // bindClickVerify()
        globalTimeForVerify = 60
    } else {
        $('#verify_btn').text(globalTimeForVerify + ' 已发送 ').addClass('disable')
        $('#demo').removeClass('aui-hide')
        globalTimeForVerify--
        setTimeout(function () {
            waitingForVerify()
        }, 1000)
    }
}

判断电话号格式是否正确

if (regular('phone_num', phone_num) !== true) {
            showToast('请填写正确的手机号码')
            return
        }

regular 方法

/**
 * @name 正则验证
 *
 * @author leek
 *
 * @param type 验证类型
 * @param value 待验证值
 * @returns {boolean}
 */
function regular(type, value) {
    switch (type) {
        // 手机号码
        case 'phone_num':
            var reg = new RegExp("^(13[0-9]|14[579]|15[0-3,5-9]|16[6]|17[0135678]|18[0-9]|19[89])\\d{8}$")
            return reg.test(value) ? true : '请填写正确的手机号码格式'
            break
        // 身份证号码
        case 'id_card':
            var reg = new RegExp("^(\\d{6})(\\d{4})(\\d{2})(\\d{2})(\\d{3})([0-9]|X)$")
            return reg.test(value) ? true : '请填写正确的身份证号码格式'
            break
        // 日期
        case 'date':
            var reg = new RegExp("^\\d{4}-\\d{1,2}-\\d{1,2}$")
            return reg.test(value) ? true : '请填写正确的日期格式'
            break
        // 时间
        case 'time':
            var reg = new RegExp("^(20|21|22|23|[0-1]\\d):[0-5]d:[0-5]\\d$")
            return reg.test(value) ? true : '请填写正确的时间格式'
            break
        // 日期时间
        case 'date_time':
            var reg = new RegExp("^[1-9]\\d{3}-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1])s+(20|21|22|23|[0-1]\\d):[0-5]d:[0-5]\\d$")
            return reg.test(value) ? true : '请填写正确的日期及时间格式'
            break
        // 验证码
        case 'verify_code':
            var reg = new RegExp("^\\d{4}$")
            return reg.test(value) ? true : '请填写正确的验证码格式'
            break
        // 邮政编码
        case 'post_code':
            var reg = new RegExp("^[1-9][0-9]{5}$")
            return reg.test(value) ? true : '请填写正确的验证码格式'
            break
        // 弱密码
        case 'weak_password':
            var reg = new RegExp("^\\w{6,16}$")
            return reg.test(value) ? true : '密码长度在6~15之间,只能包含字母、数字和下划线'
            break
        // 强密码
        case 'strong_password':
            var reg = new RegExp("^(?=.*\\d)(?=.*[a-z])(?=.*[A-Z]).{8,10}$")
            return reg.test(value) ? true : '密码必须包含大小写字母和数字的组合,不能使用特殊字符,长度在8-10之间'
            break
        // 电子邮箱
        case 'e-mail':
            var reg = new RegExp("^\\w+([-+.]\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*$")
            return reg.test(value) ? true : '请填写正确的Email地址格式'
            break
        // 姓名
        case 'rel_name':
            var reg = new RegExp("^[\u4E00-\u9FA5\\uf900-\\ufa2d·s]{2,20}$")
            return reg.test(value) ? true : '请填写正确的中文姓名格式'
            break
        // 车牌号
        case 'car_num':
            var reg = new RegExp("([京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领A-Z]{1}[A-Z]{1}(([0-9]{5}[DF])|([DF]([A-HJ-NP-Z0-9])[0-9]{4})))|([京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领A-Z]{1}[A-Z]{1}[A-HJ-NP-Z0-9]{4}[A-HJ-NP-Z0-9挂学警港澳]{1})")
            return reg.test(value) ? true : '请填写正确的车牌号格式'
            break
        default:
            return true
    }
}

字符串生成二维码(需要调用模块)

// 生成二维码
    function canner() {
        var FNScanner = api.require('FNScanner');
        FNScanner.encodeImg({
            content: pay_qr_code,  生成图片的字符串
            saveToAlbum: false,
            saveImg: {
                path: 'fs://album.png', 生成图片名称(如果同时生成两个图片方法里这个不能重名)
                w: 200,     图片宽
                h: 200       图片高
            }
        }, function(ret, err) {
            if (ret.status) {
                $api.attr($api.byId('WXcode'),'src',ret.imgPath); WXcode就是图片
            } else {
                showToast('支付码加载失败')
            }
        });

    }
 <div style="margin-left:100px;margin-right:100px;margin-top: 20px">
 <img id="WXcode" style="width: 400px;height: 300px"> 给IMG标签加id id名就是图片
</div>

样式 线1px

style=" border-bottom: 1px solid #F0F0F0"

模版判断

        {{? it[i].run_status_str=="故障"}}
            <div  class="aui-font-size-14 aui-pull-right" style="color:#FF9600">{{=it[i].run_status_str}}</div>
            {{?? it[i].run_status_str=="正常"}}
            <div  class="aui-font-size-14 aui-pull-right" style="color:#8B72FE">{{=it[i].run_status_str}}</div>
            {{?? it[i].run_status_str=="停用"}}
            <div  class="aui-font-size-14 aui-pull-right" style="color:#FF0000">{{=it[i].run_status_str}}</div>
            {{?}}
           {{?it[i].is_complete_polling==false}}
            <div   class=" aui-col-xs-4 aui-margin-t-10 aui-font-size-14" align="right"
                 style="line-height: 4.1rem ;color: #8B72FE">未检
            </div>
            {{??}}
            <div class=" aui-col-xs-4 aui-margin-t-10 aui-font-size-14" align="right"
                  style="line-height: 4.1rem ;color:#999999">已检
            </div>
            {{?}}

时间判断

    if (ret.result) {
                var msgObj = ret.ret
                consoledebug.log("msgObj is :" + JSON.stringify(msgObj))
                var date = new Date()
                var hour = date.getHours()
                var minute=date.getMinutes()
                var second = date.getSeconds()
                var sec = hour+':'+minute+':'+second
                consoledebug.log('当前秒:'+hourAndMinutesToSecond(sec))
                consoledebug.log('开始时间秒:'+hourAndMinutesToSecond(msgObj.am_begin_time))
                consoledebug.log('结束时间的秒:'+hourAndMinutesToSecond(msgObj.am_end_time))
                if (hourAndMinutesToSecond(msgObj.am_begin_time)<hourAndMinutesToSecond(sec)&&hourAndMinutesToSecond(sec)<hourAndMinutesToSecond(msgObj.am_end_time)){
                    msgObj.done_status_str1 = '进行中'
                }else {
                    msgObj.done_status_str1 = '未开始'
                }
                if (hourAndMinutesToSecond(msgObj.pm_begin_time)<hourAndMinutesToSecond(sec)&&hourAndMinutesToSecond(sec)<hourAndMinutesToSecond(msgObj.pm_end_time)){
                    msgObj.done_status_str2 = '进行中'
                }else {
                    msgObj.done_status_str2 = '未开始'
                }
                consoledebug.log('上午巡检的状态是------->>'+JSON.stringify(msgObj.done_status_str1))
                consoledebug.log('下午巡检的状态是------->>'+JSON.stringify(msgObj.done_status_str2))
                var interText = doT.template($("#message-content-template").text())
                $("#message-content").html(interText(msgObj));
            } else {

            }
        });
    }
    // 判断下午时间段是否到巡检时间
    function pmtime(type) {
        if (type=='进行中'){
            openWin('equipment_inspection2_win','./equipment_inspection2/',{polling_time_type:'pm'},2,false)
        }else{
            showToast('还未到巡检时间')
            return
        }

    }
    // 判断上午时间段是否到巡检时间
    function amtime(type) {
        if (type=='进行中'){
            openWin('equipment_inspection2_win','./equipment_inspection2/',{polling_time_type:'am'},2,false)
        }else{
            showToast('还未到巡检时间')
            return
        }

    }
    //获取当前秒
    function hourAndMinutesToSecond(time) {
        var hour = time.split(':')[0];
        var min = time.split(':')[1];
        var sec = time.split(':')[2];
        var second = Number(hour*3600) + Number(min*60) + Number(sec);
        return parseInt(second);
    }

102错误解决方法在 api-manager.js 里解决 具体代码如下

 api.ajax({
        url: url,
        method: method,
        headers: {
            "Content-type": "application/json;charset=UTF-8"
        },
        data: {
            body: param
        }
    }, function (ret, err) {
        consoledebug.log('Ajax ret is : ' + JSON.stringify(ret))
        clearWaitingForProgress();
        if (ret.code==102||ret.code==101){
            // sendEvent('login_event','false_token')
            var jsfun = 'showAlert();';
            api.execScript({
                name: 'login',
                script: jsfun
            });
            openWinNotSlidBack('login_win', './html/login/', {}, 2)
            clearStorage()
        }
        if (ret.result || ret.code == '200') {
            callBack(ret, err)
        } else {
            consoledebug.log('Ajax err is : ' + JSON.stringify(err))
            callBack(ret, err)
            // toast("网络请求超时,请稍后重试")
            return;
        }
    })
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 205,033评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,725评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,473评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,846评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,848评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,691评论 1 282
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,053评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,700评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,856评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,676评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,787评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,430评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,034评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,990评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,218评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,174评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,526评论 2 343

推荐阅读更多精彩内容