Skip to content

Commit 820bea8

Browse files
committed
feat: 支持读取汇率文件,即支持所有各种货币单位展示
1 parent efa715c commit 820bea8

File tree

5 files changed

+194
-20
lines changed

5 files changed

+194
-20
lines changed

public/exchange-rates.json

+178
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,178 @@
1+
{
2+
"success": true,
3+
"timestamp": 1734360544,
4+
"base": "EUR",
5+
"date": "2024-12-16",
6+
"rates": {
7+
"AED": 3.84895,
8+
"AFN": 73.33478,
9+
"ALL": 98.027938,
10+
"AMD": 411.569745,
11+
"ANG": 1.887477,
12+
"AOA": 956.102142,
13+
"ARS": 1069.146214,
14+
"AUD": 1.650772,
15+
"AWG": 1.886239,
16+
"AZN": 1.777667,
17+
"BAM": 1.952373,
18+
"BBD": 2.114589,
19+
"BDT": 125.14035,
20+
"BGN": 1.952174,
21+
"BHD": 0.39515,
22+
"BIF": 3095.566563,
23+
"BMD": 1.047911,
24+
"BND": 1.413719,
25+
"BOB": 7.262253,
26+
"BRL": 6.354952,
27+
"BSD": 1.047312,
28+
"BTC": 9.86446e-6,
29+
"BTN": 88.898562,
30+
"BWP": 14.247991,
31+
"BYN": 3.427184,
32+
"BYR": 20539.049207,
33+
"BZD": 2.110895,
34+
"CAD": 1.494577,
35+
"CDF": 3007.503434,
36+
"CHF": 0.937456,
37+
"CLF": 0.037345,
38+
"CLP": 1030.483873,
39+
"CNY": 7.633194,
40+
"CNH": 7.642286,
41+
"COP": 4525.496557,
42+
"CRC": 528.771883,
43+
"CUC": 1.047911,
44+
"CUP": 27.769633,
45+
"CVE": 110.071798,
46+
"CZK": 25.030708,
47+
"DJF": 186.48268,
48+
"DKK": 7.459253,
49+
"DOP": 63.571451,
50+
"DZD": 140.380845,
51+
"EGP": 53.237319,
52+
"ERN": 15.71866,
53+
"ETB": 132.933574,
54+
"EUR": 1,
55+
"FJD": 2.430891,
56+
"FKP": 0.829926,
57+
"GBP": 0.828625,
58+
"GEL": 2.944463,
59+
"GGP": 0.829926,
60+
"GHS": 15.393687,
61+
"GIP": 0.829926,
62+
"GMD": 75.449937,
63+
"GNF": 9044.125463,
64+
"GTQ": 8.067225,
65+
"GYD": 219.091263,
66+
"HKD": 8.148265,
67+
"HNL": 26.571628,
68+
"HRK": 7.516565,
69+
"HTG": 136.856315,
70+
"HUF": 409.199161,
71+
"IDR": 16790.725122,
72+
"ILS": 3.771651,
73+
"IMP": 0.829926,
74+
"INR": 88.960068,
75+
"IQD": 1371.957358,
76+
"IRR": 44103.941272,
77+
"ISK": 145.10473,
78+
"JEP": 0.829926,
79+
"JMD": 163.792506,
80+
"JOD": 0.743284,
81+
"JPY": 161.73241,
82+
"KES": 135.348202,
83+
"KGS": 91.165822,
84+
"KHR": 4208.612909,
85+
"KMF": 488.45739,
86+
"KPW": 943.11902,
87+
"KRW": 1506.560188,
88+
"KWD": 0.322515,
89+
"KYD": 0.872668,
90+
"KZT": 550.080727,
91+
"LAK": 22939.829831,
92+
"LBP": 93778.896295,
93+
"LKR": 304.490078,
94+
"LRD": 189.547301,
95+
"LSL": 18.759967,
96+
"LTL": 3.094208,
97+
"LVL": 0.633871,
98+
"LYD": 5.12201,
99+
"MAD": 10.450357,
100+
"MDL": 19.159371,
101+
"MGA": 4908.384647,
102+
"MKD": 61.470486,
103+
"MMK": 3403.572992,
104+
"MNT": 3560.800333,
105+
"MOP": 8.386819,
106+
"MRU": 41.574028,
107+
"MUR": 48.916714,
108+
"MVR": 16.137862,
109+
"MWK": 1815.912652,
110+
"MXN": 21.157075,
111+
"MYR": 4.665821,
112+
"MZN": 66.957096,
113+
"NAD": 18.759967,
114+
"NGN": 1616.32882,
115+
"NIO": 38.544185,
116+
"NOK": 11.72742,
117+
"NPR": 142.23734,
118+
"NZD": 1.818518,
119+
"OMR": 0.403362,
120+
"PAB": 1.047312,
121+
"PEN": 3.904733,
122+
"PGK": 4.239559,
123+
"PHP": 61.61507,
124+
"PKR": 291.246991,
125+
"PLN": 4.26281,
126+
"PYG": 8191.621805,
127+
"QAR": 3.817799,
128+
"RON": 4.97695,
129+
"RSD": 116.96566,
130+
"RUB": 108.827617,
131+
"RWF": 1438.048446,
132+
"SAR": 3.937233,
133+
"SBD": 8.785217,
134+
"SCR": 14.950965,
135+
"SDG": 630.31707,
136+
"SEK": 11.466673,
137+
"SGD": 1.416021,
138+
"SHP": 0.829926,
139+
"SLE": 23.909557,
140+
"SLL": 21974.166048,
141+
"SOS": 598.449582,
142+
"SRD": 36.89169,
143+
"STD": 21689.635225,
144+
"SVC": 9.162917,
145+
"SYP": 2632.90726,
146+
"SZL": 18.741105,
147+
"THB": 35.745312,
148+
"TJS": 11.414547,
149+
"TMT": 3.678166,
150+
"TND": 3.324124,
151+
"TOP": 2.454311,
152+
"TRY": 36.63454,
153+
"TTD": 7.111518,
154+
"TWD": 34.04246,
155+
"TZS": 2425.912998,
156+
"UAH": 43.747812,
157+
"UGX": 3822.290993,
158+
"USD": 1.047911,
159+
"UYU": 46.388577,
160+
"UZS": 13483.333624,
161+
"VES": 52.677635,
162+
"VND": 26611.691562,
163+
"VUV": 124.410054,
164+
"WST": 2.895155,
165+
"XAF": 654.801423,
166+
"XAG": 0.034256,
167+
"XAU": 0.000394,
168+
"XCD": 2.832031,
169+
"XDR": 0.798809,
170+
"XOF": 654.807661,
171+
"XPF": 119.331742,
172+
"YER": 262.370647,
173+
"ZAR": 18.742096,
174+
"ZMK": 9432.473646,
175+
"ZMW": 29.034039,
176+
"ZWL": 337.426809
177+
}
178+
}

src/App.js

+1
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import React from 'react';
22
import Upload from './components/Upload';
33
import Setting from './components/Setting';
44
import Footer from './components/Footer';
5+
import './config/exchangeRates';
56

67
function App() {
78
return (

src/components/Setting.js

+6-4
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ function Setting() {
1010
const savedToken = localStorage.getItem('openai_api_token');
1111
const savedModel = localStorage.getItem('selected_model');
1212
const savedCurrency = localStorage.getItem('currency');
13-
13+
1414
if (savedToken) {
1515
setApiToken(savedToken);
1616
}
@@ -105,9 +105,11 @@ function Setting() {
105105
onChange={(e) => setCurrency(e.target.value)}
106106
className="w-full px-3 py-2 border border-gray-300 rounded-md focus:outline-none focus:ring-2 focus:ring-blue-500"
107107
>
108-
<option value="USD">USD (美元)</option>
109-
<option value="CNY">CNY (人民币)</option>
110-
<option value="EUR">EUR (欧元)</option>
108+
{
109+
Object.keys(window.exchangeRates).map((currency) => {
110+
return <option value={currency} key={currency}>{currency}</option>
111+
})
112+
}
111113
</select>
112114
</div>
113115
<div className="flex justify-end space-x-3">

src/components/Upload.js

+2-3
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
import React, { useRef, useState } from 'react';
22
import logo from '../logo.png';
3-
import { exchangeRates, currencySymbols } from '../config/exchangeRates';
43

54
function Upload() {
65
const [file, setFile] = useState(null);
@@ -147,8 +146,8 @@ function Upload() {
147146
const minutes = Math.ceil(durationInSeconds / 60);
148147
const priceInUSD = minutes * 0.006;
149148
const currency = localStorage.getItem('currency') || 'USD';
150-
const rate = exchangeRates[currency];
151-
const symbol = currencySymbols[currency];
149+
const rate = window.exchangeRates[currency];
150+
const symbol = currency;
152151
return `${symbol}${(priceInUSD * rate).toFixed(3)}`;
153152
};
154153

src/config/exchangeRates.js

+7-13
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,7 @@
1-
// 汇率配置(相对于美元)
2-
export const exchangeRates = {
3-
USD: 1,
4-
CNY: 7.2, // 1 USD = 7.2 CNY
5-
EUR: 0.92, // 1 USD = 0.92 EUR
6-
};
7-
8-
// 货币符号
9-
export const currencySymbols = {
10-
USD: '$',
11-
CNY: '¥',
12-
EUR: '€',
13-
};
1+
window.exchangeRates = {};
2+
fetch('exchange-rates.json').then(res => res.json()).then(data => {
3+
const baseRate = data.rates['USD'];
4+
Object.entries(data.rates).forEach(([currency, rate]) => {
5+
window.exchangeRates[currency] = +((rate / baseRate).toFixed(5));
6+
});
7+
});

0 commit comments

Comments
 (0)