chenhaozhe
7 天以前 c1077a5ff53bc83bbf487c30bc93061c8cd93ca8
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
// 导入i18n文件
import en from "./locale/en.json"
import ZhCN from "./locale/zh-Hans.json"
import {
    addMissingKeyToMap
} from "@/utils/i18n.js"
 
// 加载本地语言包
const messages = {
    "zh-Hans": ZhCN,
    en,
}
 
let i18nConfig = {
    locale: uni.getLocale(), // 获取已设置的语言
    messages,
    silentTranslationWarn: true,
 
    // missing: function(locale, key, vm, values){
    //   // 页面中含有语言包中不存在的字段,需同步到数据库中
    //     console.log("[i18n]: 页面中key为: ", key ,"的字段在翻译文件中不存在,同步到数据库...")
    // 
    //   // 为降低同步的难度,APP中 对翻译模块的key 不采用数组的写法,统一使用 模块名.字段名的写法
    //   let [HMouldName, HFieldKey] = key.split('.')
    //   
    //   
    // }
}
 
// uniapp 全局请求拦截器
uni.addInterceptor('request', {
    invoke(args) {
        // 请求头带上 token
        let token = uni.getStorageSync('Token')
        if (token) {
            // 先初始化,防止 undefined 报错
            args.header = args.header || {}
            args.header.Authorization = `Bearer ${token}`
        }
    },
    success(res) {
        // 自动续期 token
        if (res.data && res.data.token) {
            uni.setStorageSync('Token', res.data.token)
        }
        
 
        // 401 自动跳登录
        if (res.statusCode === 401) {
            uni.removeStorageSync('Token')
            uni.showModal({
                title: '温馨提示',
                content: res.data.Message,
                showCancel:false,
                success: () => {
                    uni.reLaunch({
                        url: '/pages/index/login'
                    })
                }
            })
        }
         // 403 返回上一个页面
        if (res.statusCode === 403) {
            uni.showModal({
                title: '温馨提示',
                content: res.data.Message,
                showCancel:false,
                success: () => {
                    uni.navigateBack()
                }
            })
        }
    }
})
 
import App from './App'
import Printer from './plugins/printer'
Vue.use(Printer);
// 生产环境
// Vue.prototype.serverUrl = "https://qqyapi.xinlinsoft.cn/qqy-api";
// 开发环境
// Vue.prototype.serverUrl = "http://47.96.97.237/API";
 
 
//不显示console.log
// if (uni.getSystemInfoSync().platform !== "devtools") {
//     console.log = () => {}
// }
 
 
 
// #ifndef VUE3
import Vue from 'vue'
import VueI18n from 'vue-i18n'
Vue.use(VueI18n)
const i18n = new VueI18n(i18nConfig)
// missing回调无法满足 加载线上包 后的检验功能,需重写$t函数
const originalT = Vue.prototype.$t
Vue.prototype.$t = function(key, ...args) {
    // 调用原始 $t 执行翻译
    const translated = originalT.call(this, key, args);
 
 
    if (translated == key) {
        // 翻译后的文本与传入的key相同,则表示翻译文本缺失 记录缺失的翻译文本
        let [moduleName, fieldCode] = key.split(".")
        addMissingKeyToMap(moduleName, fieldCode)
    }
 
    return translated
}
Vue.config.productionTip = false
App.mpType = 'app'
const app = new Vue({
    i18n,
    ...App
})
app.$mount()
export default i18n
// #endif
 
// #ifdef VUE3
import {
    createSSRApp
} from 'vue'
import {
    createI18n
} from 'vue-i18n' // v9.x
const i18n = createI18n(i18nConfig)
export function createApp() {
    const app = createSSRApp(App)
    app.use(i18n)
    return {
        app
    }
}
export default i18n
// #endif
// main.js uni.showToast 实现全局拦截设置默认提示时间为3.5秒
const originalShowToast = uni.showToast;
uni.showToast = (options) => {
    originalShowToast({
        duration: options.duration || 3500, // 默认2秒
        icon: options.icon || 'none',
        title: options.title || 'none',
        ...options
    });
};