mobilemode.api_wev8.js 5.94 KB
define(["mUtil", "mApi/basic", "mApi/custom"], function (mUtil, apiBasic, apiCustom) {
    var MOD = {
        popup: "mApi/popup",
        form: "mApi/form",
        jump: "mApi/jump",
        sql: "mApi/sql",
        refresh: "mApi/refresh",
        qrcode: "mApi/qrcode",
        lbs: "mApi/lbs",
        lbs4amap: "mApi/lbs4amap",
        msgpush: "mApi/msgpush",
        other: "mApi/other",
        mService: "mService"
    };

    function factory(modName, methodName) {
        var beforeArgs = [].slice.call(arguments); // 方法预设固有参数 如openLBSWin方法
        
        beforeArgs = beforeArgs.slice(2);

        return function () {
            var deferred = $.Deferred();
            var args = [].slice.call(arguments); // 调用时的传参

            require([modName], function (mod) {
                $.when(mod[methodName].apply(mod, [].concat(beforeArgs, args)))
                    .done(function() {
                        deferred.resolve.apply(null, arguments);
                    })
            });
            return deferred;
        };
    }

    var Mobile_NS = {
        /* api.basic */
        ajax: apiBasic.ajax,
        openUrl: apiBasic.openUrl,
        getParameter: apiBasic.getParameter,
        getCurrUser: apiBasic.getCurrUser,
        getCurrentPageId: apiBasic.getCurrentPageId,
        backPage: apiBasic.backPage,
        eval: apiBasic.eval,
        login: apiBasic.login,
        callApi: apiBasic.callApi,
        getWechatUserInfo: apiBasic.getWechatUserInfo,
        getGlobalVar: apiBasic.getGlobalVar,

        /* api.popup */
        msg: factory(MOD.popup, "msg"),
        alert: factory(MOD.popup, "alert"),
        Alert: factory(MOD.popup, "Alert"),
        confirm: factory(MOD.popup, "confirm"),
        Confirm: factory(MOD.popup, "Confirm"),
        prompt: factory(MOD.popup, "prompt"),
        showLoader: factory(MOD.popup, "showLoader"),
        hideLoader: factory(MOD.popup, "hideLoader"),
        footerMenu: factory(MOD.popup, "footerMenu"),
        dropDownMenu: factory(MOD.popup, "dropDownMenu"),
        /* api.form */
        getFormField: function (n, c, i) {
          var f = require("mApi/form");
          return f.getField(n, c, i);
        },
        formSubmit: factory(MOD.form, "submit"),
        formDelete: factory(MOD.form, "deleteData"),
        datePicker: factory(MOD.form, "wrapToDatetime"),
        toggle: factory(MOD.form, "wrapToToggle"),

        /* api.jump */
        backToHomepage: factory(MOD.jump, "backToHomepage"),
        createTopfloorPage: factory(MOD.jump, "createTopfloorPage"),
        closeTopfloorPage: factory(MOD.jump, "closeTopfloorPage"),
        openUrlLeftReplace: factory(MOD.jump, "openUrlLeftReplace"),
        openUrlRightReplace: factory(MOD.jump, "openUrlRightReplace"),
        openWebView: factory(MOD.jump, "openWebView"),

        /* api.sql */
        SQL: factory(MOD.sql, "run"),

        /* api.refresh */
        refresh: factory(MOD.refresh, "refresh"),
        refreshList: factory(MOD.refresh, "refreshList"),
        refreshPrevPageList: factory(MOD.refresh, "refreshPrevPageList"),
        refreshSpecifiedList: factory(MOD.refresh, "refreshSpecifiedList"),
        triggerRefresh: factory(MOD.refresh, "triggerRefresh"),
        refreshCalendar: factory(MOD.refresh, "refreshCalendar"),
        triggerLazyLoad: factory(MOD.refresh, "triggerLazyLoad"),
        refreshRemind: factory(MOD.refresh, "refreshRemind"),

        /* api.qrcode */
        scanQRCode: factory(MOD.qrcode, "scan"),

        /* api.lbs */
        getCurrentPosition: factory(MOD.lbs, "getCurrentPosition"),
        getCurrPosition: factory(MOD.lbs4amap, "getCurrPosition"),

        /* api.msgpush */
        sendMessage: factory(MOD.msgpush, "sendMessage"),
        sendEmobileMsg: factory(MOD.msgpush, "sendEmobileMsg"),
        sendWechatMsg: factory(MOD.msgpush, "sendWechatMsg"),

        /* api.other */
        callMobile: factory(MOD.other, "callMobile"),
        addFormmodeDataShare: factory(MOD.other, "addFormmodeDataShare"),
        encrypt: factory(MOD.other, "encrypt"),
        progressBar: factory(MOD.other, "progressBar"),
        circleProgressBar: factory(MOD.other, "circleProgressBar"),
        initWeather: factory(MOD.other, "initWeather"),
        getLayoutUrl: factory(MOD.other, "getLayoutUrl"),
        toggleListData: factory(MOD.other, "toggleListData"),
        getListCheckedData: factory(MOD.other, "getListCheckedData"),
        switchListSelectable: factory(MOD.other, "switchListSelectable"),
        previewImg:factory(MOD.other, "previewImg"),
        addEventListener: factory(MOD.other, "addEventListener"),
        doPageExpand: factory(MOD.other, "doPageExpand"),
        getDataSetDetail: function (t, m, p) {
        	var o = require("mApi/other");
        	return o.getDataSetDetail(t, m, p);            
        },
        
        /* api.date */
        getCurrDate : mUtil.getCurrDate,
        getCurrTime: mUtil.getCurrTime,
        
        /* mservice */
        openLBSWin: factory(MOD.mService, "show", "position"),
        openLBSPage: factory(MOD.mService, "show", "position4amap"),
        openMap: function (coordinate, type) {
            require(["mService"], function (mService) {
                mService.show("map", { "coordinate": coordinate, "type": type });
            });
        }
    };
   
   
    window.Mobile_NS = Mobile_NS;
    window.$u = Mobile_NS.openUrl;
    window.$p = Mobile_NS.getParameter;
    window.$u_l_replace = Mobile_NS.openUrlLeftReplace;
    window.$u_r_replace = Mobile_NS.openUrlRightReplace;
    window.$f = Mobile_NS.getFormField;
    window.$d = Mobile_NS.getDataSetDetail;
 

    Object.keys(apiCustom).forEach(function (key) {
        if (Mobile_NS.hasOwnProperty(key)) return;

        Mobile_NS[key] = apiCustom[key];
    });

    window.$load = function (fn) {
        var pageid = mUtil.getCurrentPageId();

        require(["mApi/event"], function (Evt) {
            new Evt(pageid).on("load", fn);;
        });
    };

    return Mobile_NS;
});