import Vue from 'vue'
import App from './App'

//引入 vuex 和 ajax 并将其关联
import store from './store.js'  //引入 vuex 
import ajax from './common/js/ajax.js'  //引入 ajax 方法
Vue.prototype.$store = store  //挂载 vuex
Vue.prototype.$ajax = ajax(store)  //挂在 ajax 执行后的 ajax 对象
//在Vue 原型上挂载的一些方法
Vue.prototype.$verified = function() { //判断用户是否已经验证的全局方法
	return store.state.userServerInfo.token ? true : false
}
Vue.prototype.$scrollViewHeight = function (className) {  //设置页面内 scroll view 的高度
	this.$nextTick(() => {  //在 mounted 以后获取到 className 的高度，赋给 scroll view
			const query = uni.createSelectorQuery().in(this)
			query.select(className).boundingClientRect()
			query.exec(res => this.scrollViewHeight = res[0].height)
	})
}
Vue.prototype.$hideLoading = function() {  //异步操作结束，停止 loading
	this.$nextTick(() => {
		uni.hideLoading()
	})
}

Vue.prototype.$drawHonour = function(ctx, infoArr) {  //绘制荣誉证书
	ctx.setTextAlign('center')
	ctx.setFontSize(infoArr[0][0])
	ctx.fillText(infoArr[0][1], infoArr[0][2], infoArr[0][3])
	ctx.setFontSize(infoArr[1][0])
	ctx.fillText(infoArr[1][1], infoArr[1][2], infoArr[1][3])
	ctx.setFontSize(infoArr[2][0])
	ctx.fillText(infoArr[2][1], infoArr[2][2], infoArr[2][3])
	ctx.setFontSize(infoArr[3][0])
	ctx.fillText(infoArr[3][1], infoArr[3][2], infoArr[3][3])
	ctx.setFontSize(infoArr[4][0])
	ctx.fillText(infoArr[4][1], infoArr[4][2], infoArr[4][3])
	ctx.setFontSize(infoArr[5][0])
	ctx.fillText(infoArr[5][1], infoArr[5][2], infoArr[5][3])
	ctx.draw()
}

//自定义的一些全局组件
import nav from './components/custom-nav.vue'  //自定义头部导航栏
import toast from './components/custom-toast.vue'  //自定义消息提示
import counter from './components/custom-counter.vue'  //自定义计数器
import reachBot from './components/custom-reach-bottom.vue'  //自定义滚动到底部提示
Vue.component('custom-nav', nav)  //注册自定义头部导航栏
Vue.component('custom-toast', toast)  //注册自定义消息提示
Vue.component('custom-counter', counter)  //注册自定义计数器
Vue.component('custom-reach-bottom', reachBot)  //注册自定义滚动到底部提示
//将一些常用的方法定义在过滤器上
import * as filters from './common/js/filters.js'
Object.keys(filters).forEach(e => {
	Vue.filter(e, filters[e])
})
Vue.config.productionTip = false
;( new Vue( { ...App } ) ).$mount()
