3 Commits b45a1fb645 ... fb30898df1

Author SHA1 Message Date
  cz fb30898df1 1 1 year ago
  cz c032f80a3d 生产计划标签错误解决 1 year ago
  asd26269546 71ac4dd5af token加密 1 year ago
6 changed files with 193 additions and 158 deletions
  1. 1 0
      package.json
  2. 10 11
      src/lang/en.js
  3. 25 4
      src/utils/axios.js
  4. 5 5
      src/views/JXSK/mes/forward/index.vue
  5. 25 11
      src/views/MES/produce/plan/add.vue
  6. 127 127
      yarn.lock

+ 1 - 0
package.json

@@ -16,6 +16,7 @@
     "@zxing/library": "^0.20.0",
     "axios": "^1.3.4",
     "core-js": "^3.8.3",
+    "crypto-js": "^4.1.1",
     "dingtalk-jsapi": "^3.0.20",
     "echarts": "^5.4.2",
     "pinia": "^2.0.33",

+ 10 - 11
src/lang/en.js

@@ -1,4 +1,3 @@
-
 export const lang = {
     "login": {
         "deviceInformation": "Device Information",
@@ -58,8 +57,8 @@ export const lang = {
         "productDetails": "Product details ",
         "equipmentParameters": "Equipment parameters",
         "model": "Type",
-		'searchResults': 'Search results',
-		"noMatchingData": "No matching data",
+        'searchResults': 'Search results',
+        "noMatchingData": "No matching data",
     },
     "feedback": {
         "all": "All",
@@ -307,6 +306,7 @@ export const lang = {
         "planEndTime": "Scheduled end time",
         "selectPlanEndTime": "Please select the planned end time",
         "planEndTimeCanNotBeEmpty": "The planned end time cannot be empty",
+        'planQuantityCanNotBeEmpty': "The planned quantity cannot be empty",
         "workOrderManagement": "Workorder management",
         "productionTask": "Productive task",
         "taskQuantity": "Task QTY",
@@ -700,12 +700,12 @@ export const lang = {
         "passwordCanNotBeEmpty": "Password cannot be empty",
         "roleCanNotBeEmpty": "The role cannot be empty",
         "phoneCanNotBeEmpty": "Mobile phone number cannot be empty",
-        salesmanManagement:'业务员管理',
-		salesmanEdit:'业务员修改',
-		belongDept:'所属部门',
-		employeeName:'员工姓名',
-		businessCode:'业务代码',
-		salesmanCode:'业务员代码',
+        salesmanManagement: '业务员管理',
+        salesmanEdit: '业务员修改',
+        belongDept: '所属部门',
+        employeeName: '员工姓名',
+        businessCode: '业务代码',
+        salesmanCode: '业务员代码',
     },
     "dict": {
         "name": "Business Dictionary",
@@ -917,5 +917,4 @@ export const lang = {
         "ccc": "Storage motor",
         "ddd": "Centrifugal motor"
     }
-}
-
+}

+ 25 - 4
src/utils/axios.js

@@ -6,7 +6,7 @@ import { tansParams, blobValidate } from '@/utils/ruoyi'
 import cache from '@/utils/cache'
 import { showLoadingToast, closeToast,showNotify,showFailToast  } from 'vant';
 import { getToken } from '@/utils/auth'
-
+import CryptoJS from 'crypto-js'
 // 是否显示重新登录
 export let isRelogin = { show: false };
 import 'vant/lib/index.css'
@@ -17,15 +17,36 @@ const service = axios.create({
   // 超时
   timeout: 10000
 })
-
+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;  
+}
 // request拦截器
 service.interceptors.request.use(config => {
   // 是否需要设置 token
   const isToken = (config.headers || {}).isToken === false
   // 是否需要防止数据重复提交
   const isRepeatSubmit = (config.headers || {}).repeatSubmit === false
-  if ( getToken() || !isToken) {
-    config.headers['Authorization'] = 'Bearer ' + getToken()// 让每个请求携带自定义token 请根据实际情况自行修改
+  if (getToken() && !isToken) {
+    // 待加密的数据
+    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
+    });
+   config.headers['Authorization'] = encrypted // 让每个请求携带自定义token 请根据实际情况自行修改
+   config.headers['randomNumber'] = randomNumber
   }
   if (config.url === 'https://winfaster.obs.cn-south-1.myhuaweicloud.com') {
     config.headers['Content-Type'] = 'multipart/form-data'

+ 5 - 5
src/views/JXSK/mes/forward/index.vue

@@ -50,16 +50,16 @@ const listData = ref([]);
 
 const listConfig = ref([
   {
-    label: proxy.t('forward.productName'),
+    label: proxy.t("forward.productName"),
     prop: "productName",
   },
 
   {
-    label: proxy.t('forward.productSN'),
+    label: proxy.t("forward.productSN"),
     prop: "productSn",
   },
   {
-    label: proxy.t('forward.currentProcess'),
+    label: proxy.t("forward.currentProcess"),
     prop: "productionProcessesName",
   },
 ]);
@@ -81,8 +81,8 @@ const onClickLeft = () => proxy.$router.push("/main/working");
 const toDtl = (row) => {
   let type = "";
   if (
-    row.nextProductionProcessesId === "" ||
-    row.nextProductionProcessesId === -1
+    row.nextProductionProcessesId == "" ||
+    row.nextProductionProcessesId == "-1"
   ) {
     type = "20";
   } else {

+ 25 - 11
src/views/MES/produce/plan/add.vue

@@ -16,7 +16,9 @@
           :label="$t('plan.selectWorkOrder')"
           :placeholder="$t('plan.selectWorkOrder')"
           @click="typeModal = true"
-          :rules="[{ required: true, message: $t('plan.workOrderCanNotBeEmpty') }]"
+          :rules="[
+            { required: true, message: $t('plan.workOrderCanNotBeEmpty') },
+          ]"
           required
         />
         <van-popup v-model:show="typeModal" round position="bottom">
@@ -26,7 +28,11 @@
             @confirm="onConfirm"
           />
         </van-popup>
-        <van-field v-model="formData.productName" readonly :label="$t('plan.productName')" />
+        <van-field
+          v-model="formData.productName"
+          readonly
+          :label="$t('plan.productName')"
+        />
         <van-field
           v-model="formData.waitQuantity"
           readonly
@@ -42,7 +48,9 @@
           :label="$t('plan.planStartTime')"
           :placeholder="$t('plan.selectPlanStartTime')"
           @click="handleOpenTime(true)"
-          :rules="[{ required: true, message: $t('plan.planStartTimeCanNotBeEmpty') }]"
+          :rules="[
+            { required: true, message: $t('plan.planStartTimeCanNotBeEmpty') },
+          ]"
           required
         />
         <van-field
@@ -52,7 +60,9 @@
           :label="$t('plan.planEndTime')"
           :placeholder="$t('plan.selectPlanEndTime')"
           @click="handleOpenTime(false)"
-          :rules="[{ required: true, message: $t('plan.planEndTimeCanNotBeEmpty') }]"
+          :rules="[
+            { required: true, message: $t('plan.planEndTimeCanNotBeEmpty') },
+          ]"
           required
         />
         <van-popup v-model:show="showPicker" position="bottom">
@@ -64,17 +74,19 @@
 
         <van-field
           v-model="formData.quantity"
-          :label="$t('plan.planEndTime')"
-          :placeholder="$t('plan.selectPlanEndTime')"
+          :label="$t('plan.planQuantity')"
+          :placeholder="$t('plan.pleaseEnterThePlanQuantity')"
           type="number"
-          :rules="[{ required: true, message: $t('plan.planEndTimeCanNotBeEmpty') }]"
+          :rules="[
+            { required: true, message: $t('plan.planQuantityCanNotBeEmpty') },
+          ]"
           required
         />
       </van-cell-group>
 
       <div style="margin: 16px">
         <van-button round block type="primary" native-type="submit">
-          {{$t("common.submit")}}
+          {{ $t("common.submit") }}
         </van-button>
       </div>
     </van-form>
@@ -158,15 +170,17 @@ const onClickLeft = () => history.back();
 
 const onSubmit = () => {
   if (Number(formData.value.quantity) > Number(formData.value.waitQuantity)) {
-    return showFailToast(proxy.t('plan.planQuantityCanNotBeGreaterThanTheSchedulingQuantity'));
+    return showFailToast(
+      proxy.t("plan.planQuantityCanNotBeGreaterThanTheSchedulingQuantity")
+    );
   }
   if (proxy.compareTime(formData.value.startDate, formData.value.stopDate)) {
-    return showFailToast(proxy.t('plan.timeSelectionProblem'));
+    return showFailToast(proxy.t("plan.timeSelectionProblem"));
   }
   proxy.post("/productionPlan/add", formData.value).then(
     (res) => {
       setTimeout(() => {
-        showSuccessToast(proxy.t('common.addSuccess'));
+        showSuccessToast(proxy.t("common.addSuccess"));
         proxy.$router.push("/main/plan");
       }, 500);
     },

File diff suppressed because it is too large
+ 127 - 127
yarn.lock


Some files were not shown because too many files changed in this diff