UNPKG

@flyriselink/pai-sp-mobile

Version:

pai-sp-mobile 组件库

146 lines (127 loc) 4.86 kB
// 看到此报错,是因为没有配置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 }