diff --git a/main.js b/main.js
new file mode 100644
index 0000000..1f1a6bb
--- /dev/null
+++ b/main.js
@@ -0,0 +1,114 @@
+import Vue from 'vue'
+import App from './App'
+
+Vue.config.productionTip = false
+
+App.mpType = 'app'
+
+
+// 引入全局uView
+import uView from 'uview-ui'
+Vue.use(uView)
+
+// 此处为演示vuex使用，非uView的功能部分
+import store from '@/store'
+
+// 引入uView提供的对vuex的简写法文件
+let vuexStore = require('@/store/$u.mixin.js')
+Vue.mixin(vuexStore)
+
+// #ifndef H5
+var value = ""
+uni.getScreenBrightness({
+	success: function(res) {
+		value = res.value
+	}
+});
+Vue.prototype.changeTabbar = function(e) {
+	// #ifdef APP-PLUS
+	uni.removeStorageSync("stopShowTwice")
+	// #endif
+	if (e == 2) {
+		uni.setScreenBrightness({
+			value: 1,
+			success: function() {}
+		}); 
+	} else {
+		uni.setScreenBrightness({
+			value: value,
+			success: function() {}
+		});
+	}
+}
+// #endif
+
+// #ifdef H5
+Vue.prototype.changeTabbar = function(e) {
+	// console.log(e)
+}
+// #endif
+
+//全局页面跳转
+Vue.prototype.toPath = function(e) {
+	let token = uni.getStorageSync("token")
+	if (!token) {
+		uni.showModal({
+			title: "提示",
+			content: "您还未登录，无法使用app功能",
+			cancelText: "再等等",
+			confirmText: "去登陆",
+			success(res) {
+				if (res.confirm) {
+					uni.reLaunch({
+						url: '/pages/sub_basic/login/index'
+					})
+				}
+			}
+		})
+		return false
+	}
+	if (!e) {
+		uni.showToast({
+			icon: "none",
+			title: "功能暂未开通",
+			duration: 1500,
+		})
+		return false
+	}
+	if (e == "/pages/sub_tabbar/active" || e == "/pages/sub_tabbar/index") {
+		uni.switchTab({
+			url: e
+		})
+		return false
+	}
+
+	uni.navigateTo({
+		url: e
+	})
+}
+Vue.prototype.toUrl = function(e) {
+	if (e == "/pages/sub_tabbar/active" || e == "/pages/sub_tabbar/index") {
+		uni.switchTab({
+			url: e
+		})
+		return false
+	}
+
+	uni.navigateTo({
+		url: e
+	})
+}
+const app = new Vue({
+	store,
+	...App
+})
+// http拦截器，此为需要加入的内容，如果不是写在common目录，请自行修改引入路径
+import httpInterceptor from '@/static/js/http.interceptor.js'
+// 这里需要写在最后，是为了等Vue创建对象完成，引入"app"对象(也即页面的"this"实例)
+Vue.use(httpInterceptor, app)
+
+//http接口API集中管理引入部分
+// import httpApi from '@/static/js/http.api.js'
+// Vue.use(httpApi, app)
+
+app.$mount()
