| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561 |
- /**
- * 国家图标组件
- * @邠心vbe on 2021/10/08
- */
- import React from 'react';
- import { Image, StyleSheet, Text } from 'react-native';
- import countries from './countrysLocale.json';
- import Button from './Button';
- import apiUser from '../api/apiUser';
- import { i18nUtil } from '../i18n';
- import TextView from './TextView';
- const RNCountryList = {
- AD: require('../images/country/AD.png'),
- AE: require('../images/country/AE.png'),
- AF: require('../images/country/AF.png'),
- AG: require('../images/country/AG.png'),
- AI: require('../images/country/AI.png'),
- AL: require('../images/country/AL.png'),
- AM: require('../images/country/AM.png'),
- AO: require('../images/country/AO.png'),
- AR: require('../images/country/AR.png'),
- AS: require('../images/country/AS.png'),
- AT: require('../images/country/AT.png'),
- AU: require('../images/country/AU.png'),
- AW: require('../images/country/AW.png'),
- AX: require('../images/country/AX.png'),
- AZ: require('../images/country/AZ.png'),
- BA: require('../images/country/BA.png'),
- BB: require('../images/country/BB.png'),
- BD: require('../images/country/BD.png'),
- BE: require('../images/country/BE.png'),
- BF: require('../images/country/BF.png'),
- BG: require('../images/country/BG.png'),
- BH: require('../images/country/BH.png'),
- BI: require('../images/country/BI.png'),
- BJ: require('../images/country/BJ.png'),
- BL: require('../images/country/BL.png'),
- BM: require('../images/country/BM.png'),
- BN: require('../images/country/BN.png'),
- BO: require('../images/country/BO.png'),
- BQ: require('../images/country/BQ.png'),
- BR: require('../images/country/BR.png'),
- BS: require('../images/country/BS.png'),
- BT: require('../images/country/BT.png'),
- BW: require('../images/country/BW.png'),
- BY: require('../images/country/BY.png'),
- BZ: require('../images/country/BZ.png'),
- CA: require('../images/country/CA.png'),
- CC: require('../images/country/CC.png'),
- CD: require('../images/country/CD.png'),
- CF: require('../images/country/CF.png'),
- CG: require('../images/country/CG.png'),
- CH: require('../images/country/CH.png'),
- CI: require('../images/country/CI.png'),
- CK: require('../images/country/CK.png'),
- CL: require('../images/country/CL.png'),
- CM: require('../images/country/CM.png'),
- CN: require('../images/country/CN.png'),
- CO: require('../images/country/CO.png'),
- CR: require('../images/country/CR.png'),
- CU: require('../images/country/CU.png'),
- CV: require('../images/country/CV.png'),
- CW: require('../images/country/CW.png'),
- CX: require('../images/country/CX.png'),
- CY: require('../images/country/CY.png'),
- CZ: require('../images/country/CZ.png'),
- DE: require('../images/country/DE.png'),
- DJ: require('../images/country/DJ.png'),
- DK: require('../images/country/DK.png'),
- DM: require('../images/country/DM.png'),
- DO: require('../images/country/DO.png'),
- DZ: require('../images/country/DZ.png'),
- EC: require('../images/country/EC.png'),
- EE: require('../images/country/EE.png'),
- EG: require('../images/country/EG.png'),
- EH: require('../images/country/EH.png'),
- ER: require('../images/country/ER.png'),
- ES: require('../images/country/ES.png'),
- ET: require('../images/country/ET.png'),
- FI: require('../images/country/FI.png'),
- FJ: require('../images/country/FJ.png'),
- FK: require('../images/country/FK.png'),
- FM: require('../images/country/FM.png'),
- FO: require('../images/country/FO.png'),
- FR: require('../images/country/FR.png'),
- GA: require('../images/country/GA.png'),
- GB: require('../images/country/GB.png'),
- GD: require('../images/country/GD.png'),
- GE: require('../images/country/GE.png'),
- GF: require('../images/country/GF.png'),
- GG: require('../images/country/GG.png'),
- GH: require('../images/country/GH.png'),
- GI: require('../images/country/GI.png'),
- GM: require('../images/country/GM.png'),
- GN: require('../images/country/GN.png'),
- GP: require('../images/country/GP.png'),
- GQ: require('../images/country/GQ.png'),
- GR: require('../images/country/GR.png'),
- GT: require('../images/country/GT.png'),
- GU: require('../images/country/GU.png'),
- GW: require('../images/country/GW.png'),
- GY: require('../images/country/GY.png'),
- HK: require('../images/country/HK.png'),
- HN: require('../images/country/HN.png'),
- HR: require('../images/country/HR.png'),
- HT: require('../images/country/HT.png'),
- HU: require('../images/country/HU.png'),
- ID: require('../images/country/ID.png'),
- IE: require('../images/country/IE.png'),
- IL: require('../images/country/IL.png'),
- IM: require('../images/country/IM.png'),
- IN: require('../images/country/IN.png'),
- IO: require('../images/country/IO.png'),
- IQ: require('../images/country/IQ.png'),
- IR: require('../images/country/IR.png'),
- IS: require('../images/country/IS.png'),
- IT: require('../images/country/IT.png'),
- JE: require('../images/country/JE.png'),
- JM: require('../images/country/JM.png'),
- JO: require('../images/country/JO.png'),
- JP: require('../images/country/JP.png'),
- KE: require('../images/country/KE.png'),
- KG: require('../images/country/KG.png'),
- KH: require('../images/country/KH.png'),
- KI: require('../images/country/KI.png'),
- KM: require('../images/country/KM.png'),
- KN: require('../images/country/KN.png'),
- KP: require('../images/country/KP.png'),
- KR: require('../images/country/KR.png'),
- KS: require('../images/country/KS.png'),
- KW: require('../images/country/KW.png'),
- KY: require('../images/country/KY.png'),
- KZ: require('../images/country/KZ.png'),
- LA: require('../images/country/LA.png'),
- LB: require('../images/country/LB.png'),
- LC: require('../images/country/LC.png'),
- LI: require('../images/country/LI.png'),
- LK: require('../images/country/LK.png'),
- LR: require('../images/country/LR.png'),
- LS: require('../images/country/LS.png'),
- LT: require('../images/country/LT.png'),
- LU: require('../images/country/LU.png'),
- LV: require('../images/country/LV.png'),
- LY: require('../images/country/LY.png'),
- MA: require('../images/country/MA.png'),
- MC: require('../images/country/MC.png'),
- MD: require('../images/country/MD.png'),
- ME: require('../images/country/ME.png'),
- MF: require('../images/country/MF.png'),
- MG: require('../images/country/MG.png'),
- MH: require('../images/country/MH.png'),
- MK: require('../images/country/MK.png'),
- ML: require('../images/country/ML.png'),
- MM: require('../images/country/MM.png'),
- MN: require('../images/country/MN.png'),
- MO: require('../images/country/MO.png'),
- MP: require('../images/country/MP.png'),
- MQ: require('../images/country/MQ.png'),
- MR: require('../images/country/MR.png'),
- MS: require('../images/country/MS.png'),
- MT: require('../images/country/MT.png'),
- MU: require('../images/country/MU.png'),
- MV: require('../images/country/MV.png'),
- MW: require('../images/country/MW.png'),
- MX: require('../images/country/MX.png'),
- MY: require('../images/country/MY.png'),
- MZ: require('../images/country/MZ.png'),
- NA: require('../images/country/NA.png'),
- NC: require('../images/country/NC.png'),
- NE: require('../images/country/NE.png'),
- NF: require('../images/country/NF.png'),
- NG: require('../images/country/NG.png'),
- NI: require('../images/country/NI.png'),
- NL: require('../images/country/NL.png'),
- NO: require('../images/country/NO.png'),
- NP: require('../images/country/NP.png'),
- NR: require('../images/country/NR.png'),
- NU: require('../images/country/NU.png'),
- NZ: require('../images/country/NZ.png'),
- OM: require('../images/country/OM.png'),
- PA: require('../images/country/PA.png'),
- PE: require('../images/country/PE.png'),
- PF: require('../images/country/PF.png'),
- PG: require('../images/country/PG.png'),
- PH: require('../images/country/PH.png'),
- PK: require('../images/country/PK.png'),
- PL: require('../images/country/PL.png'),
- PM: require('../images/country/PM.png'),
- PR: require('../images/country/PR.png'),
- PS: require('../images/country/PS.png'),
- PT: require('../images/country/PT.png'),
- PW: require('../images/country/PW.png'),
- PY: require('../images/country/PY.png'),
- QA: require('../images/country/QA.png'),
- RE: require('../images/country/RE.png'),
- RO: require('../images/country/RO.png'),
- RS: require('../images/country/RS.png'),
- RU: require('../images/country/RU.png'),
- RW: require('../images/country/RW.png'),
- SA: require('../images/country/SA.png'),
- SB: require('../images/country/SB.png'),
- SC: require('../images/country/SC.png'),
- SD: require('../images/country/SD.png'),
- SE: require('../images/country/SE.png'),
- SG: require('../images/country/SG.png'),
- SH: require('../images/country/SH.png'),
- SI: require('../images/country/SI.png'),
- SJ: require('../images/country/SJ.png'),
- SK: require('../images/country/SK.png'),
- SL: require('../images/country/SL.png'),
- SM: require('../images/country/SM.png'),
- SN: require('../images/country/SN.png'),
- SO: require('../images/country/SO.png'),
- SR: require('../images/country/SR.png'),
- SS: require('../images/country/SS.png'),
- ST: require('../images/country/ST.png'),
- SV: require('../images/country/SV.png'),
- SX: require('../images/country/SX.png'),
- SY: require('../images/country/SY.png'),
- SZ: require('../images/country/SZ.png'),
- TC: require('../images/country/TC.png'),
- TD: require('../images/country/TD.png'),
- TG: require('../images/country/TG.png'),
- TH: require('../images/country/TH.png'),
- TJ: require('../images/country/TJ.png'),
- TK: require('../images/country/TK.png'),
- TL: require('../images/country/TL.png'),
- TM: require('../images/country/TM.png'),
- TN: require('../images/country/TN.png'),
- TO: require('../images/country/TO.png'),
- TR: require('../images/country/TR.png'),
- TT: require('../images/country/TT.png'),
- TV: require('../images/country/TV.png'),
- TW: require('../images/country/TW.png'),
- TZ: require('../images/country/TZ.png'),
- UA: require('../images/country/UA.png'),
- UG: require('../images/country/UG.png'),
- US: require('../images/country/US.png'),
- UY: require('../images/country/UY.png'),
- UZ: require('../images/country/UZ.png'),
- VA: require('../images/country/VA.png'),
- VC: require('../images/country/VC.png'),
- VE: require('../images/country/VE.png'),
- VG: require('../images/country/VG.png'),
- VI: require('../images/country/VI.png'),
- VN: require('../images/country/VN.png'),
- VU: require('../images/country/VU.png'),
- WF: require('../images/country/WF.png'),
- WS: require('../images/country/WS.png'),
- YE: require('../images/country/YE.png'),
- YT: require('../images/country/YT.png'),
- ZA: require('../images/country/ZA.png'),
- ZM: require('../images/country/ZM.png'),
- ZW: require('../images/country/ZW.png')
- }
- //const RNCurrencyList = ['SG', 'US', 'MY', 'HK', 'AU', 'CA', 'PH', 'ID', 'NZ', 'JP']
- export const CountryIcon = (
- {
- style={},
- width=24,
- height=16,
- borderRadius=2,
- countryCode='SG'
- }
- ) => (
- <Image
- style={
- {
- width: width,
- height: height,
- borderRadius: borderRadius,
- ...style //Any image styles
- }
- }
- source={
- //**SG
- RNCountryList[countryCode ?? 'SG']
- }
- />
- )
- export const GetCountryList = (back) => {
- if (global.ComCountryList === undefined) {
- console.log('--------------------------------------------------------');
- console.log('--START--', 'GetCountryList');
- const list = []
- //const curl = []
- //console.log('原始国家', countries.length);
- apiUser.getCountryList().then(res => {
- if (res.data && res.data.length) {
- countries.forEach(items => {
- res.data.forEach(item => {
- if (item.countryCode == items.countryCode) {
- const country = {
- countryNum: item.callingCode,
- countryCode: item.countryCode,
- countryName: i18nUtil.analyzeLocaleData(items.countryNames, items.countryName),
- currency: item.currency,
- currencySign: item.currencySymbol
- };
- list.push(country);
- }
- })
- })
- if (list.length > 0) {
- global.ComCountryList = list;
- if (back) back(global.ComCountryList);
- }
- }
- }).catch(errs => {
- getLocaleCountryList(back)
- });
- } else {
- if (back) back(global.ComCountryList);
- }
- }
- const getLocaleCountryList = (back) => {
- const list = []
- countries.forEach(item => {
- if (RNCountryList[item.countryCode] !== undefined && item.region !== 'Antarctic' && item.subregion !== 'Polynesia' && !item.exclude) {
- //item.subregion === 'Eastern Asia' || item.subregion === 'South-Eastern Asia') {
- const country = {
- countryNum: item.callingCode[0],
- countryCode: item.countryCode,
- countryName: i18nUtil.analyzeLocaleData(item.countryNames, item.countryName),
- currencySign: item.currencySign,
- currency: item.currency[0]
- };
- list.push(country);
- /*if (RNCurrencyList.indexOf(item.countryCode) >= 0) {
- curl.push(country);
- }*/
- }
- })
- //console.log('最终国家', list.length);
- if (list.length > 0) {
- global.ComCountryList = list;
- //global.CurCountryList = curl;
- if (back) back(global.ComCountryList);
- }
- }
- export const GetCurrencyCountryList = (back) => {
- if (global.CurCountryList === undefined) {
- GetCountryList(list => {
- if (back) back(global.CurCountryList);
- })
- } else {
- if (back) back(global.CurCountryList);
- }
- }
- /**
- * 根据国家代码查询国家信息
- * @param {*} countryCode 国家代码
- * @returns 国家信息
- */
- export const GetCountryByCode = (countryCode, back) => {
- if (countryCode) {
- GetCountryList(list => {
- for (let item of list) {
- //console.log(item.countryCode, item.countryCode === countryCode);
- if (item.countryCode === countryCode) {
- if (back) back(item);
- break;
- }
- }
- })
- } else {
- if (back) back(undefined);
- }
- }
- /**
- * 根据国家代码查询国家信息
- * @param {*} countryCode 国家代码
- * @returns 国家信息
- */
- export const GetCountryByNum = (countryNum, back) => {
- if (global.ComCountryList && countryNum) {
- for (let item of global.ComCountryList) {
- //console.log(item.countryNum, item.countryNum === countryNum);
- if (item.countryNum === countryNum) {
- if (back) back(item);
- break;
- }
- }
- } else {
- if (back) back(undefined);
- }
- }
- /**
- * CallingCode下拉框组件
- * @param {*} param0 国家信息{country, value, onClick}
- * @returns 下拉框组件
- */
- export const CountryDropNum = ({country, value, onClick}) => {
- return (
- <Button
- style={styles.countryDropItem}
- viewStyle={styles.countryDropItemView}
- onClick={onClick}>
- <CountryIcon
- borderRadius={0}
- style={styles.iconBorder}
- countryCode={country.countryCode}/>
- <TextView style={styles.countryDropItemText}>{country.countryName} ({'+'+country.countryNum})</TextView>
- { value == country.countryNum &&
- <MaterialIcons
- name='check-circle'
- color={colorAccent}
- size={20}/>
- }
- </Button>
- )
- }
- /**
- * 国家名称下拉框组件
- * @param {*} param0 国家信息{country, value, onClick}
- * @returns 下拉框组件
- */
- export const CountryDropCode = ({country, value, onClick}) => {
- return (
- <Button
- style={styles.countryDropItem}
- viewStyle={styles.countryDropItemView}
- onClick={onClick}>
- <CountryIcon
- style={styles.iconBorder}
- borderRadius={0}
- countryCode={country.countryCode}/>
- <TextView style={styles.countryDropItemText}>{country.countryName}</TextView>
- { value == country.countryCode &&
- <MaterialIcons
- name='check-circle'
- color={colorAccent}
- size={20}/>
- }
- </Button>
- )
- }
- /**
- * 货币符号下拉框组件
- * @param {*} param0 国家信息{country, value, onClick}
- * @returns 下拉框组件
- */
- export const CountryDropCurrency = ({country, value, onClick}) => {
- return (
- <Button
- style={styles.countryDropItem}
- viewStyle={styles.countryDropItemView}
- onClick={onClick}>
- <CountryIcon
- style={styles.iconBorder}
- borderRadius={0}
- countryCode={country.countryCode}/>
- <TextView style={styles.countryDropItemText}>{country.countryName} ({country.currencySign})</TextView>
- { value == country.countryCode
- ? <MaterialIcons
- name='check-circle'
- color={colorAccent}
- size={20}/>
- : <TextView style={styles.countryExchangeRate}>{country.exchangeRate}</TextView>
- }
- </Button>
- )
- }
- export const TestCountryFilter = () => {
- console.log("国家列表");
- console.log(countries.length, countryNew.length, countryAll.length);
- return
- const list = [], lang = {}
- countries.forEach(item => {
- for (let i of countryNew) {
- if (i.countryCode == item.countryCode) {
- const country = Object.assign({}, i);
- const names = i.countryNames;
- /*delete country.countryNames;
- country.countryNames = {
- cs: names.ces,//捷克
- en: names.common,//英语
- et: names.est,//爱沙尼亚
- cy: names.cym,//威尔士
- de: names.deu,//德国
- fi: names.fin,//芬兰
- fr: names.fra,//法国
- hr: names.hrv,//克罗地亚
- it: names.ita,//意大利
- ja: names.jpn,//日本
- ko: names.kor,//韩国
- km: names.common,//柬埔寨
- my: names.common,//缅甸
- nl: names.nld,//荷兰
- pl: names.pol,//波兰
- pt: names.por,//葡萄牙
- ru: names.rus,//俄罗斯
- sk: names.slk,//斯洛伐克
- es: names.spa,//西班牙
- th: langs[country.countryCode],//泰国
- ur: names.urd,//巴基斯坦-乌尔都语
- vi: names.common,//越南
- zh: names.zho,//中文
- }*/
- country.countryNames={
- ...names,
- hr: names.hr ?? names.en,
- it: names.it ?? names.en,
- ja: names.ja ?? names.en
- }
- lang[country.countryCode] = names.zho
- list.push(country);
- break;
- }
- }
- })
- console.log('====================================');
- console.log(list);
- console.log('====================================');
- //console.log(lang);
- }
- const styles = StyleSheet.create({
- countryDropItem: {
- borderRadius: 0,
- backgroundColor: colorLight
- },
- countryDropItemView: {
- flex: 1,
- height: 50,
- paddingLeft: 16,
- paddingRight: 16,
- alignItems: 'center',
- flexDirection: 'row'
- },
- countryDropItemText: {
- flex: 1,
- color: textPrimary,
- fontSize: 14,
- paddingLeft: 16
- },
- countryExchangeRate: {
- color: '#999',
- fontSize: 10,
- },
- iconBorder: {
- borderWidth: 1,
- borderColor: 'rgba(100, 100, 100, .1)'
- },
- payIcon: {
- width: 50,
- height: 25
- }
- })
|