吉安感知网项目-前端
罗广辉
2026-01-23 5f6ef7ddcc1ee8b2fe54e869e2eb446a1a895b82
feat: zkxt专用axios
4 files modified
66 ■■■■ changed files
applications/task-work-order/src/App.vue 20 ●●●● patch | view | raw | blame | history
applications/task-work-order/src/api/zkxt/index.js 11 ●●●●● patch | view | raw | blame | history
applications/task-work-order/src/axiosXT.js 30 ●●●● patch | view | raw | blame | history
applications/task-work-order/src/store/modules/user.js 5 ●●●●● patch | view | raw | blame | history
applications/task-work-order/src/App.vue
@@ -1,27 +1,27 @@
<template>
  <router-view />
    <router-view />
</template>
<script setup>
import { loginWithMiniProgramApi } from '@/api/zkxt'
import { useStore } from 'vuex'
const store = useStore()
function getToken() {
    loginWithMiniProgramApi({username: 'admin'}).then(res => {
        console.log(res)
function getXTToken() {
    loginWithMiniProgramApi({ username: 'admin' }).then(res => {
        store.commit('setXtToken', res.data.data.access_token)
    })
}
getToken()
setInterval(() => {
    getToken()
}, 600000)
getXTToken()
setInterval(getXTToken, 600000)
</script>
<style>
html,
body,
#app {
  width: 100%;
  height: 100%;
    width: 100%;
    height: 100%;
}
</style>
applications/task-work-order/src/api/zkxt/index.js
@@ -1,9 +1,20 @@
import request from '@/axiosXT'
// 免密登陆
export const loginWithMiniProgramApi = (data) => {
    return request({
        url: `/auth/loginWithMiniProgram`,
        method: 'post',
        data,
        authorization: false,
    })
}
// 字典
export const dictListApi = (data) => {
    return request({
        url: `/system/dict/type/list`,
        method: 'post',
        data:{"size":100,"current":1},
    })
}
applications/task-work-order/src/axiosXT.js
@@ -1,36 +1,24 @@
import axios from 'axios'
import store from '@/store/'
import { serialize } from '@/utils/util'
import { getToken, removeToken, removeRefreshToken } from '@/utils/auth'
import { isURL, validatenull } from '@/utils/validate'
import { ElMessage } from 'element-plus'
import website from '@/config/website'
import { Base64 } from 'js-base64'
import { baseUrl } from '@/config/env'
import crypto from '@/utils/crypto'
// 全局未授权错误提示状态,只提示一次
const { VITE_APP_API_XT } = import.meta.env
// 创建作用域的 axios 实例
const serviceXT = axios.create({
    // 超时时间设置为10分钟,部分接口上传比较慢,如固件上传
    timeout: 600000,
    baseURL: VITE_APP_API_XT,
    //返回其他状态码
    validateStatus: function (status) {
        return status >= 200 && status <= 500 // 默认的
    },
    //跨域请求,允许保存cookie
    withCredentials: true,
    withCredentials: false,
})
//http request拦截
serviceXT.interceptors.request.use(
    config => {
        //headers判断是否需要
        const authorization = config.authorization === false
        if (!authorization) {
            config.headers['Authorization'] = `Basic ${Base64.encode(`${website.clientId}:${website.clientSecret}`)}`
        const xtToken = store.state.user.xtToken
        if (xtToken && !authorization) {
            config.headers['Authorization'] = xtToken
        }
        const meta = config.meta || {}
@@ -51,17 +39,11 @@
//http response拦截
serviceXT.interceptors.response.use(
    res => {
        const status = res.data.error_code || res.data.code || res.status
        const statusWhiteList = website.statusWhiteList || []
        const status = res?.data?.code || res?.data?.error_code || res?.status
        const message = res?.data?.msg || res?.data?.message || '系统错误'
        //如果在白名单里则自行catch逻辑处理
        if (statusWhiteList.includes(status)) return Promise.reject(res)
        // 如果请求为非200默认统一处理
        if (status !== 200 && status !== 0) {
            ElMessage({
                message: message,
                type: 'error',
            })
            ElMessage({ message: message, type: 'error', })
            return Promise.reject(new Error(message))
        }
        return res
applications/task-work-order/src/store/modules/user.js
@@ -33,6 +33,7 @@
        token: getStore({ name: 'token' }) || '',
        refreshToken: getStore({ name: 'refreshToken' }) || '',
        parentDeptInfo: getStore({ name: 'parentDeptInfo' }) || '',
        xtToken: getStore({ name: 'xtToken' }) || '',
    },
    actions: {
        //根据用户名登录
@@ -297,6 +298,10 @@
        },
    },
    mutations: {
        setXtToken:(state,token) =>{
            state.xtToken = token
            setStore({ name: 'xtToken', content: token })
        },
        SET_PARENT_DEPT_INFO(state, deptId) {
            getParentDeptInfo({ deptId: deptId }).then(res => {
                const data = res.data.data