From f5b7cfb87a6ffd4987dd5075f2601af5782b9c63 Mon Sep 17 00:00:00 2001 From: ylj20011123 Date: Sun, 7 Dec 2025 09:17:06 +0800 Subject: [PATCH] =?UTF-8?q?=F0=9F=92=A5=20feat(=E6=A8=A1=E5=9D=97):=20?= =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E4=BA=86=E4=B8=AA=E5=BE=88=E6=A3=92=E7=9A=84?= =?UTF-8?q?=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/pages/examine/modal/index.tsx | 63 +++++++++-- src/pages/examine/modal/service.ts | 9 ++ src/utils/request.ts | 2 +- src/utils/requestJava.ts | 6 +- src/utils/requestMap.ts | 2 +- src/utils/requestOld.ts | 2 +- src/utils/requestTest.ts | 2 +- src/utils/requestUpload.ts | 164 +++++++++++++++++++++++++++++ 8 files changed, 233 insertions(+), 17 deletions(-) create mode 100644 src/utils/requestUpload.ts diff --git a/src/pages/examine/modal/index.tsx b/src/pages/examine/modal/index.tsx index a410f48..107f95e 100644 --- a/src/pages/examine/modal/index.tsx +++ b/src/pages/examine/modal/index.tsx @@ -5,7 +5,7 @@ import { Button, Col, message, Modal, Popconfirm, Row, Space, Image, Drawer } fr import moment from "moment"; import { useEffect, useRef, useState } from "react"; import { connect } from "umi"; -import { handleAddTemplates, handleBatchService, handleDeleteTemplates, handleGetQuestionList, handleGetTemplatesList, handleSearchModalTree, handleUpdateTemplates, handleUploadFile } from "./service"; +import { handleAddTemplates, handleBatchService, handleDeleteTemplates, handleGetQuestionList, handleGetTemplatesList, handleSearchModalTree, handleUpdateTemplates, handleUploadFile, uploadAHYDPicture } from "./service"; import { handleGetExamineTypeTreeList } from "../index/service"; import QRCode from 'qrcode'; import { base64ToFile } from "@/utils/publicMethods"; @@ -518,6 +518,27 @@ const examineModal: React.FC<{ currentUser: any }> = (props) => { } console.log('reqadd', req); data = await handleUpdateTemplates(req) + console.log('data1231232131', data); + + // const myQRCodeDataUrl = await QRCode.toDataURL(`pages/walkAroundManager/index?id=${data.Result_Data.id}`); + // const file = base64ToFile(myQRCodeDataUrl, `wenjuan${data.Result_Data.id}.png`); + // console.log('file', file); + // const formData = new FormData(); + // // formData.append("file", file, `wenjuan${data.Result_Data.id}.png`); // 确保文件名也传递 + // formData.append("file[]", file); // 确保文件名也传递 + // formData.append('ImageType', '1133'); + // formData.append('ImageName', `wenjuan${data.Result_Data.id}.png`); + + // // const fileData = await handleUploadFile(formData) + // const fileData = await uploadAHYDPicture(formData) + // console.log('fileData', fileData); + // let url = fileData.Result_Data.ImageUrl + + // await handleUpdateTemplates({ + // ...req, + // qrUrl: url + // }) + // setQrCodeUrl(url || '') } else { let questions: any = [] if (res.questions && res.questions.length > 0) { @@ -555,7 +576,28 @@ const examineModal: React.FC<{ currentUser: any }> = (props) => { } console.log('reqreqreqreqreq', req); data = await handleAddTemplates(req) - // console.log('datadsadsa1', data); + console.log('datadsadsa1321312', data); + + + const myQRCodeDataUrl = await QRCode.toDataURL(`pages/walkAroundManager/index?id=${data.Result_Data.id}`); + const file = base64ToFile(myQRCodeDataUrl, `wenjuan${data.Result_Data.id}.png`); + console.log('file', file); + const formData = new FormData(); + // formData.append("file", file, `wenjuan${data.Result_Data.id}.png`); // 确保文件名也传递 + formData.append("file[]", file); // 确保文件名也传递 + formData.append('ImageType', '1133'); + formData.append('ImageName', `wenjuan${data.Result_Data.id}.png`); + + // const fileData = await handleUploadFile(formData) + const fileData = await uploadAHYDPicture(formData) + console.log('fileData', fileData); + let url = fileData.Result_Data.ImageUrl + + await handleUpdateTemplates({ + ...data.Result_Data, + qrUrl: url + }) + setQrCodeUrl(url || '') // const myQRCodeDataUrl = await QRCode.toDataURL(`pages/walkAroundManager/index?id=${data.Result_Data.id}`); // const file = base64ToFile(myQRCodeDataUrl, `wenjuan${data.Result_Data.id}.png`); @@ -563,17 +605,18 @@ const examineModal: React.FC<{ currentUser: any }> = (props) => { // const formData = new FormData(); // formData.append("file", file, `wenjuan${data.Result_Data.id}.png`); // 确保文件名也传递 - // const fileData = await handleUploadFile(formData) + // // const fileData = await handleUploadFile(formData) + // const fileData = await uploadAHYDPicture(formData) // console.log('fileData', fileData); - // let imgUrl: string = `https://es.eshangtech.com/${fileData.data.path}` - // await handleUpdateTemplates({ - // ...data.Result_Data, - // qrUrl: imgUrl - // }) + // // let imgUrl: string = `https://es.eshangtech.com/${fileData.data.path}` + // // await handleUpdateTemplates({ + // // ...data.Result_Data, + // // qrUrl: imgUrl + // // }) - setQrCodeUrl(data.Result_Data.qrUrl || '') + // setQrCodeUrl(data.Result_Data.qrUrl || '') - // setQrCodeUrl(myQRCodeDataUrl) + // // setQrCodeUrl(myQRCodeDataUrl) } console.log('datadsadsa', data); setModalLoading(true) diff --git a/src/pages/examine/modal/service.ts b/src/pages/examine/modal/service.ts index 58e71d9..2a3b5d5 100644 --- a/src/pages/examine/modal/service.ts +++ b/src/pages/examine/modal/service.ts @@ -2,6 +2,7 @@ import requestOld from "@/utils/requestOld" // import request from "@/utils/request" import requestNode from "@/utils/request" import request from "@/utils/requestJava" +import requestUpload from '@/utils/requestUpload' // 拿到模版id列表 去绑定服务区的多个站点信息 的列表接口 export async function handleGetTemplatesList(params?: any) { @@ -45,6 +46,14 @@ export async function handleUploadFile(params?: any) { return data } +//原先的上传文件 +export async function uploadAHYDPicture(uploadFilds?: any) { + return await requestUpload(`/Picture/UploadPicture`, { + method: 'POST', + data: uploadFilds + }) +} + // 模版树的查询 export async function handleSearchModalTree(params?: any) { const data = await request.post(`/questionnaire-templates/search/tree`, params) diff --git a/src/utils/request.ts b/src/utils/request.ts index 2927b05..d5a096e 100644 --- a/src/utils/request.ts +++ b/src/utils/request.ts @@ -8,7 +8,7 @@ import qs from 'qs'; const { UMI_APP_BASEURL } = process.env; // const instance = axios.create({ baseURL: UMI_APP_BASEURL }); -const instance = axios.create({ baseURL: 'https://api.eshangtech.com/EShangApiMain' }); +const instance = axios.create({ baseURL: 'https://eshangtech.com:18900/EShangApiMain' }); // const instance = axios.create({ baseURL: 'http://home.robot-z.cn:7001/' }); diff --git a/src/utils/requestJava.ts b/src/utils/requestJava.ts index 7fe1175..a2e5967 100644 --- a/src/utils/requestJava.ts +++ b/src/utils/requestJava.ts @@ -7,7 +7,7 @@ import CryptoJS from "crypto-js"; const { UMI_APP_BASEURL } = process.env; // const instance = axios.create({ baseURL: UMI_APP_BASEURL }); -// const instance = axios.create({ baseURL: 'https://api.eshangtech.com/EShangApiMain' }); +// const instance = axios.create({ baseURL: 'https://eshangtech.com:18900/EShangApiMain' }); // const instance = axios.create({ baseURL: 'http://home.robot-z.cn:7001/' }); @@ -16,8 +16,8 @@ const { UMI_APP_BASEURL } = process.env; // const instance = axios.create({ baseURL: 'https://admin.es.eshangtech.com/platform' }); -// const instance = axios.create({ baseURL: 'http://111.229.213.193:18071/' }); -const instance = axios.create({ baseURL: 'https://java.es.eshangtech.com:443/' }); +const instance = axios.create({ baseURL: 'http://111.229.213.193:18071/' }); +// const instance = axios.create({ baseURL: 'https://java.es.eshangtech.com:443/' }); // const instance = axios.create({ baseURL: 'http://10.104.1.175:8070/platform' }); diff --git a/src/utils/requestMap.ts b/src/utils/requestMap.ts index de3db4e..3fccf11 100644 --- a/src/utils/requestMap.ts +++ b/src/utils/requestMap.ts @@ -7,7 +7,7 @@ import CryptoJS from "crypto-js"; const { UMI_APP_BASEURL } = process.env; // const instance = axios.create({ baseURL: UMI_APP_BASEURL }); -// const instance = axios.create({ baseURL: 'https://api.eshangtech.com/EShangApiMain' }); +// const instance = axios.create({ baseURL: 'https://eshangtech.com:18900/EShangApiMain' }); // const instance = axios.create({ baseURL: 'http://home.robot-z.cn:7001/' }); diff --git a/src/utils/requestOld.ts b/src/utils/requestOld.ts index 4d3cb56..5af7cd6 100644 --- a/src/utils/requestOld.ts +++ b/src/utils/requestOld.ts @@ -7,7 +7,7 @@ import CryptoJS from "crypto-js"; const { UMI_APP_BASEURL } = process.env; // const instance = axios.create({ baseURL: UMI_APP_BASEURL }); -const instance = axios.create({ baseURL: 'https://api.eshangtech.com/EShangApiMain' }); +const instance = axios.create({ baseURL: 'https://eshangtech.com:18900/EShangApiMain' }); // const instance = axios.create({ baseURL: '/auth' }); diff --git a/src/utils/requestTest.ts b/src/utils/requestTest.ts index 7de1eba..9b67c82 100644 --- a/src/utils/requestTest.ts +++ b/src/utils/requestTest.ts @@ -7,7 +7,7 @@ import CryptoJS from "crypto-js"; const { UMI_APP_BASEURL } = process.env; // const instance = axios.create({ baseURL: UMI_APP_BASEURL }); -// const instance = axios.create({ baseURL: 'https://api.eshangtech.com/EShangApiMain' }); +// const instance = axios.create({ baseURL: 'https://eshangtech.com:18900/EShangApiMain' }); // const instance = axios.create({ baseURL: 'http://home.robot-z.cn:7001/' }); diff --git a/src/utils/requestUpload.ts b/src/utils/requestUpload.ts new file mode 100644 index 0000000..ababc0f --- /dev/null +++ b/src/utils/requestUpload.ts @@ -0,0 +1,164 @@ +import axios from 'axios'; +import { getDvaApp } from 'umi'; +import { notification } from 'antd'; +import type { AxiosRequestHeaders } from 'axios/index'; +import CryptoJS from "crypto-js"; +import qs from 'qs'; + +const { UMI_APP_BASEURL } = process.env; + +// const instance = axios.create({ baseURL: UMI_APP_BASEURL }); +const instance = axios.create({ baseURL: 'https://eshangtech.com:18900/EShangApiMain' }); + + +// const instance = axios.create({ baseURL: 'http://home.robot-z.cn:7001/' }); +// 修改baseURL为完整的API地址,确保在生产环境中正确访问 +// const instance = axios.create({ baseURL: 'https://es.robot-z.cn' }); + +// const instance = axios.create({ baseURL: 'https://es.eshangtech.com' }); + + + +// const instance = axios.create({ baseURL: 'https://admin.es.eshangtech.com/platform' }); + +// const instance = axios.create({ baseURL: 'http://10.104.1.175:8070/platform' }); + + + +instance.interceptors.request.use( + (config) => { + // 对data数据进行加密 + // if (config.data) { + // config.data = preprocessData(JSON.stringify(config.data)); // 调用预处理函数 + // } + + // config.headers = { + // ...config.headers, + // Authorization: token ? `Bearer ${localStorage.getItem('Authorization') || ''}` : "", + // "Content-Type": isUpload ? "multipart/form-data" : "application/json;charset=utf-8", + // } as AxiosRequestHeaders; + + return config; + }, + (error) => Promise.reject(error), +); + +instance.interceptors.response.use( + //状态码为2xx的时候执行 + (response) => { + const { data } = response; + + if (data.Result_Code !== 100) { + // notification.error({ + // message: data.message, + // }); + } + + const timestamp = getFormattedDate() + + return data + }, + //状态码不是2xx的时候执行 + (error) => { + const { response } = error; + + if (response && response.status === 401) { + // // 清除本地存储的token + // localStorage.removeItem('Authorization'); + // // 重定向到登录页 + // window.location.href = '/user/login'; + // notification.error({ + // message: response?.data?.message || '请求失败', + // description: error.message + // }); + } else { + notification.error({ + message: response?.data?.message || '请求失败', + description: error.message + }); + } + + return Promise.reject({ + code: response?.status || 500, + message: response?.data?.message || '请求失败' + }); + }, +); + + +// 加密 +const encryptAESECB = (data: string, key: string) => { + // const cipher = CryptoJS.createCipheriv('aes-128-ecb', key, null); // ECB 模式不需要 IV + const newKey = CryptoJS.enc.Utf8.parse(key); // 密钥必须是 16 字节 + const cipher = CryptoJS.AES.encrypt(data, newKey, { + mode: CryptoJS.mode.ECB, + padding: CryptoJS.pad.Pkcs7 + }); + let encrypted = cipher.ciphertext.toString(CryptoJS.enc.Hex); + // let encrypted = cipher.update(data, 'utf8', 'hex'); + // encrypted += cipher.final('hex'); + return encrypted; +} + +// 解密 +const decryptAESECB = (data: string, key: string) => { + // const decipher = CryptoJS.createDecipheriv('aes-128-ecb', key, null); + // let decrypted = decipher.update(data, 'hex', 'utf8'); + // decrypted += decipher.final('utf8'); + const newKey = CryptoJS.enc.Utf8.parse(key); + + const encryptedData = CryptoJS.enc.Hex.parse(data); + + // 解密操作 + const decrypted = CryptoJS.AES.decrypt({ ciphertext: encryptedData }, newKey, { + mode: CryptoJS.mode.ECB, // ECB 模式 + padding: CryptoJS.pad.Pkcs7 // PKCS7 填充方式 + }); + // 将解密后的结果转为 UTF-8 字符串 + const decryptedText = decrypted.toString(CryptoJS.enc.Utf8); + return decryptedText; +} + +// md5 签名 +const md5 = (key: string, data: string, timestamp: string) => { + const text = "s" + key + data + timestamp; + return CryptoJS.MD5(text).toString(CryptoJS.enc.Hex); +} + +// 生成签名戳 +const getFormattedDate = () => { + const date = new Date(); + const year = date.getFullYear(); // 获取年份 (yyyy) + const month = String(date.getMonth() + 1).padStart(2, '0'); // 获取月份 (MM) + const day = String(date.getDate()).padStart(2, '0'); // 获取日期 (dd) + const hours = String(date.getHours()).padStart(2, '0'); // 获取小时 (HH) + return `es0${year}${month}${day}${hours}0es`; // 拼接成 yyyyMMddHH 格式 +} + +// 加密方法 +const preprocessData = (data: string) => { + console.log('data', data); + // YYYYMMDD + let timestamp = getFormattedDate() + console.log('timestamp', timestamp); + // 秒为单位的时间戳 + let timeSecond = parseInt((new Date().getTime() / 1000).toString()) + console.log('timeSecond', timeSecond); + // 数据的加密 + let encryptionData = encryptAESECB(data, timestamp) + console.log('encryptionData', encryptionData); + // md5签名方法 + let md5Data = md5(timestamp, encryptionData, timestamp) + console.log('md5Data', md5Data); + + let res = { + data: encryptionData, + timestamp: timeSecond, + sign: md5Data + } + console.log('res', res); + + return res +} + +export default instance;