@flyriselink/pai-sp-mobile
Version:
pai-sp-mobile 组件库
146 lines (127 loc) • 4.86 kB
JavaScript
// 看到此报错,是因为没有配置vue.config.js的【transpileDependencies】,详见:https://www.uviewui.com/components/npmSetting.html#_5-cli模式额外配置
const pleaseSetTranspileDependencies = {}, babelTest = pleaseSetTranspileDependencies?.test
// sp
import { resetConfigFunc } from './libs/request/reset-api.js'
//
// 引入全局mixin
import mixin from './libs/mixin/mixin.js'
// 小程序特有的mixin
import mpMixin from './libs/mixin/mpMixin.js'
// 全局挂载引入http相关请求拦截插件
import Request from './libs/luch-request'
// 路由封装
import route from './libs/util/route.js'
// 颜色渐变相关,colorGradient-颜色渐变,hexToRgb-十六进制颜色转rgb颜色,rgbToHex-rgb转十六进制
import colorGradient from './libs/function/colorGradient.js'
// 规则检验
import test from './libs/function/test.js'
// 防抖方法
import debounce from './libs/function/debounce.js'
// 节流方法
import throttle from './libs/function/throttle.js'
// 公共文件写入的方法
import index from './libs/function/index.js'
// date format
import dateFunction from './libs/function/date.js'
// 配置信息
import config from './libs/config/config.js'
// props配置信息
import props from './libs/config/props.js'
// 各个需要fixed的地方的z-index配置文件
import zIndex from './libs/config/zIndex.js'
// 关于颜色的配置,特殊场景使用
import color from './libs/config/color.js'
// 平台
import platform from './libs/function/platform'
const $spui = {
route,
date: index.timeFormat, // 另名date
time: dateFunction,
colorGradient: colorGradient.colorGradient,
hexToRgb: colorGradient.hexToRgb,
rgbToHex: colorGradient.rgbToHex,
colorToRgba: colorGradient.colorToRgba,
test,
type: ['primary', 'success', 'error', 'warning', 'info'],
http: new Request(),
config, // uView配置信息相关,比如版本号
zIndex,
debounce,
throttle,
mixin,
mpMixin,
compMixin: {},
props,
...index,
color,
platform
}
// $u挂载到uni对象上
uni.$spui = $spui
// spui custom start
import Prototypes from './prototypes'
for (const key in Prototypes) {
if (Object.hasOwnProperty.call(Prototypes, key)) {
const element = Prototypes[key];
$spui[key] = element
}
}
const Req = new Request()
// spui custom end
const install = (Vue, opts) => {
// spui custom start
const baseURL = opts.baseURL || opts.baseUrl || undefined
$spui.baseURL = baseURL
$spui.token = opts.token || undefined
$spui.tokenKey = opts.tokenKey || undefined
Req.config = {
...Req.config,
baseURL: baseURL,
showLoading: opts.showLoading || false
}
Req.interceptors.request.use(async (config, ...args) => {
let token = $spui.tokenKey ? uni.getStorageSync($spui.tokenKey) : opts.token()
config.header.Authorization = token
return resetConfigFunc(config, opts)
})
Req.interceptors.response.use(async (res) => {
let result = res.data
if (result.code == 200) {
return result;
} else if (result.code == 401) {
// 假设401为token失效,这里跳转登录
// uni.$spui.toast('验证失败,请重新登录');
console.log('>>>> pai-sp-mobile:验证失败,请重新登录');
// return false;
return Promise.reject(result)
} else {
// 如果返回false,则会调用Promise的reject回调,
// 并将进入this.$spui.post(url).then().catch(res=>{})的catch回调中,res为服务端的返回值
return Promise.reject(result)
}
})
$spui.http = Req
$spui.request = Req
// spui custom end
let comp = require('./libs/mixin/compMixin.js')
$spui.compMixin = comp.default
// 时间格式化,同时两个名称,date和timeFormat
Vue.filter('timeFormat', (timestamp, format) => uni.$spui.timeFormat(timestamp, format))
Vue.filter('date', (timestamp, format) => uni.$spui.timeFormat(timestamp, format))
// 将多久以前的方法,注入到全局过滤器
Vue.filter('timeFrom', (timestamp, format) => uni.$spui.timeFrom(timestamp, format))
// 数字
Vue.filter('number', (num, b, c, d) => uni.$spui.number(num, b, c, d))
// 同时挂载到uni和Vue.prototype中
// #ifndef APP-NVUE
// 只有vue,挂载到Vue.prototype才有意义,因为nvue中全局Vue.prototype和Vue.mixin是无效的
Vue.prototype.$spui = $spui
const vueMixin = { ...mixin }
vueMixin.props = {}
Vue.mixin(vueMixin)
// #endif
uni.$spui = $spui
}
export default {
install
}