- Vue 3 + TypeScript + Element Plus 前端界面 - Pinia 状态管理 - Vue Router 4 路由管理 - Axios HTTP 客户端 - MSW (Mock Service Worker) 开发环境模拟 - 账户管理界面 (列表、详情、三科目余额展示) - 交易管理界面 (列表、详情) - 对账管理界面 (三账校验) - 完善的 API 客户端封装 - Docker 容器化配置 - Nginx 配置用于生产环境
39 lines
828 B
JavaScript
39 lines
828 B
JavaScript
import crypto from 'crypto';
|
|
import URLSearchParams from './classes/URLSearchParams.js'
|
|
import FormData from './classes/FormData.js'
|
|
|
|
const ALPHA = 'abcdefghijklmnopqrstuvwxyz'
|
|
|
|
const DIGIT = '0123456789';
|
|
|
|
const ALPHABET = {
|
|
DIGIT,
|
|
ALPHA,
|
|
ALPHA_DIGIT: ALPHA + ALPHA.toUpperCase() + DIGIT
|
|
}
|
|
|
|
const generateString = (size = 16, alphabet = ALPHABET.ALPHA_DIGIT) => {
|
|
let str = '';
|
|
const {length} = alphabet;
|
|
const randomValues = new Uint32Array(size);
|
|
crypto.randomFillSync(randomValues);
|
|
for (let i = 0; i < size; i++) {
|
|
str += alphabet[randomValues[i] % length];
|
|
}
|
|
|
|
return str;
|
|
}
|
|
|
|
|
|
export default {
|
|
isNode: true,
|
|
classes: {
|
|
URLSearchParams,
|
|
FormData,
|
|
Blob: typeof Blob !== 'undefined' && Blob || null
|
|
},
|
|
ALPHABET,
|
|
generateString,
|
|
protocols: [ 'http', 'https', 'file', 'data' ]
|
|
};
|