From c9ea7ba8986766042663e0d1d20f598ef0773ff0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?lemon=E6=A9=AA?= <17633066053@163.com> Date: Thu, 10 Jun 2021 18:31:54 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E9=83=A8=E5=88=86=E6=A0=B7?= =?UTF-8?q?=E5=BC=8F=E9=97=AE=E9=A2=98=EF=BC=8C=E6=96=B0=E5=A2=9E=E9=83=A8?= =?UTF-8?q?=E5=88=86=E5=8A=9F=E8=83=BD=EF=BC=8C=E8=A7=A3=E5=86=B3=E5=8F=91?= =?UTF-8?q?=E7=8E=B0=E7=9A=84bug=EF=BC=8C=E6=9A=82=E6=9C=AA=E5=AE=8C?= =?UTF-8?q?=E5=85=A8=E6=B5=8B=E8=AF=95=E9=80=9A=E8=BF=87=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- buyer/src/plugins/request.js | 281 +++--- .../lili-floor-renovation/wap/navbar.vue | 32 +- .../wap/template/tpl.scss | 4 +- .../wap/template/tpl_flex_five.vue | 19 +- .../wap/template/tpl_flex_four.vue | 11 +- .../wap/template/tpl_flex_three.vue | 6 +- .../wap/template/tpl_left_one_right_two.vue | 4 +- .../wap/template/tpl_left_two_right_one.vue | 14 +- manager/src/views/login.vue | 50 +- manager/src/views/main-components/header.vue | 5 +- .../src/views/my-components/lili/editor.vue | 63 +- .../views/page/article-manage/articleList.vue | 30 +- .../src/views/sys/app-version/appVersion.vue | 1 + seller/src/api/order.js | 17 +- seller/src/assets/download.png | Bin 0 -> 2620 bytes seller/src/assets/goodsType1.png | Bin 0 -> 2900 bytes seller/src/assets/goodsType2.png | Bin 0 -> 754 bytes seller/src/assets/goodsTypeTpl.png | Bin 0 -> 3697 bytes seller/src/assets/logo.png | Bin 239866 -> 398960 bytes seller/src/assets/success.png | Bin 0 -> 4471 bytes seller/src/assets/upload.png | Bin 0 -> 2506 bytes seller/src/config/index.js | 8 +- seller/src/router/router.js | 7 + .../views/goods/goods-seller/addGoods.scss | 125 ++- .../goods/goods-seller/goodsOperation.vue | 809 +++++++----------- seller/src/views/login.vue | 138 ++- seller/src/views/main-components/header.vue | 6 +- .../views/order/order/exportOrderDeliver.vue | 122 +++ seller/src/views/order/order/orderDetail.vue | 2 +- seller/src/views/order/order/orderList.vue | 520 +++++------ 30 files changed, 1143 insertions(+), 1131 deletions(-) create mode 100644 seller/src/assets/download.png create mode 100644 seller/src/assets/goodsType1.png create mode 100644 seller/src/assets/goodsType2.png create mode 100644 seller/src/assets/goodsTypeTpl.png create mode 100644 seller/src/assets/success.png create mode 100644 seller/src/assets/upload.png create mode 100644 seller/src/views/order/order/exportOrderDeliver.vue diff --git a/buyer/src/plugins/request.js b/buyer/src/plugins/request.js index c2c2b108..d650d2a7 100644 --- a/buyer/src/plugins/request.js +++ b/buyer/src/plugins/request.js @@ -1,77 +1,133 @@ // import Vue from 'vue'; -import axios from 'axios'; -import https from 'https'; -import { - Message, - Spin, - Modal -} from 'view-design'; -import Storage from './storage'; -import config from '@/config'; -import router from '../router/index.js'; -import store from '../vuex/store'; -import { - handleRefreshToken -} from '@/api/index'; -const qs = require('qs'); - -export const buyerUrl = (process.env.NODE_ENV === 'development' ? config.api_dev.buyer : config.api_prod.buyer); -export const commonUrl = (process.env.NODE_ENV === 'development' ? config.api_dev.common : config.api_prod.common); -export const managerUrl = (process.env.NODE_ENV === 'development' ? config.api_dev.manager : config.api_prod.manager); -export const sellerUrl = (process.env.NODE_ENV === 'development' ? config.api_dev.seller : config.api_prod.seller); +import axios from "axios"; +import https from "https"; +import { Message, Spin, Modal } from "view-design"; +import Storage from "./storage"; +import config from "@/config"; +import router from "../router/index.js"; +import store from "../vuex/store"; +import { handleRefreshToken } from "@/api/index"; +const qs = require("qs"); +export const buyerUrl = + process.env.NODE_ENV === "development" + ? config.api_dev.buyer + : config.api_prod.buyer; +export const commonUrl = + process.env.NODE_ENV === "development" + ? config.api_dev.common + : config.api_prod.common; +export const managerUrl = + process.env.NODE_ENV === "development" + ? config.api_dev.manager + : config.api_prod.manager; +export const sellerUrl = + process.env.NODE_ENV === "development" + ? config.api_dev.seller + : config.api_prod.seller; // 创建axios实例 var isRefreshToken = 0; -const refreshToken = getTokenDebounce() +const refreshToken = getTokenDebounce(); const service = axios.create({ timeout: 10000, // 请求超时时间 baseURL: buyerUrl, // API httpsAgent: new https.Agent({ rejectUnauthorized: false }), - paramsSerializer: params => qs.stringify(params, { - arrayFormat: 'repeat' - }) + paramsSerializer: params => + qs.stringify(params, { + arrayFormat: "repeat" + }) }); // request拦截器 -service.interceptors.request.use(config => { - const { - loading - } = config; - // 如果是put/post请求,用qs.stringify序列化参数 - const isPutPost = config.method === 'put' || config.method === 'post'; - const isJson = config.headers['Content-Type'] === 'application/json'; - const isFile = config.headers['Content-Type'] === 'multipart/form-data'; - if (isPutPost && isJson) { - config.data = JSON.stringify(config.data); +service.interceptors.request.use( + config => { + const { loading } = config; + // 如果是put/post请求,用qs.stringify序列化参数 + const isPutPost = config.method === "put" || config.method === "post"; + const isJson = config.headers["Content-Type"] === "application/json"; + const isFile = config.headers["Content-Type"] === "multipart/form-data"; + if (isPutPost && isJson) { + config.data = JSON.stringify(config.data); + } + if (isPutPost && !isFile && !isJson) { + config.data = qs.stringify(config.data, { + arrayFormat: "repeat" + }); + } + /** 配置全屏加载 */ + if (process.client && loading !== false) { + config.loading = Spin.show(); + } + + const uuid = Storage.getItem("uuid"); + config.headers["uuid"] = uuid; + + // 获取访问Token + let accessToken = Storage.getItem("accessToken"); + if (accessToken && config.needToken) { + config.headers["accessToken"] = accessToken; + // 解析当前token时间 + let jwtData = JSON.parse( + decodeURIComponent(escape(window.atob(accessToken.split(".")[1]))) + ); + if (jwtData.exp < new Date().getTime() / 1000) { + refresh() + } + } + + return config; + }, + error => { + Promise.reject(error); } - if (isPutPost && !isFile && !isJson) { - config.data = qs.stringify(config.data, { - arrayFormat: 'repeat' +); + +async function refresh() { + const getTokenRes = await refreshToken(); + if (getTokenRes === "success") { + // 刷新token + if (isRefreshToken === 1) { + error.response.config.headers.accessToken = Storage.getItem( + "accessToken" + ); + return service(error.response.config); + } else { + router.go(0); + } + } else { + Storage.removeItem("accessToken"); + Storage.removeItem("refreshToken"); + Storage.removeItem("userInfo"); + Storage.setItem("cartNum", 0); + store.commit("SET_CARTNUM", 0); + console.log("1111"); + Modal.confirm({ + title: "请登录", + content: "
请登录后执行此操作
", + okText: "立即登录", + cancelText: "继续浏览", + onOk: () => { + router.push({ + path: "/login", + query: { + rePath: router.history.current.path, + query: JSON.stringify(router.history.current.query) + } + }); + }, + onCancel: () => { + Modal.remove(); + } }); } - /** 配置全屏加载 */ - if (process.client && loading !== false) { - config.loading = Spin.show(); - } - - const uuid = Storage.getItem('uuid'); - config.headers['uuid'] = uuid; - - // 获取访问Token - let accessToken = Storage.getItem('accessToken'); - if (accessToken && config.needToken) { - config.headers['accessToken'] = accessToken; - } - return config; -}, error => { - Promise.reject(error); -}); +} // respone拦截器 service.interceptors.response.use( async response => { await closeLoading(response); + return response.data; }, async error => { @@ -84,45 +140,15 @@ service.interceptors.response.use( isRefreshToken++; if (isRefreshToken === 1) { - const getTokenRes = await refreshToken(); - if (getTokenRes === 'success') { // 刷新token - if (isRefreshToken === 1) { - error.response.config.headers.accessToken = Storage.getItem('accessToken') - return service(error.response.config) - } else { - router.go(0) - } - } else { - Storage.removeItem('accessToken'); - Storage.removeItem('refreshToken'); - Storage.removeItem('userInfo'); - Storage.setItem('cartNum', 0) - store.commit('SET_CARTNUM', 0) - console.log('1111'); - Modal.confirm({ - title: '请登录', - content: '请登录后执行此操作
', - okText: '立即登录', - cancelText: '继续浏览', - onOk: () => { - router.push({ - path: '/login', - query: { - rePath: router.history.current.path, - query: JSON.stringify(router.history.current.query) - } - }); - }, - onCancel: () => { - Modal.remove(); - } - }); - } - isRefreshToken = 0 + refresh() + isRefreshToken = 0; } } else { if (error.message) { - let _message = error.code === 'ECONNABORTED' ? '连接超时,请稍候再试!' : '网络错误,请稍后再试!'; + let _message = + error.code === "ECONNABORTED" + ? "连接超时,请稍候再试!" + : "网络错误,请稍后再试!"; Message.error(errorData.message || _message); } } @@ -134,7 +160,7 @@ service.interceptors.response.use( * 关闭全局加载 * @param target */ -const closeLoading = (target) => { +const closeLoading = target => { if (!target.config || !target.config.loading) return true; return new Promise((resolve, reject) => { setTimeout(() => { @@ -145,13 +171,13 @@ const closeLoading = (target) => { }; export const Method = { - GET: 'get', - POST: 'post', - PUT: 'put', - DELETE: 'delete' + GET: "get", + POST: "post", + PUT: "put", + DELETE: "delete" }; -export default function request (options) { +export default function request(options) { // 如果是服务端或者是请求的刷新token,不需要检查token直接请求。 // if (process.server || options.url.indexOf('passport/token') !== -1) { return service(options); @@ -160,47 +186,46 @@ export default function request (options) { } // 防抖闭包来一波 -function getTokenDebounce () { - let lock = false - let success = false - return function () { +function getTokenDebounce() { + let lock = false; + let success = false; + return function() { if (!lock) { - lock = true - let oldRefreshToken = Storage.getItem('refreshToken'); - handleRefreshToken(oldRefreshToken).then(res => { - if (res.success) { - let { - accessToken, - refreshToken - } = res.result; - Storage.setItem('accessToken', accessToken); - Storage.setItem('refreshToken', refreshToken); + lock = true; + let oldRefreshToken = Storage.getItem("refreshToken"); + handleRefreshToken(oldRefreshToken) + .then(res => { + if (res.success) { + let { accessToken, refreshToken } = res.result; + Storage.setItem("accessToken", accessToken); + Storage.setItem("refreshToken", refreshToken); - success = true - lock = false - } else { - success = false - lock = false - // router.push('/login') - } - }).catch((err) => { - console.log(err); - success = false - lock = false - }) + success = true; + lock = false; + } else { + success = false; + lock = false; + // router.push('/login') + } + }) + .catch(err => { + console.log(err); + success = false; + lock = false; + }); } return new Promise(resolve => { // 一直看lock,直到请求失败或者成功 const timer = setInterval(() => { if (!lock) { - clearInterval(timer) + clearInterval(timer); if (success) { - resolve('success') + resolve("success"); } else { - resolve('fail') + resolve("fail"); } } - }, 500) // 轮询时间间隔 - }) - } + }, 500); // 轮询时间间隔 + }); + }; } diff --git a/manager/src/views/lili-floor-renovation/wap/navbar.vue b/manager/src/views/lili-floor-renovation/wap/navbar.vue index 20be9547..ef7050c5 100644 --- a/manager/src/views/lili-floor-renovation/wap/navbar.vue +++ b/manager/src/views/lili-floor-renovation/wap/navbar.vue @@ -3,13 +3,7 @@