Bläddra i källkod

处理excel导入token加密

cz 1 år sedan
förälder
incheckning
79905cfe36

+ 4 - 3
src/components/WDLY/process/SendSubscribeWDLY.vue

@@ -108,6 +108,7 @@
         <el-upload
           :action="actionUrl + '/subscribeDetail/excelImport'"
           :headers="headers"
+          :before-upload="useImportExcelStore().updateRequestHeaders()"
           :on-success="handleSuccess"
           :on-progress="handleProgress"
           :show-file-list="false"
@@ -132,11 +133,11 @@ import SelectGoods from "@/components/WDLY/product/SelectGoods";
 import useUserStore from "@/store/modules/user";
 import { computed } from "vue";
 import { getToken } from "@/utils/auth";
-const headers = ref({ Authorization: "Bearer " + getToken() });
-const actionUrl = import.meta.env.VITE_APP_BASE_API;
 const { proxy } = getCurrentInstance();
+import useImportExcelStore from "@/store/modules/importExcel";
+const headers = computed(() => useImportExcelStore().requestHeaders);
+const actionUrl = import.meta.env.VITE_APP_BASE_API;
 const route = useRoute();
-
 let formData = reactive({
   data: {
     subscribeDetailList: [],

+ 4 - 1
src/main.js

@@ -58,7 +58,8 @@ import {
   random,
   deepClone,
   timeInterval,
-  compareTime
+  compareTime,
+  generateAuthorization
 } from '@/utils/util'
 
 // 分页组件
@@ -106,6 +107,8 @@ app.config.globalProperties.random = random
 app.config.globalProperties.deepClone = deepClone
 app.config.globalProperties.timeInterval = timeInterval
 app.config.globalProperties.compareTime = compareTime
+app.config.globalProperties.generateAuthorization = generateAuthorization
+
 
 
 // 全局组件挂载

+ 19 - 0
src/store/modules/importExcel.js

@@ -0,0 +1,19 @@
+import {
+  generateAuthorization
+} from '@/utils/util'
+const useImportExcelStore = defineStore(
+  'importExcel', {
+    state: () => ({
+      requestHeaders: {},
+    }),
+    actions: {
+      updateRequestHeaders() {
+        const data = generateAuthorization()
+        this.requestHeaders = {
+          Authorization: data.encrypted,
+          randomNumber: data.randomNumber,
+        };
+      },
+    }
+  })
+export default useImportExcelStore

+ 50 - 3
src/utils/util.js

@@ -1,9 +1,18 @@
 import moment from "moment";
-import { post, get } from "@/utils/request";
+import {
+  post,
+  get
+} from "@/utils/request";
 import Cookies from "js-cookie";
 import html2Canvas from "html2canvas";
 import JsPDF from "jspdf";
 import * as toEnglish from "./ACapital.js";
+import CryptoJS from 'crypto-js'
+import {
+  getToken
+} from "@/utils/auth";
+
+
 
 //根据value值回显字典label值
 export function dictDataEcho(value, arr) {
@@ -361,9 +370,19 @@ export function timeInterval(smallTime, largeTime) {
     //计算相差秒数
     let leave3 = leave2 % (60 * 1000); //计算分钟数后剩余的毫秒数
     let seconds = Math.round(leave3 / 1000);
-    return { days: days, hours: hours, minutes: minutes, seconds: seconds };
+    return {
+      days: days,
+      hours: hours,
+      minutes: minutes,
+      seconds: seconds
+    };
   }
-  return { days: 0, hours: 0, minutes: 0, seconds: 0 };
+  return {
+    days: 0,
+    hours: 0,
+    minutes: 0,
+    seconds: 0
+  };
 }
 
 // 比较时间大小
@@ -376,3 +395,31 @@ export function compareTime(date1, date2) {
     return false; //第二个大
   }
 }
+
+export function generateRandomString(length) {
+  var result = '';
+  var characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
+  var charactersLength = characters.length;
+  for (var i = 0; i < length; i++) {
+    result += characters.charAt(Math.floor(Math.random() * charactersLength));
+  }
+  return result;
+}
+
+export function generateAuthorization() {
+  // 待加密的数据
+  let randomNumber = generateRandomString(20)
+  //后面加20位随机数
+  let data = getToken() + new Date().getTime() + randomNumber;
+  // 密钥,注意:密钥长度必须为16, 24, 32字节对应AES-128, AES-192, AES-256
+  let key = CryptoJS.enc.Utf8.parse('N[9f%2gKyo7(GNv3');
+  // AES加密
+  let encrypted = CryptoJS.AES.encrypt(data, key, {
+    mode: CryptoJS.mode.ECB,
+    padding: CryptoJS.pad.Pkcs7
+  });
+  return {
+    encrypted,
+    randomNumber
+  }
+}

+ 3 - 1
src/views/WDLY/basic/product/index.vue

@@ -279,6 +279,7 @@
         <el-upload
           :action="actionUrl + '/productInfo/excelImport'"
           :headers="headers"
+          :before-upload="useImportExcelStore().updateRequestHeaders()"
           :on-success="handleSuccessOne"
           :on-progress="handleProgress"
           :show-file-list="false"
@@ -353,7 +354,8 @@ import useUserStore from "@/store/modules/user";
 import { parse, stringify } from "lossless-json";
 import { computed, defineComponent, ref } from "vue";
 import { getToken } from "@/utils/auth";
-const headers = ref({ Authorization: "Bearer " + getToken() });
+import useImportExcelStore from "@/store/modules/importExcel";
+const headers = computed(() => useImportExcelStore().requestHeaders);
 const actionUrl = import.meta.env.VITE_APP_BASE_API;
 const tableHeight = window.innerHeight - 360;
 let openProduct = ref(false);

+ 3 - 1
src/views/WDLY/outInBound/jdOrderReceive/index.vue

@@ -180,6 +180,7 @@
       <el-upload
         :action="actionUrl + '/jdOrder/receiveExcelImport'"
         :headers="headers"
+        :before-upload="useImportExcelStore().updateRequestHeaders()"
         :on-success="handleSuccess"
         :on-progress="handleProgress"
         :show-file-list="false"
@@ -205,7 +206,8 @@ import byForm from "@/components/byForm/index";
 import OrderDetails from "@/components/WDLY/order/details";
 import selectCity from "@/components/selectCity/index.vue";
 import { getToken } from "@/utils/auth";
-const headers = ref({ Authorization: "Bearer " + getToken() });
+import useImportExcelStore from "@/store/modules/importExcel";
+const headers = computed(() => useImportExcelStore().requestHeaders);
 const actionUrl = import.meta.env.VITE_APP_BASE_API;
 const openExcelDialog = ref(false);
 const excelLoading = ref(false);

+ 3 - 1
src/views/WDLY/salesMange/jdOrder/index.vue

@@ -262,6 +262,7 @@
           :action="actionUrl + '/jdOrder/excelImport'"
           :data="importData"
           :headers="headers"
+          :before-upload="useImportExcelStore().updateRequestHeaders()"
           :on-success="handleSuccess"
           :on-progress="handleProgress"
           :show-file-list="false"
@@ -333,7 +334,8 @@ import OrderDetails from "@/components/WDLY/order/details";
 import selectCity from "@/components/selectCity/index.vue";
 
 import { getToken } from "@/utils/auth";
-const headers = ref({ Authorization: "Bearer " + getToken() });
+import useImportExcelStore from "@/store/modules/importExcel";
+const headers = computed(() => useImportExcelStore().requestHeaders);
 const actionUrl = import.meta.env.VITE_APP_BASE_API;
 const loading = ref(false);
 const submitLoading = ref(false);

+ 3 - 1
src/views/WDLY/salesMange/jdReGoods/index.vue

@@ -147,6 +147,7 @@
           :action="actionUrl + '/jdBack/excelImport'"
           :data="importData"
           :headers="headers"
+          :before-upload="useImportExcelStore().updateRequestHeaders()"
           :on-success="handleSuccess"
           :on-progress="handleProgress"
           :show-file-list="false"
@@ -183,7 +184,8 @@ import SelectProduct from "@/components/WDLY/product/SelectProduct";
 import { getToken } from "@/utils/auth";
 
 const uploadData = ref({});
-const headers = ref({ Authorization: "Bearer " + getToken() });
+import useImportExcelStore from "@/store/modules/importExcel";
+const headers = computed(() => useImportExcelStore().requestHeaders);
 const actionUrl = import.meta.env.VITE_APP_BASE_API;
 
 const loading = ref(false);

+ 3 - 1
src/views/WDLY/salesMange/jdReGoodsInspection/index.vue

@@ -188,6 +188,7 @@
         <el-upload
           :action="actionUrl + '/jdBackQualityWait/importExcel'"
           :headers="headers"
+          :before-upload="useImportExcelStore().updateRequestHeaders()"
           :on-success="handleSuccess"
           :on-progress="handleProgress"
           :show-file-list="false"
@@ -217,7 +218,8 @@ import useUserStore from "@/store/modules/user";
 import SelectProduct from "@/components/WDLY/product/SelectProduct";
 import OrderDetails from "@/components/WDLY/order/details";
 import { getToken } from "@/utils/auth";
-const headers = ref({ Authorization: "Bearer " + getToken() });
+import useImportExcelStore from "@/store/modules/importExcel";
+const headers = computed(() => useImportExcelStore().requestHeaders);
 const actionUrl = import.meta.env.VITE_APP_BASE_API;
 
 let openExcelDialog = ref(false);

+ 3 - 1
src/views/WDLY/salesMange/jdSalesData/index.vue

@@ -136,6 +136,7 @@
           :action="actionUrl + '/salesRecord/excelImport'"
           :data="importData"
           :headers="headers"
+          :before-upload="useImportExcelStore().updateRequestHeaders()"
           :on-success="handleSuccess"
           :on-progress="handleProgress"
           :show-file-list="false"
@@ -172,7 +173,8 @@ import SelectProduct from "@/components/WDLY/product/SelectProduct";
 import { getToken } from "@/utils/auth";
 
 const uploadData = ref({});
-const headers = ref({ Authorization: "Bearer " + getToken() });
+import useImportExcelStore from "@/store/modules/importExcel";
+const headers = computed(() => useImportExcelStore().requestHeaders);
 const actionUrl = import.meta.env.VITE_APP_BASE_API;
 
 const loading = ref(false);