apicloud记录代码

let apiUrl = {
 // 请求路由
}

var url = ''; //服务器地址

var apiName = '/api/'; //请求路由前缀
var baseUrl = ''; //七牛云的服务器地址
let count = 60;

function getQueryVariable(variable) {
    var query = window.location.search.substring(1);
    var vars = query.split("&");
    for (var i = 0; i < vars.length; i++) {
        var pair = vars[i].split("=");
        if (pair[0] == variable) {
            return pair[1];
        }
    }
    return (false);
    // http://www.runoob.com/index.php?id=1&image=awesome.jpg
    // 调用 getQueryVariable("id") 返回 1。
    // 调用 getQueryVariable("image") 返回 "awesome.jpg"。
}
var objectToQueryString = function (obj) {
    return Object.keys(obj).map(function (key) {
        return "".concat(encodeURIComponent(key), "=").concat(encodeURIComponent(obj[key]));
    }).join('&');
};
let shareThumb = "widget://image/share/tb.png";
let shareUrl = "http://114.215.124.49/";
let sharePage = {
    yaoqing: "html/home/yaoqing.html",
    circleInfo: "html/circles/circleInfo_frm.html",
    topicConversation: "html/circles/topicConversation_frm.html",
    newInfo: "html/home/newInfo_frm.html",
    shopDetail: "html/market/shopDetail_frm.html",
    personalHomepage: "html/mine/personalHomepage_frm.html",
    reportDetails: "html/report/reportDetails_frm.html",
    dynamicDetails: "html/circles/dynamicDetails_frm.html",
    detectRich: "html/home/detectRich_frm.html"
}
let sharePageTitle = {
    yaoqing: "",
    circleInfo: "",
    topicConversation: "",
    newInfo: "",
    shopDetail: "向您推荐了该商品",
    personalHomepage: "向您推荐了该人的主页",
    reportDetails: "邀请您查看该报告",
    dynamicDetails: "向您推荐了该帖子",
    detectRich: "向您推荐了该帖子",
}

function NVTabBar() {
    this.NVTabBar = api.require('NVTabBar');
}
NVTabBar.prototype.open = function (height, items, options, callback) {
    // item案例
    // {
    //     w: api.winWidth / 5.0,
    //     bg: {
    //         marginB: 0,
    //         image: 'rgba(220,0,220,0.7)'
    //     },
    //     iconRect: {
    //         w: 25.0,
    //         h: 25.0,
    //     },
    //     icon: {
    //         normal: 'widget://image/NVTabBar/bir.png',
    //         highlight: 'widget://image/NVTabBar/bired.png',
    //         selected: 'widget://image/NVTabBar/bired.png'
    //     },
    //     title: {
    //         text: '我的',
    //         size: 12.0,
    //         normal: '#696969',
    //         selected: '#eb4f38',
    //         marginB: 6.0
    //     }
    // }
    this.NVTabBar.open({
        styles: {
            bg: options.bg ? options.bg : "#fff",
            //bg:"widget://image/NVTabBar/tabbar_bg.png",
            h: height,
            dividingLine: options.dividingLine ? options.dividingLine : {
                width: 1,
                color: '#EEEEEE'
            },
            badge: {
                bgColor: '#fff',
                numColor: '#fff',
                size: 6.0,
                centerX: 40,
                centerY: 6
            }
        },
        items: items,
        selectedIndex: options.selectedIndex ? options.selectedIndex : 0
    }, function (ret, err) {
        if (!!callback) {
            callback(ret)
        }
    });
}
NVTabBar.prototype.setSelect = function (index, callback) {
    this.NVTabBar.setSelect(index);
    if (!!callback) {
        callback()
    }
}

function AudioContent() {
    this.audioStreamer = api.require('audioStreamer');
}
AudioContent.prototype.openPlayer = function (path, callback) {
    this.audioStreamer.openPlayer({
        path: path,
    }, callback);
}
AudioContent.prototype.pause = function () {
    this.audioStreamer.pause();
}
AudioContent.prototype.resume = function (path, callback) {
    // alert(api.systemType)

    if (api.systemType == 'ios') {
        this.audioStreamer.resume();
    } else {
        this.audioStreamer.openPlayer(path, callback);
    }
}
AudioContent.prototype.openPlayer1 = function (path, callback) {
    this.openPlayer(path, callback);
}

AudioContent.prototype.stop = function () {
    alert(api.systemType)

    this.audioStreamer.stop();
}
AudioContent.prototype.addEventListener = function (callback) {
    this.audioStreamer.addEventListener(callback);
}

AudioContent.prototype.addProgressListener = function (callback) {
    this.audioStreamer.addProgressListener(callback);
}
AudioContent.prototype.seekToTime = function (time) {
    this.audioStreamer.seekToTime({
        time: time
    });
}
AudioContent.prototype.removeProgressListener = function (callback) {
    this.audioStreamer.removeProgressListener({}, callback);
}
AudioContent.prototype.getCurrentTime = function (callback) {

    this.audioStreamer.getCurrentTime(callback);
}

function Scanner() {
    this.FNScanner = api.require('FNScanner');
}

function hasPermission(desc, permission, callback) {
    var resultList = api.hasPermission({
        list: [permission]
    });
    if (resultList[0].granted) {
        // 已授权,可以继续下一步操作
        callback(true)
    } else {
        openComfirm({
            desc: desc,
            eventName: "permission" + permission,
            cancelText: "取消授权",
            confirmText: "去授权"
        })
        apiAddEventListener("permission" + permission, function (ret, err) {
            if (ret.value.code == 1) {
                api.requestPermission({
                    list: [permission],
                }, function (res) {
                    if (res.list[0].granted) {
                        // 已授权,可以继续下一步操作
                        callback(true)
                    } else {
                        callback(false)
                    }
                });
            }
        })
    }
}
Scanner.prototype.open = function (callback) {
    var permission = 'camera';
    var desc = "扫一扫需要您的授权才可以使用"
    var that = this
    hasPermission(desc, permission, function (flag) {
        if (flag) {
            that.FNScanner.open({
                autorotation: true
            }, function (ret, err) {
                switch (ret.eventType) {
                    case 'cameraError':
                        alert("访问摄像头失败");
                        break;
                    case 'albumError':
                        alert("访问相册失败");
                        break;
                    case 'cancel':
                        // alert("取消扫码");
                        break;
                    case 'selectImage':
                        // alert("识别图片");
                        break;
                    case 'cancelImage':
                        // alert("取消识别图片");
                        break;
                    case 'success':
                        // alert("识别成功");
                        break;
                    case 'fail':
                        alert("扫码失败");
                        break;
                }
                callback(ret, err)
            });
        }

    })



}
var mapAPI = {
    aMap: null,
    init: function () {
        this.aMap = api.require('aMap')
    },
    getLocation: function (callback) {
        var that = this
        let obj = {
            code: 0
        };
        if (!aMap) {
            mineAlert("请先初始化")
            return false
        }
        that.aMap.open({
            rect: {
                x: 0,
                y: 0,
                w: 0,
                h: 0
            },
            showUserLocation: true,
        }, function (ret, err) {
            if (ret.status) {
                that.aMap.getLocation(function (ret, err) {
                    if (ret.status) {
                        obj.code = 1
                        obj.data = ret
                    } else {
                        obj.code = 0
                        obj.data = err
                    }
                    if (callback) {
                        callback(obj)
                    }
                });
            } else {
                callback(obj)
                // alert(JSON.stringify(err));
            }
        });

    }
}

function getMessageTypeNum() {
    if (api.getPrefs({
            key: "token",
            sync: true
        })) {
        Ajax({
            url: apiUrl.getMessageTypeNum,
            method: 'get',
            token: api.getPrefs({
                key: "token",
                sync: true
            }),
            success: function (res) {
                vm.loading = false
                hideProgress();
                if (res.code == 1) {
                    apiSendEvent('MessageTypeNum', res.data)
                } else {
                    mineAlert(res.msg)
                }
            }
        })
    }

}






function getLoginInfo(callback) {
    // checkToken(function () {
    let userInfo = api.getPrefs({
        key: 'userInfo',
        sync: true
    });
    let token = api.getPrefs({
        key: 'token',
        sync: true
    });
    if (!userInfo && token) {
        showProgress()
        loginInfo(function (res) {
            hideProgress()
            callback(res.data)
        })
    } else {
        callback(userInfo ? JSON.parse(userInfo) : {})
    }

    // })
}

function loginInfo(callback) {
    checkToken(function () {
        Ajax({
            url: apiUrl.loginInfo,
            method: 'post',
            token: api.getPrefs({
                key: "token",
                sync: true
            }),
            success: function (res) {
                if (res.code == 1) {
                    api.setPrefs({
                        key: 'userInfo',
                        value: res.data
                    });
                    api.setPrefs({
                        key: 'accountId',
                        value: res.data.accountId
                    });
                    if (!!callback) {
                        callback(res)
                    }
                } else {
                    mineAlert(res.msg)
                }
            }
        })
    })
}

function getSysDept(longitude, latitude, callback) {
    Ajax({
        url: apiUrl.getSysDept,
        method: 'get',
        data: {
            longitude: longitude,
            latitude: latitude,
        },
        success: function (res) {
            if (res.code == 1) {
                callback(res)
            } else {
                mineAlert(res.msg)
            }
        }
    })
}

function openComment(params) {
    api.openFrame({
        name: 'submit',
        url: 'widget://html/pageOne/submit_frm.html',
        bounces: false,
        rect: {
            x: 0,
            y: 0,
            w: 'auto',
            h: 'auto'
        },
        pageParam: params
    });
    // open_frame('pageOne','submit_frm',false,{params:params}) 
}

function checkToken(callback) {
    if (api.getPrefs({
            key: "token",
            sync: true
        })) {
        callback()
    } else {
        hideProgress()
        mineAlert('尚未登录,请登录后再执行该操作')
    }
}


function sharePage_frm(params) {
    api.openFrame({
        name: 'sharePage_frm',
        url: 'widget://html/pageOne/sharePage_frm.html',
        rect: {
            x: 0,
            y: 0,
            w: 'auto',
            h: 'auto'
        },
        pageParam: {},
        bounces: false,
        pageParam: params
    });
}

let activeUrl = {
    0: ""
}

function openActionPage(param) {
    open_frame('pageOne', 'share_frm', false, param)
}
// newOpenWindow
var pageUrl = {}
function gotoPage(obj) {
    if (obj.linkType) {
   
    }
}

function newOpenWindow(obj, params = {}) {
    if (params) {
        obj.pageobj = Object.assign(obj.pageobj, params)
    }
    if (params.hasOwnProperty('id')) {
        if (!obj.pageobj) {
            obj.pageobj = {}; //默认赋值
        }
        api.openWin({
            name: obj.winname + params.id,
            url: 'widget://html/' + obj.windir + '/' + obj.winname + '.html',
            pageParam: obj.pageobj
        });
        return false
    }
    open_window(obj.windir, obj.winname, obj.pageobj)
}
var mix = {
    data: function () {
        return {
            pageUrl: pageUrl,
            that: this,
            url: url,
            themeColor: '#278EFB',
            payType: {
                1: '微信',
                2: '支付宝',
                3: '积分兑换'
            },
        }
    },
    filters: {
        splitTime: function (str) {
            if (str) {
                return str.split(" ")[0]
            } else {
                return ''
            }
        },
        overhidden(str) {
            if (zhankai) {
                return str
            } else {
                return str.substring(0, 57) + "..."
            }
        }
    },
    methods: {

        openVideo(url) {
            this.newOpenWindow(pageUrl.videoWin, {
                url: url
            })
        },
        getTimeShow(time_str) {
            var now = new Date();
            time_str = time_str.replace(/-/g, '/')
            var date = new Date(time_str);
            //计算时间间隔,单位为分钟
            var inter = parseInt((now.getTime() - date.getTime()) / 1000 / 60);
            if (inter == 0) {
                return "刚刚";
            }
            //多少分钟前
            else if (inter < 60) {
                return inter.toString() + "分钟前";
            }
            //多少小时前
            else if (inter < 60 * 24) {
                return parseInt(inter / 60).toString() + "小时前";
            }
            //本年度内,日期不同,取日期+时间  格式如  06-13 22:11
            // else if(now.getFullYear() == date.getFullYear()){
            //     return (date.getMonth()+1).toString() + "-" +
            //     date.getDate().toString() + " " +
            //     date.getHours() + ":" +
            //     date.getMinutes();
            // }
            else {
                // return date.getFullYear().toString() + "-" +
                // (date.getMonth()+1).toString() + "-" +
                // date.getDate().toString() + " " +
                // date.getHours() + ":" +
                // date.getMinutes();
                time_str = time_str.replace(/\//g, '-')
                return time_str
            }
        },
        newOpenWindow: function (obj, params = {}) {
            if (params) {
                obj.pageobj = Object.assign(obj.pageobj, params)
            }
            if (params.hasOwnProperty('id')) {
                if (!obj.pageobj) {
                    obj.pageobj = {}; //默认赋值
                }
                api.openWin({
                    name: obj.winname + params.id,
                    url: 'widget://html/' + obj.windir + '/' + obj.winname + '.html',
                    pageParam: obj.pageobj
                });
                return false
            }
            open_window(obj.windir, obj.winname, obj.pageobj)
        },
        toPay: function (params, callback) {
            if (api.getPrefs({
                    key: "token",
                    sync: true
                })) {
                Ajax({
                    url: apiUrl.toPay,
                    method: 'post',
                    data: params,
                    token: api.getPrefs({
                        key: "token",
                        sync: true
                    }),
                    success: function (res) {
                        if (res.code == 1) {
                            callback(res)
                        } else {
                            mineAlert(res.msg)
                        }
                    }
                })
            }
        },
     
        // 支付宝支付
        aliPayPlus: function (params, callback) {
            let codeDesc = {
                9000: '支付成功',
                8000: "正在处理中,支付结果未知(有可能已经支付成功),请查询商户订单列表中订单的支付状态",
                4000: "订单支付失败",
                5000: "重复请求",
                6001: "用户中途取消支付操作",
                6002: "网络连接出错",
                6004: "支付结果未知(有可能已经支付成功),请查询商户订单列表中订单的支付状态"
            }
            var aliPayPlus = api.require('aliPayPlus');
            aliPayPlus.payOrder({
                orderInfo: params
            }, function (ret, err) {
                if (ret.code == 9000) {
                    callback({
                        status: true
                    })
                } else {
                    callback({
                        status: false
                    })
                }
                mineAlert(codeDesc[ret.code])

            });
        },
        // 微信支付
        wxPay: function (params, callback) {
            let codeDesc = {
                '-2': '取消支付',
                '-1': "未知错误",
                '1': "apiKey值非法"
            }

            var wxPayPlus = api.require('wxPayPlus');
            wxPayPlus.payOrder({
                apiKey: params.appId,
                orderId: params.prepayId,
                mchId: params.partnerId,
                nonceStr: params.nonceStr,
                timeStamp: params.timeStamp,
                package: params.packageValue ? params.packageValue : "Sign=WXPay",
                sign: params.sign
            }, function (ret, err) {
                console.log(JSON.stringify(params));
                if (ret.status) {
                    //支付成功
                    callback(ret)
                } else {
                    callback(ret)
                    mineAlert(codeDesc[err.code]);
                }
            });
        },

        shareImage: function (scene, contentUrl, callback) {
            var wxPlus = api.require('wxPlus');
            wxPlus.shareImage({
                scene: scene,
                thumb: shareThumb,
                contentUrl: contentUrl
            }, function (ret, err) {
                callback(ret)
                if (ret.status) {
                    // alert('分享成功');
                } else {
                    // alert(err.code);
                }
            });
        },
        // 分享微信
        shareWebpage: function (scene, title, description, contentUrl, callback, image) {
            var wxPlus = api.require('wxPlus');
            wxPlus.shareWebpage({
                scene: scene,
                title: title,
                description: description,
                thumb: image ? image : shareThumb,
                contentUrl: contentUrl
            }, function (ret, err) {
                if (ret.status) {
                    callback(ret)
                } else {
                    let codeDesc = {
                        '-1': '未知错误',
                        '0': '成功',
                        '1': 'apiKey非法',
                        '2': '用户取消',
                        '3': '发送失败',
                        '4': '授权拒绝',
                        '5': '微信服务器返回的不支持错误',
                        '7': '注册SDK失败',
                    }
                    callback(codeDesc[err.code])

                }
            });
        },

        // 选择支付方式
        changePay: function (params) {
            let data = {
                name: 'my',
                url: "my_order_win",
                data: {
                    url: "my",
                    name: "my_order_frm",
                },
            }
            open_frame('onePage', 'selectPay', false, {
                params: params,
                callback: `open_window('${data.name}','${data.url}',${JSON.stringify(data.data)})`
            })
        },
        getImg: function ($event) {
            console.log($event)
            let url = $event.target.currentSrc
            if (url) {
                photoBrowser([url], 0)
            }
        },
      
      
        closeToWinRoot: function () {
            api.closeToWin({
                name: 'root'
            });
        },
        getMinutes: function (s) {
            return (s / 60).toFixed(2)
        },
        photoBrowser: function (images, i) {
            photoBrowser(images, i)
        },
        getTimes: function (str) {
            return str.split(' ')[0]
        },

        closeWin: function () {
            closeWin()
        },
        closeFrm: function () {
            closeFrm()
        },
        openWindow: function (windir, winname, pageobj) {
            open_window(windir, winname, pageobj)
        },
        openFrame: function (frmUrl, frmName, flag, frmPageParam, reload) {
            open_frame(frmUrl, frmName, flag, frmPageParam, reload)
        },
        ajax: function (opt) {
            Ajax(opt)
        },

        gotoUrl: function (callback) {
            if (api.getPrefs({
                    key: 'token',
                    sync: true
                })) {
                callback()
            } else {
                mineAlert('尚未登录,请登录')
                backToLogin()
            }
        },
        CsendSMS: function (phone, templateType, callback) {
            Ajax({
                url: apiUrl.sendSMS,
                method: 'get',
                type: 'body',
                data: {
                    phone: phone,
                    templateType: templateType
                },
                success: function (res) {
                    hideProgress()
                    if (res.code == 1) {
                        mineAlert('短信发送成功!')
                        callback(res)
                    } else {
                        api.removePrefs({
                            key: 'token'
                        });
                        mineAlert(res.msg)
                    }
                }
            })
        },
        CfindBanner: function (type, callback) {
            Ajax({
                url: apiUrl.findBanner,
                method: 'get',
                data: {
                    type: type,
                    cityId: api.getPrefs({
                        key: 'deptId',
                        sync: true
                    })
                },
                success: function (res) {
                    if (res.code == 1) {
                        callback(res.data)
                    } else {
                        api.removePrefs({
                            key: 'token'
                        });
                        mineAlert(res.msg)
                    }
                }
            })
        },
        getMs: function (second) {
            second = Math.floor(second)
            var str = Math.floor(second / 60) + ':' + ((second % 60) >= 10 ? second % 60 : '0' + (second % 60))
            return str
        },
        server: function () {
            server()
        }

    }
}

function scrolltobottom(callback) {
    api.addEventListener({
        name: 'scrolltobottom',
        extra: {
            threshold: 20 //设置距离底部多少距离时触发,默认值为0,数字类型
        }
    }, function (ret, err) {
        callback()
    });
}

function clipBoard(context, callback) {
    var clipBoard = api.require('clipBoard');
    clipBoard.set({
        value: context
    }, function (ret, err) {
        alert(JSON.stringify(ret))
        if (ret) {
            callback()
        } else {
            alert(JSON.stringify(err));
        }
    });
}



function aMap(rect, callback) {
    var aMap = api.require('aMap');
    aMap.open({
        rect: rect,
        showUserLocation: true,
        zoomLevel: 11,
        center: {
            lon: 116.297,
            lat: 40.109,
        },
        fixedOn: api.frameName,
        fixed: true
    }, function (ret, err) {
        // if (ret.status) {
        //     alert(JSON.stringify(ret));
        // } else {
        //     alert(JSON.stringify(err));
        // }
    });
    aMap.addAnnotations({
        annotations: [{
            id: 1,
            lon: 116.297,
            lat: 40.109,
            w: 15,
            h: 15,
        }, ],
        draggable: true,
        timeInterval: 2.0,
        icons: ['widget://image/song.png', ]
    }, function (ret) {

    });
    aMap.addAnnotations({
        annotations: [{
            id: 2,
            lon: 116.267,
            lat: 40.109,
            w: 15,
            h: 15,
        }, ],
        draggable: true,
        timeInterval: 2.0,
        icons: ['widget://image/shou.png']
    }, function (ret) {

    });
    aMap.addLine({
        id: 3,
        styles: {
            type: 'arrow',
            borderColor: '#FF0000',
            borderWidth: 3,
            lineDash: true,
            strokeImg: ''
        },
        points: [{
                lon: 116.297,
                lat: 40.109,
            },
            {
                lon: 116.267,
                lat: 40.109,
            }
        ]
    });
}

function wxLogin(callback) {
    var wxPlus = api.require('wxPlus');
    wxPlus.isInstalled(function (ret, err) {
        console.log(JSON.stringify(ret))
        if (ret.installed) {
            // "当前设备已安装微信客户端"
            // callback(1)
            wxPlus.auth({
                apiKey: 'wx9a77390d6e58fe3d'
            }, function (ret, err) {
                callback(1, ret.code, ret)
                return false
                if (ret.status) {
                    wxPlus.getToken({
                        apiKey: 'wx9a77390d6e58fe3d',
                        apiSecret: 'cead92126d54ab014722fab96957a848',
                        code: ret.code
                    }, function (ret, err) {
                        var dynamicToken = ret.dynamicToken
                        if (ret.status) {
                            var openId = ret.openId
                            wxPlus.getUserInfo({
                                accessToken: ret.accessToken,
                                openId: ret.openId
                            }, function (ret, err) {
                                if (ret.status) {
                                    // alert(11)
                                    callback(1, openId, ret)
                                } else {
                                    let codeDesc = {
                                        '-1': '未知错误',
                                        '0': '成功',
                                        '1': 'accessToken 过期',
                                        '2': 'openId非法',
                                        '3': 'openId值为空',
                                        '4': 'accessToken值为空',
                                        '5': 'accessToken非法',
                                        '6': '网络超时',
                                    }
                                    if (err.code) {
                                        wxPlus.refreshToken({
                                            dynamicToken: dynamicToken
                                        }, function (ret, err) {
                                            if (ret.status) {
                                                // alert(JSON.stringify(ret));
                                            } else {
                                                let codeDesc = {
                                                    '-1': '未知错误',
                                                    '0': '成功,用户同意',
                                                    '1': 'apiKey值为空或非法',
                                                    '2': 'refreshToken值为空',
                                                    '3': 'refreshToken非法',
                                                    '4': '网络超时',
                                                }
                                                mineAlert(codeDesc[err.code])
                                                setTimeoutCloseWin()

                                            }
                                        });
                                    }
                                    mineAlert(codeDesc[err.code])
                                }
                            });
                        } else {
                            let codeDesc = {
                                '-1': '未知错误',
                                '0': '成功,用户同意',
                                '1': 'apiKey值为空或非法',
                                '2': 'apiSecret值为空或非法',
                                '3': 'code值为空或非法',
                                '4': '网络超时',
                            }
                            mineAlert(codeDesc[err.code])
                            setTimeoutCloseWin()

                        }
                    });
                } else {
                    // alert(JSON.stringify(err));
                    // alert(JSON.stringify(ret));
                    //错误码:

                    let codeDesc = {
                        '-1': '未知错误',
                        '0': '成功,用户同意',
                        '1': '用户取消',
                        '2': '用户拒绝授权',
                        '3': '当前设备未安装微信客户端',
                    }
                    mineAlert(codeDesc[err.code])
                    setTimeoutCloseWin()
                    callback(0)
                }
            });

        } else {
            // "当前设备未安装微信客户端 "
            mineAlert('当前设备未安装微信客户端')
            callback(0)
        }
    });
}

function clearCache(callback) {
    api.clearCache(function () {
        api.toast({
            msg: '清除完成'
        });
    });
    getCache(function (size) {
        callback(size)
    })
}

function getCache(callback) {
    var size = api.getCacheSize({
        sync: true
    });
    switch (size) {
        case -1:
            mineAlert('无存储设备');
            break;
        case -2:
            mineAlert('正在准备USB存储设备');
            break;
        case -3:
            mineAlert('无法访问存储设备');
            break;
        default:
            callback((size / 1024 / 1024).toFixed(2))
            break;
    }
}

function wxLoginOpenId(callback) {
    var wxPlus = api.require('wxPlus');
    wxPlus.isInstalled(function (ret, err) {
        console.log(JSON.stringify(ret))
        if (ret.installed) {
            // "当前设备已安装微信客户端"
            // callback(1)
            wxPlus.auth({
                apiKey: 'wx9a77390d6e58fe3d'
            }, function (ret, err) {
                console.log(JSON.stringify(ret))
                if (ret.status) {
                    wxPlus.getToken({
                        apiKey: 'wx9a77390d6e58fe3d',
                        apiSecret: 'cead92126d54ab014722fab96957a848',
                        code: ret.code
                    }, function (ret, err) {
                        var dynamicToken = ret.dynamicToken
                        if (ret.status) {
                            var openId = ret.openId
                            wxPlus.getUserInfo({
                                accessToken: ret.accessToken,
                                openId: ret.openId
                            }, function (ret, err) {
                                if (ret.status) {
                                    callback(1, openId, ret)
                                } else {
                                    let codeDesc = {
                                        '-1': '未知错误',
                                        '0': '成功',
                                        '1': 'accessToken 过期',
                                        '2': 'openId非法',
                                        '3': 'openId值为空',
                                        '4': 'accessToken值为空',
                                        '5': 'accessToken非法',
                                        '6': '网络超时',
                                    }
                                    if (err.code) {
                                        wxPlus.refreshToken({
                                            dynamicToken: dynamicToken
                                        }, function (ret, err) {
                                            if (ret.status) {
                                                // alert(JSON.stringify(ret));
                                            } else {
                                                let codeDesc = {
                                                    '-1': '未知错误',
                                                    '0': '成功,用户同意',
                                                    '1': 'apiKey值为空或非法',
                                                    '2': 'refreshToken值为空',
                                                    '3': 'refreshToken非法',
                                                    '4': '网络超时',
                                                }
                                                mineAlert(codeDesc[err.code])
                                                setTimeoutCloseWin()

                                            }
                                        });
                                    }
                                    mineAlert(codeDesc[err.code])
                                }
                            });
                        } else {
                            let codeDesc = {
                                '-1': '未知错误',
                                '0': '成功,用户同意',
                                '1': 'apiKey值为空或非法',
                                '2': 'apiSecret值为空或非法',
                                '3': 'code值为空或非法',
                                '4': '网络超时',
                            }
                            mineAlert(codeDesc[err.code])
                            setTimeoutCloseWin()

                        }
                    });
                } else {
                    // alert(JSON.stringify(err));
                    // alert(JSON.stringify(ret));
                    //错误码:

                    let codeDesc = {
                        '-1': '未知错误',
                        '0': '成功,用户同意',
                        '1': '用户取消',
                        '2': '用户拒绝授权',
                        '3': '当前设备未安装微信客户端',
                    }
                    mineAlert(codeDesc[err.code])
                    setTimeoutCloseWin()
                    callback(0)
                }
            });

        } else {
            // "当前设备未安装微信客户端 "
            mineAlert('当前设备未安装微信客户端')
            callback(0)
        }
    });
}

function downloadpic(voo) {
    api.actionSheet({
        title: '保存图片',
        buttons: ['保存']
    }, function (ret, err) {
        if (ret) {
            if (ret.buttonIndex == 1) {
                api.saveMediaToAlbum({
                    path: voo
                }, function (ret, err) {
                    if (ret && ret.status) {
                        api.toast({
                            msg: '保存成功',
                            duration: 1000,
                            location: 'middle'
                        });

                    } else {
                        api.toast({
                            msg: '保存失败',
                            duration: 1000,
                            location: 'middle'
                        });
                    }
                });
            }
        } else {
            //     alert( JSON.stringify( err ) );
        }
    });
}

function photoBrowser(images, index) {
    open_window('pageOne', 'openCrame', {
        images: images,
        index: index
    })
}
// 选择图片
function selectPic(callback, max = 1) {
    api.actionSheet({
        cancelTitle: '取消',
        buttons: ['拍图片', '图片']
    }, function (ret, err) {
        if (ret.buttonIndex == 1) {
            var resultList = api.hasPermission({
                list: ['camera']
            });
            var granted = resultList[0].granted;
            if (granted) {
                api.getPicture({
                    sourceType: 'camera',
                    allowEdit: true,
                    mediaValuel: 'pic',
                    quality: 100
                }, function (ret, err) {
                    if (ret && ret.data) {
                        saveImg(ret.data, callback)
                    } else {
                        mineAlert('你没有选择图片');
                    }
                });
            } else {
                hasPermission('该功能需要您授权相机功能', 'camera', function (flag) {
                    api.getPicture({
                        sourceType: 'camera',
                        allowEdit: true,
                        mediaValuel: 'pic',
                        quality: 100
                    }, function (ret, err) {
                        if (ret && ret.data) {
                            saveImg(ret.data, callback)
                        } else {
                            mineAlert('你没有选择图片');
                        }
                    });
                })
            }

        } else if (ret.buttonIndex == 2) {
            newUIAlbumBrowser(max, 'image', true, callback)
        }

    })
}

function QiniuUpfile() {
    this.qiniuUpfile = api.require('qiniuUpfile');
}
QiniuUpfile.prototype.upfile = function (path, callback, index = 1, length = 1) {
    showProgress({
        style: 'default',
        animationType: 'fade',
        title: '正在上传',
        text: '请稍等',
        modal: true
    });
    var date = new Date().getTime();
    this.qiniuUpfile.upfile({
        file: path,
        name: date + path
    }, function (ret, err) {
        if (ret.status) {
            if (ret.oper == "complete") {
                // hideProgress()
                // 上传成功后组装访问路径,或直接访问文档url=upload_url + '/' + ret.info.key
                callback(baseUrl + '/' + ret.info.key)
            } else if (ret.oper == "progress") {
                showProgress({
                    style: 'default',
                    animationType: 'fade',
                    title: '正在上传',
                    text: Number(ret.percent).toFixed(2) + '%' + "(" + index + '/' + length + ")",
                    modal: true
                });
            }
        }
    });
}

function newUIAlbumBrowser(max, type, selectedAll, callback) {
    var UIAlbumBrowser = api.require('UIAlbumBrowser');
    UIAlbumBrowser.open({
        max: max,
        type: type,
        selectedAll: selectedAll,
        styles: {
            bg: '#fff',
            mark: {
                icon: '',
                position: 'bottom_left',
                size: 20
            },
            nav: {
                bg: 'rgba(0,0,0,0.6)',
                titleColor: '#fff',
                titleSize: 18,
                cancelColor: '#fff',
                cancelSize: 16,
                finishColor: '#fff',
                finishSize: 16
            },
            styles: {
                bg: '#fff',
                mark: {
                    icon: '',
                    position: 'bottom_left',
                    size: 20
                },
                nav: {
                    bg: 'rgba(255,255,255,0.6)',
                    titleColor: '#fff',
                    titleSize: 18,
                    cancelColor: '#000',
                    cancelSize: 16,
                    finishColor: '#000',
                    finishSize: 16,
                    cancelText: '取消',
                    finishText: '确定',
                },
                bottomTabBar: {
                    bg: 'rgba(255,255,255,0.6)',
                    previewTitleColor: '#fff',
                    previewTitleSize: 15,
                }
            },
        },
        rotation: true
    }, function (ret) {
        if (ret) {
            if (ret.eventType = 'confirm' && ret.list && ret.list.length >= 0) {
                if (max == 1) {
                    if (api.systemType == 'ios') {
                        saveImg(ret.list[0].thumbPath, callback)
                    } else {
                        saveImg(ret.list[0].path, callback)
                    }
                } else {
                    let list = []
                    ret.list.forEach(function (ele, index) {
                        if (api.systemType == 'ios') {
                            list.push(newSaveImg(ele.thumbPath, index, ret.list.length))
                        } else {
                            list.push(newSaveImg(ele.path, index, ret.list.length))
                        }
                    })
                    showProgress()
                    Promise.all(list).then(function (res) {
                        hideProgress()
                        res.forEach(function (item) {
                            callback(item)
                        })
                    })

                }
            }

            // alert(JSON.stringify(ret));
        }
    });
}

function selectMedia(fileList, callback, max = 1) {
    api.actionSheet({
        cancelTitle: '取消',
        buttons: ['拍图片', '图片', '拍视频', '视频']
    }, function (ret, err) {
        if (ret.buttonIndex == 1) {
            var resultList = api.hasPermission({
                list: ['camera']
            });
            var granted = resultList[0].granted;
            if (granted) {
                api.getPicture({
                    sourceType: 'camera',
                    allowEdit: true,
                    mediaValuel: 'pic',
                    quality: 100
                }, function (ret, err) {
                    if (ret && ret.data) {
                        saveImg(ret.data, callback)
                    } else {
                        mineAlert('你没有选择图片');
                    }
                });
            } else {
                hasPermission('该功能需要您授权相机功能', 'camera', function (flag) {
                    api.getPicture({
                        sourceType: 'camera',
                        allowEdit: true,
                        mediaValuel: 'pic',
                        quality: 100
                    }, function (ret, err) {
                        if (ret && ret.data) {
                            saveImg(ret.data, callback)
                        } else {
                            mineAlert('你没有选择图片');
                        }
                    });
                })
            }

        } else if (ret.buttonIndex == 2) {
            newUIAlbumBrowser(max - (fileList ? fileList.length : 0), 'image', true, callback)
        } else if (ret.buttonIndex == 3) {
            if (fileList && fileList.length && fileList.length > 1) {
                mineAlert("视频和图片只能上传一类")
                return false
            }
            api.getPicture({
                sourceType: 'camera',
                allowEdit: true,
                mediaValue: 'video',
                videoQuality: "high"
            }, function (ret, err) {
                if (ret && ret.data) {
                    let qiniuUpfile = new QiniuUpfile()
                    qiniuUpfile.upfile(ret.data, function (videoUrl) {
                        hideProgress()
                        callback({
                            media: 'video',
                            status: true,
                            videoUrl: videoUrl
                        })
                        qiniuUpfile = null
                    })
                } else {
                    mineAlert('你没有选择视频');
                }
            });
        } else if (ret.buttonIndex == 4) {
            if (fileList && fileList.length && fileList.length > 1) {
                mineAlert("视频和图片只能上传一类")
                return false
            }
            api.getPicture({
                sourceType: 'album',
                allowEdit: true,
                mediaValue: 'video',
                quality: 100
            }, function (ret, err) {
                // alert(JSON.stringify(ret))
                if (ret && ret.data) {
                    let qiniuUpfile = new QiniuUpfile()
                    qiniuUpfile.upfile(ret.data, function (videoUrl) {
                        hideProgress()
                        callback({
                            media: 'video',
                            status: true,
                            videoUrl: videoUrl,
                            videoName: ret.data
                        })
                        qiniuUpfile = null
                    })
                } else {
                    mineAlert('你没有选择视频');
                }
            });
        }

    })
}

function UIAlbumBrowser(max, type, selectedAll, callback) {
    var UIAlbumBrowser = api.require('UIAlbumBrowser');
    UIAlbumBrowser.open({
        max: max,
        type: type,
        selectedAll: selectedAll,
        styles: {
            bg: '#fff',
            mark: {
                icon: '',
                position: 'bottom_left',
                size: 20
            },
            nav: {
                bg: 'rgba(0,0,0,0.6)',
                titleColor: '#fff',
                titleSize: 18,
                cancelColor: '#fff',
                cancelSize: 16,
                finishColor: '#fff',
                finishSize: 16
            },
            styles: {
                bg: '#fff',
                mark: {
                    icon: '',
                    position: 'bottom_left',
                    size: 20
                },
                nav: {
                    bg: 'rgba(255,255,255,0.6)',
                    titleColor: '#fff',
                    titleSize: 18,
                    cancelColor: '#000',
                    cancelSize: 16,
                    finishColor: '#000',
                    finishSize: 16,
                    cancelText: '取消',
                    finishText: '确定',
                },
                bottomTabBar: {
                    bg: 'rgba(255,255,255,0.6)',
                    previewTitleColor: '#fff',
                    previewTitleSize: 15,
                }
            },
        },
        rotation: true
    }, function (ret) {
        if (ret) {
            if (ret.eventType = 'confirm' && ret.list && ret.list.length >= 0) {
                if (max == 1) {
                    saveImg(ret.list[0].path, callback)
                } else {
                    ret.list.forEach(function (ele) {
                        saveImg(ele.path, callback)
                    })
                }
            }

            // alert(JSON.stringify(ret));
        }
    });
}

function dateFtt(fmt, date) { //author: meizz
    let ret;
    const opt = {
        "Y+": date.getFullYear().toString(), // 年
        "m+": (date.getMonth() + 1).toString(), // 月
        "d+": date.getDate().toString(), // 日
        "H+": date.getHours().toString(), // 时
        "M+": date.getMinutes().toString(), // 分
        "S+": date.getSeconds().toString() // 秒
        // 有其他格式化字符需求可以继续添加,必须转化成字符串
    };
    for (let k in opt) {
        ret = new RegExp("(" + k + ")").exec(fmt);
        if (ret) {
            fmt = fmt.replace(ret[1], (ret[1].length == 1) ? (opt[k]) : (opt[k].padStart(ret[1].length, "0")))
        };
    };
    return fmt;
}

/**************************************时间格式化处理************************************/
function dateFtt1(str) { //author: meizz
    return dateFtt('YYYY-mm-dd HH:MM:SS', new Date(str));
}

function saveImg(file, callback) {
    let qiniuUpfile = new QiniuUpfile()
    qiniuUpfile.upfile(file, function (imageUrl) {
        hideProgress()
        callback({
            message: imageUrl,
            status: true
        })
        qiniuUpfile = null
    })
    return false
    showProgress({
        style: 'default',
        animationType: 'fade',
        title: '图片上传中',
        text: '先喝杯茶...',
        modal: true
    });
    api.ajax({
        url: url + '/app/upload',
        method: 'post',
        data: {
            files: {
                file: file
            }
        }
    }, function (ret, err) {
        hideProgress()
        alert(JSON.stringify(ret));

        if (ret) {
            if (ret.status == "success") {
                callback(ret)
            } else {
                mineAlert(ret.msg)
            }
        } else {
            // alert( JSON.stringify(err) );
        }
    });
}

function newSaveImg(file, index, length) {
    return new Promise(function (r, j) {
        let qiniuUpfile = new QiniuUpfile()
        qiniuUpfile.upfile(file, function (imageUrl) {
            r({
                message: imageUrl,
                status: true
            })
            qiniuUpfile = null
        }, index, length)
        return false
        api.ajax({
            url: url + '/app/upload',
            method: 'post',
            data: {
                files: {
                    file: file
                }
            }
        }, function (ret, err) {
            if (ret) {
                if (ret.status == "success") {
                    r(ret)
                } else {
                    j(ret.msg)
                }
            } else {
                // alert( JSON.stringify(err) );
            }
        });
    })

}
/**
 * @return {boolean}
 */
function IsCard(str) {
    var reg = /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/;
    return reg.test(str);
}

function IsNull(str) {
    if (str === "") {
        return true
    }
    return false
}

function phoneFun(phones) {
    var myreg = /^[1][3,4,5,7,8,9][0-9]{9}$/;
    console.log(myreg.test(phones))
    if (!myreg.test(phones)) {
        return false;
    } else {
        return true;
    }
}
// 全局绑定监听token的方法
function setToken(vm, callback) {
    api.addEventListener({
        name: "upDateToken"
    }, function (ret) {
        callback(ret)
    })
}

function removeSendToken() {
    api.sendEvent({
        name: 'deleteToken',
    });
}

function removeToken(vm, callback) {
    // console.log('绑定公共监听')


    api.addEventListener({
        name: "deleteToken"
    }, function (ret) {
        api.sendEvent({
            name: "changeMessageTypeNum",
            extra: {
                name: 'clear'
            }
        })
        api.sendEvent({
            name: "clearCart",
        })
        callback(ret)
    })
}

function selectPCA(callback) {
    var UIActionSelector = api.require('UIActionSelector');
    UIActionSelector.open({
        datas: 'widget://res/city.json',
        layout: {
            row: 5,
            col: 3,
            height: 30,
            size: 12,
            sizeActive: 14,
            rowSpacing: 5,
            colSpacing: 10,
            maskBg: 'rgba(0,0,0,0.2)',
            bg: '#fff',
            color: '#888',
            colorActive: '#22374A',
            colorSelected: '#22374A'
        },
        animation: true,
        cancel: {
            text: '取消',
            size: 12,
            w: 90,
            h: 35,
            bg: '#fff',
            bgActive: '#ccc',
            color: '#647385',
            colorActive: '#fff'
        },
        ok: {
            text: '确定',
            size: 12,
            w: 90,
            h: 35,
            bg: '#fff',
            bgActive: '#ccc',
            color: '#647385',
            colorActive: '#fff'
        },
        title: {
            text: '请选择',
            size: 12,
            h: 44,
            bg: '#eee',
            color: '#647385'
        },
        fixedOn: api.frameName
    }, function (ret, err) {
        if (ret.eventType == 'ok') {
            callback(ret)
        }
    });
}

function UIDatePicker(callback) {
    let date = new Date();
    var UIDatePicker = api.require('UIDatePicker');
    UIDatePicker.open({
        type: 'date',
        rowHeight: 40,
        maxDate: date.getFullYear() + '-' + (date.getMonth() + 1) + '-' + date.getDate() + ' 12:30:08',
        minDate: '1970-05-01 12:30:08',
        title: '选择时间',
        titleStyle: {
            size: 14, //(可选项)数字类型;标题字体大小;默认:20
            color: '#647385', //(可选项)字符串类型;b字体颜标题色,支持rgb、rgba、#;默认:#FFFFFF
            ttf: 'Alkatip Basma Tom' //(可选项)字符串类型;默认值:标题字体;

        },
        styles: {
            bg: 'rgb(255,255,255)',
            headerViewBackgroundColor: 'rgba(0,0,0,0)',
            lineBackgroundColor: 'rgba(0,0,0,0)',
            item: {
                normal: '#647385',
                normalFont: 14,
                selected: '#22374A',
                selectedFont: 17,
                cancelBtn: {
                    cancelButtonTextColor: '#1E1E1E',
                    cancelButtonText: '取消',
                    cancelButtonFont: 17
                },
                confirmBtn: {
                    confirmButtonTextColor: '#1E1E1E',
                    confirmButtonText: '确定',
                    confirmButtonFont: 17
                },
            }
        },
    }, function (ret, err) {
        if (ret) {
            if (ret.eventType == 'submit') {
                // vm.nowDate = ret.year + '年' + ret.month + '月'
                callback(ret)
            }
        } else {}
    });
}

function datePicker(type, callback) {
    let date = new Date();
    var UIDatePicker = api.require('UIDatePicker');
    UIDatePicker.open({
        type: type ? type : 'date',
        rowHeight: 40,
        maxDate: date.getFullYear() + '-' + (date.getMonth() + 1) + '-' + date.getDate() + ' 12:30:08',
        minDate: '1970-05-01 12:30:08',
        title: '选择时间',
        titleStyle: {
            size: 14, //(可选项)数字类型;标题字体大小;默认:20
            color: '#647385', //(可选项)字符串类型;b字体颜标题色,支持rgb、rgba、#;默认:#FFFFFF
            ttf: 'Alkatip Basma Tom' //(可选项)字符串类型;默认值:标题字体;
        },
        styles: {
            bg: 'rgba(0,0,0,0)',
            headerViewBackgroundColor: 'rgba(0,0,0,0)',
            lineBackgroundColor: 'rgba(0,0,0,0)',
            item: {
                normal: '#647385',
                normalFont: 14,
                selected: '#22374A',
                selectedFont: 17,
                cancelBtn: {
                    cancelButtonTextColor: '#1E1E1E',
                    cancelButtonText: '取消',
                    cancelButtonFont: 17
                },
                confirmBtn: {
                    confirmButtonTextColor: '#1E1E1E',
                    confirmButtonText: '确定',
                    confirmButtonFont: 17
                },
            }
        },
    }, function (ret, err) {
        if (ret) {
            if (ret.eventType == 'submit') {
                // vm.nowDate = ret.year + '年' + ret.month + '月'
                callback(ret)
            }
        } else {}
    });
}

function closeWin() {
    // api.sendEvent({
    //     name: 'new_init'
    // });
    api.closeWin();
}



//封装方法ajax
function Ajax(opt) {
    opt = opt || {};
    opt.method = opt.method || 'POST';
    opt.url = opt.url || '';
    opt.async = opt.async || true;
    opt.data = opt.data || null;
    opt.type = opt.type || null;
    opt.token = opt.token || null;
    opt.Authorization = opt.Authorization || null;
    opt.success = opt.success || function () {};
    if (opt.type == "body" || opt.type == "files") {
        opt.headers = {
            'Content-Type': 'application/json;charset=UTF-8',
        };
    }
    console.log("发送的接口:" + opt.url + "参数:" + JSON.stringify(opt.data));
    if (opt.type == "files") {
        console.log(JSON.stringify({
            url: url + apiName + opt.url,
            method: opt.method,
            data: {
                files: opt.data,
            }
        }))
        api.ajax({
            url: url + apiName + opt.url,
            method: opt.method,
            data: {
                files: opt.data,
            }
        }, function (ret, err) {
            if (ret) {
                console.log("接收的数据:" + JSON.stringify(ret));
                opt.success(ret);
            } else {
                console.log(JSON.stringify(err));
                // api.alert({
                //     msg: JSON.stringify(err)
                // });
            }
        });
    } else if (opt.type == "body") {
        if (opt.token) {
            console.log('用户token:', opt.token)
            opt.headers.token = opt.token
        }
        if (opt.Authorization) {
            console.log('用户token:', opt.token)
            opt.headers.Authorization = opt.Authorization
        }
        api.ajax({
            url: url + apiName + opt.url,
            method: opt.method,
            headers: opt.headers,
            returnAll: true,
            data: {
                body: opt.data,
            }
        }, function (ret, err) {
            if (ret) {
                console.log("接收的数据:" + JSON.stringify(ret.body));
                if (ret.body.code == 201) {
                    // api.removePrefs({
                    //     key: 'token'
                    // });
                    // apiSendEvent("pageCarttotal", {
                    //     carttotal: 0
                    // })
                    // apiSendEvent("collectionCount", {
                    //     collectionCount: 0
                    // })
                    // apiSendEvent("couponCount", {
                    //     couponCount: 0
                    // })
                    // apiSendEvent('MessageTypeNum', 0)
                    // api.removePrefs({
                    //     key: 'userInfo'
                    // });
                    // apiSendEvent("upDateUserInfo")
                }
                opt.success(ret.body);
            } else {
                hideProgress()

                if (err.statusCode == 500 || err.statusCode == 404) {
                    api.toast({
                        msg: '请求失败,服务端异常!',
                        duration: 2000,
                        location: 'bottom'
                    });
                } else {
                    api.toast({
                        msg: '加载失败,请检查网络连接',
                        duration: 2000,
                        location: 'bottom'
                    });
                }
            }
        });
    } else {
        //头部需要token的
        if (opt.token) {
            console.log('用户token:', opt.token)
            opt.headers = {
                'token': opt.token,
            };
        }
        if (opt.Authorization) {
            console.log('用户token:', opt.token)
            opt.headers = {
                'Authorization': opt.Authorization,
            };
        }
        // opt.headers = {
        //     'Content-Type': 'application/json;charset=utf-8',
        // };
        console.log(JSON.stringify({
            url: url + apiName + opt.url,
            method: opt.method,
            headers: opt.headers,
            returnAll: true,
            data: {
                values: opt.data
            },
        }))
        api.ajax({
            url: url + apiName + opt.url,
            method: opt.method,
            headers: opt.headers,
            returnAll: true,
            data: {
                values: opt.data
            },
        }, function (ret, err) {
            if (ret) {
                opt.success(ret.body);
                if (ret.body.code == 201) {
                    // api.removePrefs({
                    //     key: 'token'
                    // });
                    // apiSendEvent("pageCarttotal", {
                    //     carttotal: 0
                    // })
                    // apiSendEvent("collectionCount", {
                    //     collectionCount: 0
                    // })
                    // apiSendEvent("couponCount", {
                    //     couponCount: 0
                    // })
                    // apiSendEvent('MessageTypeNum', 0)
                    // api.removePrefs({
                    //     key: 'userInfo'
                    // });
                    // apiSendEvent("upDateUserInfo")
                }
                console.log(",发送的接口:" + opt.url + "接收的数据:" + JSON.stringify(ret.body));
            } else {
                console.log(opt.url + '返回的状态码' + err.statusCode)
                hideProgress()

                if (err.statusCode == 500 || err.statusCode == 404) {
                    // vm.is_load = 2;
                    api.toast({
                        msg: '请求失败,服务端异常!',
                        duration: 2000,
                        location: 'bottom'
                    });
                } else {
                    // vm.is_load = 3;
                    api.toast({
                        msg: '加载失败,请检查网络连接',
                        duration: 2000,
                        location: 'bottom'
                    });
                }

            }
        });
    }

}

//弹窗提示
function mineAlert(msg, code) {
    api.toast({
        msg: msg,
        duration: 2000,
        location: api.systemType != "ios" ? 'bottom' : 'middle'
    });
    // if (code && code == 22) {
    //     backToLogin();
    // }
}

//判断token是否正确如果不正确回到登录页面
function backToLogin() {
    setTimeout(function () {
        newOpenWindow(pageUrl.login)
    }, 500)
}

//延时关闭win页面
function setTimeoutCloseWin() {
    setTimeout(function () {
        closeWin();
    }, 500);
}
//延时关闭frm页面
function setTimeoutCloseFrm() {
    setTimeout(function () {
        closeFrm();
    }, 500);
}

function apiAddEventListener(name, callback) {
    api.addEventListener({
        name: name
    }, callback);
}

function apiSendEvent(name, extra = {}) {
    console.log(JSON.stringify(extra))
    api.sendEvent({
        name: name,
        extra: extra
    });
}

function openComfirm(pageParam) {
    api.openFrame({
        name: 'comfirm',
        url: 'widget://html/pageOne/comfirm_frm.html',
        bounces: false,
        rect: {
            x: 0,
            y: 0,
            w: 'auto',
            h: 'auto'
        },
        pageParam: pageParam
    });
}

function showProgress(param) {
    var obj = {
        style: 'default',
        animationType: 'fade',
        title: '加载中',
        text: '请稍等...',
        modal: true
    }
    obj = Object.assign(obj, param)
    api.showProgress(obj);
}

function hideProgress() {
    api.hideProgress();
}

function closeFrm() {
    if (api) {
        api.closeFrame();
    }
}

//延时关闭主页面
function setTimeoutCloseWinRoot() {
    setTimeout(function () {
        api.closeToWin({
            name: 'root'
        });
    }, 500);
}

//动态加载script
function loadScript(url, callback) {
    var script = document.createElement('script'),
        head = document.getElementsByTagName('head')[0];
    script.type = 'text/javascript';
    script.charset = 'UTF-8';
    script.src = url;
    if (callback) {
        if (script.addEventListener) {
            script.addEventListener('load', function () {
                callback();
            }, false);
        } else if (script.attachEvent) {
            script.attachEvent('onreadystatechange', function () {
                var target = window.event.srcElement;
                if (target.readyState == 'loaded') {
                    callback();
                }
            });
        }
    }
    head.appendChild(script);
}



//修复页面滑动时Swiper移动所产生的bug
function functionName(className) {
    var timer;
    window.onscroll = function () {
        if (timer)
            clearTimeout(timer)
        $api.addCls($api.dom('.' + className), 'swiper-no-swiping');
        timer = setTimeout(function () {
            $api.removeCls($api.dom('.' + className), 'swiper-no-swiping');
        }, 100)
    }
}

//自定义打开新窗口
function open_window(windir, winname, pageobj) {
    if (!pageobj) {
        pageobj = {}; //默认赋值
    }
    // console.log(JSON.stringify({
    //     name: winname,
    //     url: 'widget://html/' + windir + '/' + winname + '.html',
    //     pageParam: pageobj
    // }))
    api.openWin({
        name: winname,
        url: 'widget://html/' + windir + '/' + winname + '.html',
        pageParam: pageobj
    });
}

function adapterX(className) {
    if ($api.dom(className)) {
        $api.css($api.dom(className), 'padding-bottom:' + api.safeArea.bottom + 'px !important;');
    }
}

function open_frame(frmUrl, frmName, flag, frmPageParam, reload) {
    var headerList = $api.dom('header');
    var footerList = $api.dom('footer');
    if (frmName == "shangjiaDetail") {

    } else {
        if ($api.dom('header') != null) {
            $api.fixIos7Bar(headerList); //修改状态栏显示
        }
    }

    var headerListHeight;
    var footerListHeight;
    //只是表示那种有没有header的时候
    if (!headerList) {
        headerListHeight = 0;
        api.setStatusBarStyle({
            color: 'rgba(0,0,0,0)',
            style: 'dark'
        });
    } else {
        headerListHeight = headerList.offsetHeight;
    }
    //只是表示那种有没有footer
    if (!footerList) {
        footerListHeight = 0;
    } else {
        footerListHeight = footerList.offsetHeight;
    }
    //匹配iphoneX
    adapterX('.footer')
    if (!frmPageParam) {
        frmPageParam = {}; //默认赋值
    }
    if (!reload) {
        reload = false;
    }
    if (api.pageParam.type == "videoDetails" || api.pageParam.type == "newsMessageVideo" || api.pageParam.type == "teachingVideo" || api.pageParam.type == "myAttention") {
        headerListHeight = 0;
        api.setStatusBarStyle({
            color: 'rgba(0,0,0,0)',
            style: 'dark'
        });
    }
    api.openFrame({
        name: frmName,
        url: 'widget://html/' + frmUrl + '/' + frmName + '.html',
        rect: {
            x: 0,
            y: frmPageParam.headTop ? 0 : headerListHeight,
            w: api.winWidth,
            h: api.winHeight - (frmPageParam.headTop ? 0 : headerListHeight) - footerListHeight - api.safeArea.bottom
        },
        reload: reload,
        pageParam: frmPageParam,
        bounces: flag,
    });
}


function body_click_init() {
    if ('addEventListener' in document) {
        document.addEventListener('DOMContentLoaded', function () {
            FastClick.attach(document.body);
        }, false);
    }
}

//0:iPhone 1:Android
function ismobile(test) {
    var u = navigator.userAgent,
        app = navigator.appVersion;
    if (/AppleWebKit.*Mobile/i.test(navigator.userAgent) || (/MIDP|SymbianOS|NOKIA|SAMSUNG|LG|NEC|TCL|Alcatel|BIRD|DBTEL|Dopod|PHILIPS|HAIER|LENOVO|MOT-|Nokia|SonyEricsson|SIE-|Amoi|ZTE/.test(navigator.userAgent))) {
        if (window.location.href.indexOf("?mobile") < 0) {
            try {
                if (/iPhone|mac|iPod|iPad/i.test(navigator.userAgent)) {
                    return '0';
                } else {
                    return '1';
                }
            } catch (e) {}
        }
    } else if (u.indexOf('iPad') > -1) {
        return '0';
    } else {
        return '1';
    }
};
if (ismobile() == 0) {
    body_click_init();
} else {
    //console.log('is Android');
}

function server() {
    var mq = api.require('meiQia');

    var param = {
        appkey: "9b80941ab0220872cbbb29aa2882f820"
    };

    mq.initMeiQia(param, function (ret, err) {
        if (ret) {

            console.log(JSON.stringify(ret));
            mq.show();
        } else {


        }
    })

}

function open_meiQia() {
    var mq = api.require('meiQia');

    var param = {
        appkey: "9b80941ab0220872cbbb29aa2882f820"
    };

    mq.initMeiQia(param, function (ret, err) {
        if (ret) {
            mq.setTitleColor({
                color: "#4A4A4A"
            });
            mq.setTitleBarColor({
                color: "#ffffff" //设置标题栏背景颜色
            });
            mq.show();
        } else {


        }
    })

}

function focus() { //解决IOS端的input无法再次点击的问题

    if (api.systemType == 'ios') {
        var softInput = api.require('softInputMgr');
        softInput.toggleKeyboard();
    }
}

function toast(ret) {
    api.toast({
        msg: ret,
        duration: 2000,
        location: 'bottom'
    });
}

function openKeyup(id) {
    var softInput = api.require('softInputMgr');
    if (api.systemType == 'android') return;
    softInput.toggleKeyboard();
    // 将相应的输入框获取焦点
    document.getElementById(id).focus()
}

function check_login(windir, winname, pageobj) {
    var token = $api.getStorage('token');
    if (!token) {
        if (!pageobj) {
            pageobj = {}; //默认赋值
        }
        api.openWin({
            name: 'login',
            url: 'widget://html/login/index.html',
            bgColor: "#fff",
            animation: {
                type: "movein",
                subType: "from_bottom",
                duration: 300
            },
            pageParam: pageobj
        });
    } else {
        open_window(windir, winname)
    }
}

function resize() {
    var winHeight = $(window).height(); //获取当前页面高度
    $(window).resize(function () {
        var thisHeight = $(this).height();
        //  console.log(thisHeight)
        if (winHeight - thisHeight > 50) {
            $("footer").hide();
        } else {
            $("footer").show();

        }
    });
}


function is_login() { //判断是否登录
    var token = $api.getStorage('token');
    if (!token) {
        api.openWin({
            name: 'index',
            url: 'widget://html/login/index.html',
            bgColor: "#fff",
            animation: {
                type: "movein",
                subType: "from_bottom",
                duration: 300
            }
        });

        return;
    }
}

function openFrames(dirName, pageName, x, y, bounces, pageObj) {
    if (!pageObj) {
        pageObj = {};
    }
    api.openFrame({
        name: pageName,
        url: 'widget://html/' + dirName + '/' + pageName + '.html',
        rect: {
            x: x,
            y: y,
            w: 'auto',
            h: api.frameHeight
        },
        animation: {
            type: 'none',
            duration: 300
        },
        bounces: bounces,
        pageParam: pageObj
    });

}

function err_ajax(err) { //请求报错,不需要图片提示
    hideProgress()

    if (err.code == 500 || err.code == 404) {
        api.toast({
            msg: '请求失败,服务端异常!',
            duration: 2000,
            location: 'bottom'
        });

    } else {
        api.toast({
            msg: '加载失败,请检查网络连接',
            duration: 2000,
            location: 'bottom'
        });
    }
}
//弹出提示框
function err_toast(ret) {
    api.toast({
        msg: ret.msg,
        duration: 2000,
        location: 'bottom'
    });
}

function err_ajax_load(err) { //请求报错,需要图片提示
    hideProgress()

    if (err.code == 500 || err.code == 404) {
        vm.is_load = 2;
        api.toast({
            msg: '请求失败,服务端异常!',
            duration: 2000,
            location: 'bottom'
        });

    } else {
        vm.is_load = 3;
        api.toast({
            msg: '加载失败,请检查网络连接',
            duration: 2000,
            location: 'bottom'
        });
    }
}
//没填写的时候提示框
function nodata_toast(msg) {
    api.toast({
        msg: msg,
        duration: 2000,
        location: 'bottom'
    });
    return;
}

function timeEnd(clsName, text, countDown) { //验证码倒计时
    var validText = $api.text($api.dom(clsName));
    var timer = null;

    api.toast({
        msg: '验证码已发送',
        duration: 2000,
        location: 'bottom'
    });

    if (validText == text) {
        timer = setInterval(function () {
            if (countDown > 1) {
                countDown--;
                $api.text($api.dom(clsName), countDown + "s");
            } else {
                $api.text($api.dom(clsName), text);
                countDown = 60
                clearInterval(timer);
            }
        }, 1000)
    }
}

function is_photos(callBack) {

    //验证照相、相册、存储、通知权限(有需要可以继续增加,详看对应文档)https://docs.apicloud.com/Client-API/api#hasPermission
    var resultList = api.hasPermission({
        list: ['photos']
    });

    var _permission = new Array();
    for (var i = 0; i < resultList.length; i++) {
        if (resultList[i].granted == false) {
            _permission.push(resultList[i].name);
        }
    }

    if (!!_permission && JSON.stringify(_permission) != '[]') {
        api.requestPermission({
            list: _permission,
            code: 1
        }, function (ret, err) {
            for (var i = 0; i < ret.list.length; i++) {
                if (ret.list[i].granted == false) {
                    api.confirm({
                        title: '缺少权限,将导致部分功能无法使用',
                        msg: '请确认开启对应权限。',
                        buttons: ['确定开启', '取消']
                    }, function (ret, err) {
                        if (ret.buttonIndex == 1) {
                            is_photos(callBack);
                        } else {
                            return;
                        }

                    });
                } else {
                    return;
                }
            }
        });
    } else {
        return;
    }
}

function is_camera(callBack) {

    //验证照相、相册、存储、通知权限(有需要可以继续增加,详看对应文档)https://docs.apicloud.com/Client-API/api#hasPermission
    var resultList = api.hasPermission({
        list: ['camera']
    });

    var _permission = new Array();
    for (var i = 0; i < resultList.length; i++) {
        if (resultList[i].granted == false) {
            _permission.push(resultList[i].name);
        }
    }

    if (!!_permission && JSON.stringify(_permission) != '[]') {
        api.requestPermission({
            list: _permission,
            code: 1
        }, function (ret, err) {
            for (var i = 0; i < ret.list.length; i++) {
                if (ret.list[i].granted == false) {
                    api.confirm({
                        title: '缺少权限,将导致部分功能无法使用',
                        msg: '请确认开启对应权限。',
                        buttons: ['确定开启', '取消']
                    }, function (ret, err) {
                        if (ret.buttonIndex == 1) {
                            is_camera(callBack);
                        } else {
                            return;
                        }

                    });
                } else {
                    return;
                }
            }
        });
    } else {
        return;
    }
}

function is_lon_lat(callBack) {

    //定位权限(有需要可以继续增加,详看对应文档)https://docs.apicloud.com/Client-API/api#hasPermission
    var resultList = api.hasPermission({
        list: ['location']
    });

    var _permission = new Array();
    for (var i = 0; i < resultList.length; i++) {
        if (resultList[i].granted == false) {
            _permission.push(resultList[i].name);
        }
    }

    if (!!_permission && JSON.stringify(_permission) != '[]') {
        api.requestPermission({
            list: _permission,
            code: 1
        }, function (ret, err) {
            for (var i = 0; i < ret.list.length; i++) {
                if (ret.list[i].granted == false) {
                    api.confirm({
                        title: '缺少权限,将导致部分功能无法使用',
                        msg: '请确认开启对应权限。',
                        buttons: ['确定开启', '取消']
                    }, function (ret, err) {
                        if (ret.buttonIndex == 1) {
                            is_lon_lat(callBack);
                        } else {
                            return;
                        }

                    });
                } else {
                    return;
                }
            }
        });
    } else {
        return;
    }
}



// ajax封装  不需要传参的时候param可以传个0或者null代替
function ajaxFun(url, methods, token, param, callback) {
    if (!param) {
        param = {};
    }
    api.ajax({
        url: url,
        method: methods,
        timeout: 30,
        dataType: 'json',
        returnAll: false,
        headers: {
            token: token
        },
        data: {
            values: param
        }

    }, callback);

}
//打开UILoading模块加载框
var uiloading, eLoadId;

function showLoading() {
    uiloading = api.require('UILoading');
    uiloading.flower({
        center: {
            marginTop: api.winWidth / 2,
            marginLeft: api.winHeight / 2
        },
        size: 30,
        mask: 'rgba(20,0,0,.2)',
        fixed: true
    }, function (ret) {
        eLoadId = ret.id;
    });
}
// 关闭加载模态框
function hideLoading() {
    if (!uiloading) {
        return
    }
    uiloading.closeFlower({
        id: eLoadId
    });
}

function reshuf_info(callback) {
    api.setRefreshHeaderInfo({
        visible: true,
        loadingImg: 'widget://image/refresh.png',
        bgColor: '#f6f6f6',
        textColor: '#999',
        textDown: '下拉刷新...',
        textUp: '松开刷新...',
        showTime: true
    }, callback);
    //   api.setCustomRefreshHeaderInfo({
    //     bgColor: '#eee',
    //     images: [
    //         'widget://res/refresh/1.png',
    //         'widget://res/refresh/2.png',
    //         'widget://res/refresh/3.png',
    //         'widget://res/refresh/4.png',
    //         'widget://res/refresh/5.png',
    //         'widget://res/refresh/6.png',
    //         'widget://res/refresh/7.png',
    //         'widget://res/refresh/8.png',
    //     ],
    //     tips: {
    //         pull: '下拉刷新',
    //         threshold: '松开立即刷新',
    //         load: '正在刷新'
    //     },
    //     animationRate:0.2
    // },callback);
}

function up_loading(callback) {
    //上啦加载
    api.addEventListener({
        name: 'scrolltobottom',
        extra: {
            threshold: 300
        }
    }, callback);
}

//图片缓存
function imageCach(classNames, thumbnail) {
    console.log(JSON.stringify(classNames));
    var remoteEles = document.querySelectorAll('.' + classNames);
    console.log(JSON.stringify(remoteEles));
    for (var i = 0; i < remoteEles.length; i++) {
        var ele = remoteEles[i];
        var remoteUrl = ele.getAttribute('data-remote');
        (function (ele) {

            api.imageCache({
                url: remoteUrl,
                policy: 'cache_else_network',
                thumbnail: thumbnail || false
            }, function (ret, err) {
                console.log(JSON.stringify(ret));
                if (ret && ret.status) {
                    var url = ret.url;
                    ele.setAttribute('src', url);
                } else {
                    console.log($api.jsonToStr(err));
                }
            });

        }(ele))
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值