add react版前端
This commit is contained in:
34
web-react/src/util/des/index.js
Normal file
34
web-react/src/util/des/index.js
Normal file
@@ -0,0 +1,34 @@
|
||||
import {
|
||||
TripleDES,
|
||||
enc,
|
||||
mode,
|
||||
pad
|
||||
} from 'crypto-js';
|
||||
|
||||
const KEY = process.env.VUE_APP_DEV_KEY;
|
||||
const key = enc.Utf8.parse(KEY);
|
||||
|
||||
//TripleDES加密
|
||||
const encryptByDES = (message) => {
|
||||
let encrypted = TripleDES.encrypt(message, key, {
|
||||
mode: mode.ECB,
|
||||
padding: pad.Pkcs7
|
||||
});
|
||||
return encrypted.toString();
|
||||
}
|
||||
|
||||
//TripleDES解密
|
||||
const decryptByDES = (ciphertext) => {
|
||||
let decrypted = TripleDES.decrypt({
|
||||
ciphertext: enc.Base64.parse(ciphertext)
|
||||
}, key, {
|
||||
mode: mode.ECB,
|
||||
});
|
||||
const value = decrypted.toString(enc.Utf8);
|
||||
return value;
|
||||
}
|
||||
|
||||
export {
|
||||
encryptByDES,
|
||||
decryptByDES
|
||||
}
|
||||
125
web-react/src/util/file/index.js
Normal file
125
web-react/src/util/file/index.js
Normal file
@@ -0,0 +1,125 @@
|
||||
import { api } from 'common/api'
|
||||
|
||||
const _getFileTypeByBase64 = (base64) => {
|
||||
let arr = base64.split(','),
|
||||
fileType = arr[0].match(/:(.*?);/)[1]
|
||||
return fileType
|
||||
}
|
||||
|
||||
/**
|
||||
* ArrayBuffer转Base64
|
||||
* @param {*} arrayBuffer
|
||||
* @returns
|
||||
*/
|
||||
export const ArrayBufferToBase64 = async (arrayBuffer) => {
|
||||
const blob = ArrayBufferToBlob(arrayBuffer)
|
||||
const base64 = await BlobToBase64(blob)
|
||||
return base64
|
||||
}
|
||||
|
||||
/**
|
||||
* ArrayBuffer转Blob
|
||||
* @param {*} arrayBuffer
|
||||
* @returns
|
||||
*/
|
||||
export const ArrayBufferToBlob = (arrayBuffer) => {
|
||||
return new Blob([arrayBuffer])
|
||||
}
|
||||
|
||||
/**
|
||||
* Base64转Blob
|
||||
* @param {*} base64
|
||||
* @returns
|
||||
*/
|
||||
export const Base64ToBlob = (base64) => {
|
||||
let arr = base64.split(','),
|
||||
fileType = _getFileTypeByBase64(base64),
|
||||
bstr = atob(arr[1]),
|
||||
n = bstr.length,
|
||||
u8arr = new Uint8Array(n)
|
||||
|
||||
while (n--) {
|
||||
u8arr[n] = bstr.charCodeAt(n)
|
||||
}
|
||||
return new Blob([u8arr], { type: fileType })
|
||||
}
|
||||
|
||||
/**
|
||||
* Blob转文件
|
||||
* @param {*} blob
|
||||
* @param {*} fileName
|
||||
* @param {*} fileType
|
||||
* @returns
|
||||
*/
|
||||
export const BlobToFile = (blob, fileName, fileType) => {
|
||||
blob.lastModifiedDate = new Date()
|
||||
blob.name = fileName
|
||||
const file = new File([blob], fileName, { type: fileType })
|
||||
return file
|
||||
}
|
||||
|
||||
/**
|
||||
* Base64转文件
|
||||
* @param {*} base64
|
||||
* @param {*} fileName
|
||||
* @returns
|
||||
*/
|
||||
export const Base64ToFile = (base64, fileName) => {
|
||||
const blob = Base64ToBlob(base64)
|
||||
const fileType = _getFileTypeByBase64(base64)
|
||||
const file = BlobToFile(blob, fileName, fileType)
|
||||
return file
|
||||
}
|
||||
|
||||
/**
|
||||
* Blob转Base64
|
||||
* @param {*} blob
|
||||
* @returns
|
||||
*/
|
||||
export const BlobToBase64 = async (blob) => {
|
||||
return new Promise(resolve => {
|
||||
const reader = new FileReader()
|
||||
reader.readAsDataURL(blob)
|
||||
reader.onload = (e) => {
|
||||
resolve(e.target.result)
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
export const GetFileName = (disposition) => {
|
||||
const dispositionSplit = disposition.split(';')
|
||||
const fileName = decodeURI(
|
||||
dispositionSplit[1].split('=')[1],
|
||||
dispositionSplit[2].match(/(?<=\*=).*?(?=')/)[0]
|
||||
)
|
||||
return fileName
|
||||
}
|
||||
|
||||
export const PreviewFileResponse = async (id) => {
|
||||
return api.sysFileInfoPreview({ id }).then((res) => {
|
||||
return res
|
||||
})
|
||||
}
|
||||
|
||||
export const PreviewFileArrayBuffer = async (id) => {
|
||||
const response = await PreviewFileResponse(id)
|
||||
return response.data
|
||||
}
|
||||
|
||||
export const PreviewFileBase64 = async (id) => {
|
||||
const file = await PreviewFile(id)
|
||||
if (!file) return
|
||||
const base64 = await BlobToBase64(file)
|
||||
return base64
|
||||
}
|
||||
|
||||
export const PreviewFile = async (id) => {
|
||||
const response = await PreviewFileResponse(id)
|
||||
const arrayBuffer = response.data
|
||||
const blob = ArrayBufferToBlob(arrayBuffer)
|
||||
const disposition = response.headers['content-disposition']
|
||||
if (!disposition) return
|
||||
const fileName = GetFileName(disposition)
|
||||
const file = BlobToFile(blob, fileName, response.headers['content-type'])
|
||||
return file
|
||||
}
|
||||
19
web-react/src/util/format/index.js
Normal file
19
web-react/src/util/format/index.js
Normal file
@@ -0,0 +1,19 @@
|
||||
export const numberToChinese = (val) => {
|
||||
const num = parseInt(val)
|
||||
const changeNum = ['零', '一', '二', '三', '四', '五', '六', '七', '八', '九']
|
||||
const unit = ['', '十', '百', '千', '万']
|
||||
const getWan = (temp) => {
|
||||
const strArr = temp.toString().split('').reverse()
|
||||
let newNum = ''
|
||||
for (var i = 0; i < strArr.length; i++) {
|
||||
newNum = (i === 0 && strArr[i] === '0' ? '' : i > 0 && strArr[i] === '0' && strArr[i - 1] === '0' ? '' : changeNum[strArr[i]] + (strArr[i] === '0' ? unit[0] : unit[i])) + newNum
|
||||
}
|
||||
return newNum
|
||||
}
|
||||
const overWan = Math.floor(num / 10000)
|
||||
let noWan = num % 10000
|
||||
if (noWan.toString().length < 4) noWan = '0' + noWan
|
||||
|
||||
const chinanum = overWan ? getWan(overWan) + '万' + getWan(noWan) : getWan(num)
|
||||
return chinanum
|
||||
}
|
||||
39
web-react/src/util/global/index.js
Normal file
39
web-react/src/util/global/index.js
Normal file
@@ -0,0 +1,39 @@
|
||||
import { urls } from 'common/api'
|
||||
import { GLOBAL_INFO_KEY } from 'common/storage'
|
||||
import { encryptByDES, decryptByDES } from 'util/des'
|
||||
|
||||
/**
|
||||
* 空GUID
|
||||
*/
|
||||
export const EMPTY_ID = '00000000-0000-0000-0000-000000000000'
|
||||
|
||||
/**
|
||||
* 文件预览地址
|
||||
*/
|
||||
export const PERVIEW_URL = process.env.VUE_APP_BASE_URL + urls.sysFileInfoPreview[0]
|
||||
|
||||
|
||||
/**
|
||||
* 全局信息设置
|
||||
*/
|
||||
export const setGlobal = (info) => {
|
||||
//app.$set(app.global, 'info', info)
|
||||
window.sessionStorage.setItem(GLOBAL_INFO_KEY, encryptByDES(JSON.stringify(info)))
|
||||
}
|
||||
export const removeGlobal = () => {
|
||||
//app.$set(app.global, 'info', undefined)
|
||||
window.sessionStorage.removeItem(GLOBAL_INFO_KEY)
|
||||
}
|
||||
export const getGlobal = () => {
|
||||
return JSON.parse(decryptByDES(window.sessionStorage.getItem(GLOBAL_INFO_KEY)))
|
||||
}
|
||||
|
||||
/**
|
||||
* RSA公钥
|
||||
*/
|
||||
export const RSA_PUBLIC_KEY = '-----BEGIN PUBLIC KEY-----MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC273zAyijb3uX6O66VThrdfHtzZJn3d/SBM8qiETS7PijyNY3zNecAB+F/owxOWSB/6ojBo5Eu0FCiENxfpenTZB7sKrYu6NVH5gkfHLa6jz4pNzlGP93Q6RON4KjMZolAfRevBQ7vD6sOfJfMDnYi8xk+dRXcqc6PWY8fQiGs5QIDAQAB-----END PUBLIC KEY-----'
|
||||
|
||||
/**
|
||||
* 城市名称
|
||||
*/
|
||||
export const CITY = '黄石市'
|
||||
41
web-react/src/util/query/index.js
Normal file
41
web-react/src/util/query/index.js
Normal file
@@ -0,0 +1,41 @@
|
||||
export const getSearchInfo = ({ query, queryType }) => {
|
||||
const searchInfo = []
|
||||
Object.keys(query).forEach((p) => {
|
||||
if (queryType && queryType.hasOwnProperty(p) && queryType[p].constructor === Array) {
|
||||
queryType[p].forEach((q, i) => {
|
||||
if (query[p] !== null && query[p] !== undefined) {
|
||||
const _searchInfo = {
|
||||
field: p,
|
||||
value: [query[p][i]],
|
||||
type: q,
|
||||
}
|
||||
searchInfo.push(_searchInfo)
|
||||
}
|
||||
})
|
||||
} else {
|
||||
const _searchInfo = {
|
||||
field: p,
|
||||
value: [],
|
||||
type: undefined,
|
||||
}
|
||||
|
||||
if (query[p] !== null && query[p] !== undefined) {
|
||||
if (query[p].constructor === Array) {
|
||||
_searchInfo.value = query[p]
|
||||
} else {
|
||||
_searchInfo.value = [query[p]]
|
||||
}
|
||||
} else {
|
||||
return false
|
||||
}
|
||||
|
||||
if (queryType && queryType.hasOwnProperty(p)) {
|
||||
_searchInfo.type = queryType[p]
|
||||
}
|
||||
|
||||
searchInfo.push(_searchInfo)
|
||||
}
|
||||
})
|
||||
|
||||
return searchInfo
|
||||
}
|
||||
13
web-react/src/util/rsa/index.js
Normal file
13
web-react/src/util/rsa/index.js
Normal file
@@ -0,0 +1,13 @@
|
||||
import { JSEncrypt } from 'jsencrypt'
|
||||
/**
|
||||
* RSA加解密
|
||||
*/
|
||||
const encryptByRSA = (message, publicKey) => {
|
||||
const Encrypt = new JSEncrypt()
|
||||
Encrypt.setPublicKey(publicKey)
|
||||
return Encrypt.encrypt(message)
|
||||
}
|
||||
|
||||
export {
|
||||
encryptByRSA
|
||||
}
|
||||
Reference in New Issue
Block a user