Vue.config.devtools = "development"; var MyPlugin = {}; /** * 错误码处理定义 */ MyPlugin["filters"] = { //异常 "9999" : function(result) { layer.msg(result.msg, {icon: 0,time:2000}); }, //配置统一未登录错误码处理 "-1" : function(result) { //未登录,跳转登陆页 top.window.location.href = fsConfig["global"]["loginUrl"]; } }; /** * 项目中需要调用到的常量、变量这里配置 */ MyPlugin["global"] = { "servletUrl":"", //使用网关请求地址,本地工程可以不填 "port":18201, "token": sessionStorage.getItem("token"),//后台的token "appId": sessionStorage.getItem("appId"), "result" : { //响应结果配置 "statusName": "code", //数据状态的字段名称,默认:errorNo "msgName": "msg", //状态信息的字段名称,默认:errorInfo "successNo" : "0000", //执行成功错误码统一配置 "dataName" : "data" //非表格数据的字段名称,默认:results.data }, "page" : { //分页配置 "request": {//请求配置 "pageName": "current", //页码的参数名称,默认:pageNum "limitName": "size" //每页数据量的参数名,默认:pageSize }, "response": {//响应配置 "countName": "data.total", //数据总数的字段名称,默认:results.data.total "dataNamePage": "data.records" //分页数据列表的字段名称,默认:results.data.list }, "limit":10,//每页分页数量。默认20 "limits":[10,20,30,50,100]//每页数据选择项,默认[10,20,30,50,100] } }; MyPlugin.install = function (Vue, options) { // 1. 添加全局方法或属性 Vue.myGlobalMethod = function () { // 逻辑... } //非空判断 Vue.isEmpty=function(value) { if (value === null || value == undefined || value === '') { return true; } return false; } //获取对象指 Vue.result=function(object, path, defaultValue) { var value = ""; if(!$.isEmpty(object) && $.isObject(object) && !Vue.isEmpty(path)){ var paths = path.split('.'); var length = paths.length; $.each(paths,function(i,v){ object = object[v]; if(length-1 == i){ value = object; } if(!$.isObject(object)){ return false; } }) } if(Vue.isEmpty(value) && !Vue.isEmpty(defaultValue)){ value = defaultValue; } return value; } Vue.getQueryString= function (name) { var reg = new RegExp('(^|&)' + name + '=([^&]*)(&|$)', 'i'); var r = window.location.search.substr(1).match(reg); if (r != null) { return unescape(r[2]); } return null; } Vue.formatDate=function(date,fmt){ if(arguments.length<2){ fmt = "yyyy-MM-dd HH:mm:ss"; } var _this = date; var o = { "M+" : _this.getMonth()+1, //月份 "d+" : _this.getDate(), //日 "h+" : _this.getHours()%12 == 0 ? 12 : _this.getHours()%12, //小时 "H+" : _this.getHours(), //小时 "m+" : _this.getMinutes(), //分 "s+" : _this.getSeconds(), //秒 "q+" : Math.floor((_this.getMonth()+3)/3), //季度 "S" : _this.getMilliseconds() //毫秒 }; if(/(y+)/.test(fmt)){ fmt=fmt.replace(RegExp.$1, (_this.getFullYear()+"").substr(4 - RegExp.$1.length)); } for(var k in o){ if(new RegExp("("+ k +")").test(fmt)){ fmt = fmt.replace(RegExp.$1, (RegExp.$1.length==1) ? (o[k]) : (("00"+ o[k]).substr((""+ o[k]).length))); } } return fmt; } // 2. 添加全局资源 Vue.directive('my-directive', { // bind (el, binding, vnode, oldVnode) { // 逻辑... // } }) // 3. 注入组件 Vue.mixin({ created: function () { // 逻辑... } }) Vue.prototype.getQueryString = Vue.getQueryString; Vue.prototype.formatDate = Vue.formatDate; // 4. 添加事例方法 Vue.prototype.invoke = function(url,param,callBackFunc,method,async){ // 逻辑... if(!Vue.isEmpty(url)){ url = Vue.result(MyPlugin,"global.servletUrl")+ url; } if(Vue.isEmpty(async)){ async = true; } if(Vue.isEmpty(method)){ method = "post"; } var token = Vue.result(aliConfig,"global.token"); var appId = Vue.result(aliConfig,"global.appId"); $.ajaxSetup({ beforeSend:function(request, settings) { if (token) { request.setRequestHeader("Authorization", token); } if (appId) { request.setRequestHeader("appId", appId); } } }); $.ajax({ url: url, type: method, async: async, timeout: 10000, data: param, dataType : "json", // contentType:'application/json;charset=utf-8', success: function(result){ if(result[statusName] != successNo){ var filters = MyPlugin["filters"]; if(!Vue.isEmpty(filters)){ var otherFunction = filters[result[statusName]]; if($.isFunction(otherFunction)){ otherFunction(result); return; } } } callBackFunc(result); }, error : function (XMLHttpRequest, textStatus, errorThrown) { var status = XMLHttpRequest.status; if(status==404){ fsCommon.errorMsg("请求地址出错!"); }else if(status==302){ fsCommon.errorMsg('连接网页出错!'); }else if(textStatus=="timeout"){ fsCommon.errorMsg("请求超时!"); }else{ fsCommon.errorMsg('请求异常!'); } }, complete : function(XMLHttpRequest, textStatus) { //关闭加载层 } }); }; } // 调用 `MyPlugin.install(Vue)` Vue.use(MyPlugin); // var appOwner = ${owner}; // var token =gettoken(${mode}); var owner = "1581564523"; var token ="preview"; $.ajaxSetup({ beforeSend:function(request, settings) { request.setRequestHeader("Authorization", token); request.setRequestHeader("owner", owner); } });