From e1e51991ad91c14fa00c5cf46f95e514f676ac4d Mon Sep 17 00:00:00 2001
From: 李凌 <344137771@qq.com>
Date: Fri, 19 Sep 2025 18:58:56 +0800
Subject: [PATCH] 1

---
 src/i18n/Deutsch.js                                            |    5 
 src/i18n/Portuguese.js                                         |    5 
 src/components/application/application.vue                     |  141 ++--
 src/views/C2C/c2cOrder/order-generation/orderGeneration.vue    |    8 
 src/i18n/th.js                                                 |    5 
 src/views/login/index.vue                                      |   34 +
 src/views/my/assets.vue                                        |   20 
 src/i18n/Italy.js                                              |    5 
 src/i18n/Japanese.js                                           |    5 
 src/i18n/vi.js                                                 |    5 
 src/i18n/en.js                                                 |    5 
 src/i18n/zhcn.js                                               |    5 
 src/views/C2C/c2cOrder/components/appeal/AppealWaiting.vue     |   52 
 src/views/cryptos/AboutUs/index.vue                            |    8 
 src/service/login.api.js                                       |    2 
 src/service/user.api.js                                        |   11 
 src/i18n/Spanish.js                                            |    5 
 src/i18n/korean.js                                             |    5 
 src/views/C2C/c2c-trade/components/TradeSuccessDetail.vue      |    7 
 src/views/safety/index.vue                                     |   10 
 src/views/C2C/c2c-trade/page/SellGenerate.vue                  |   21 
 src/views/C2C/c2c-order-list/components/TradeSuccessDetail.vue |    7 
 src/views/my/index.vue                                         |    3 
 src/components/Transform/trade-order-area/index.vue            |    8 
 src/i18n/fa.js                                                 |    5 
 src/views/cryptos/AccountChange/index.vue                      |   13 
 src/components/Transform/ex-header/index.vue                   |    7 
 src/views/cryptos/TrendDetails/index.vue                       |    7 
 src/views/ICO/ico.vue                                          |   93 +-
 src/views/resetVerify/index.vue                                |   24 
 src/views/homePage/index.vue                                   |    2 
 src/i18n/cn.js                                                 |    5 
 src/router/index.js                                            |    7 
 src/views/cryptos/Exchange/exchangePage.vue                    |    6 
 src/views/order/order-submit.vue                               |   13 
 src/components/Transform/mining-exchange-input/index.vue       |    8 
 src/service/request.js                                         |    1 
 src/components/Transform/mining-account/index.vue              |  523 ++++++++--------
 src/views/cryptos/Withdraw/withdrawSumbit.vue                  |  154 ++--
 src/views/safety/resetPhoneEmail.vue                           |  401 ++++++++++++
 src/views/register/index.vue                                   |    7 
 src/utils/utis.js                                              |    9 
 src/components/Transform/application/application.vue           |    7 
 src/views/cryptos/Recharge/rechargeSubmit.vue                  |  204 +++---
 src/views/cryptos/Recharge/rechargePage.vue                    |    6 
 src/components/Transform/cryptos-trade-deep-data/index.vue     |   12 
 46 files changed, 1,258 insertions(+), 638 deletions(-)

diff --git a/src/components/Transform/application/application.vue b/src/components/Transform/application/application.vue
index 7363c0c..0ea73c0 100644
--- a/src/components/Transform/application/application.vue
+++ b/src/components/Transform/application/application.vue
@@ -37,6 +37,7 @@
 import { Image as VanImage } from 'vant';
 import assetsHead from "@/components/Transform/assets-head/index.vue";
 import { dataTimeEx } from '@/utils/utis'
+import { customerServiceUrl } from "@/config";
 export default {
   name: 'rechargeSubmit',
   components: {
@@ -70,7 +71,11 @@
       this.time = dataTimeEx(Date.parse(new Date()), true);
     },
     tokefu() {
-      this.$router.push('/customerService')
+      if (customerServiceUrl) {
+        window.location.href = customerServiceUrl;
+      } else {
+        this.$router.push('/customerService')
+      }
     }
   }
 }
diff --git a/src/components/Transform/cryptos-trade-deep-data/index.vue b/src/components/Transform/cryptos-trade-deep-data/index.vue
index 820cde7..35c354c 100644
--- a/src/components/Transform/cryptos-trade-deep-data/index.vue
+++ b/src/components/Transform/cryptos-trade-deep-data/index.vue
@@ -7,12 +7,12 @@
       </div>
       <div class="text-right items-end justify-end">
         <div class="">{{ $t('数量') }}</div>
-        <div class="mt-5">({{ symbol_data.toUpperCase() || '--' }})</div>
+        <div class="mt-5">({{ symbol_name.toUpperCase() || '--' }})</div>
       </div>
     </div>
 
-    <div v-if="showType == 0 || showType == 2" class="flex justify-between pt-6 font-26" v-for="(item, index) in redData"
-      :key="item + index" @click="onPrice(item.price)" :style="{
+    <div v-if="showType == 0 || showType == 2" class="flex justify-between pt-6 font-26"
+      v-for="(item, index) in redData" :key="item + index" @click="onPrice(item.price)" :style="{
         'background': `linear-gradient(to right,${THEME == 'dark' ? '#131A2E' : '#fff'} 0%` +
           (item.amount / greenData[greenData.length - 1].amount) * 100 + '%,rgba(246,70,93,.1) ' +
           (item.amount / greenData[greenData.length - 1].amount) * 100 + '%,rgba(246,70,93,.1) 100%)'
@@ -44,7 +44,7 @@
 
 <script>
 import { WS_URL } from '@/config'
-import { fixDate } from "@/utils/utis";
+import { fixDate, strToArr } from "@/utils/utis";
 import { THEME } from '@/config/theme'
 import { _getHomeList } from '@/service/home.api'
 import { mapGetters } from 'vuex'
@@ -79,7 +79,8 @@
       greenData: init,
       redData: init,
       socket: null,
-      symbol_data: ''
+      symbol_data: '',
+      symbol_name: '',
     }
   },
   mounted() {
@@ -111,6 +112,7 @@
     getHomeList() {
       _getHomeList(this.symbol).then((res) => {
         this.symbol_data = res[0].symbol_data
+        this.symbol_name = strToArr(res[0].name, '/')[0]
         let numberText = res[0].close.toString()
         let numberLength = (numberText.substring(numberText.indexOf('.') + 1, numberText.length)).length
 
diff --git a/src/components/Transform/ex-header/index.vue b/src/components/Transform/ex-header/index.vue
index 1e5dd35..e1a7edf 100644
--- a/src/components/Transform/ex-header/index.vue
+++ b/src/components/Transform/ex-header/index.vue
@@ -14,6 +14,7 @@
 
 <script>
 import { THEME } from '@/config/theme'
+import { customerServiceUrl } from "@/config";
 export default {
   props: {
     unread_num: {
@@ -50,7 +51,11 @@
       this.tabList[index]['data'] = this.tabList[index]['data'].filter(item => item.symbol.includes(this.keywords))
     },
     tokefu() {
-      this.$router.push('/customerService')
+      if (customerServiceUrl) {
+        window.location.href = customerServiceUrl;
+      } else {
+        this.$router.push('/customerService')
+      }
     }
   }
 }
diff --git a/src/components/Transform/mining-account/index.vue b/src/components/Transform/mining-account/index.vue
index ab2af43..49ddca7 100644
--- a/src/components/Transform/mining-account/index.vue
+++ b/src/components/Transform/mining-account/index.vue
@@ -37,287 +37,292 @@
 </template>
 
 <script>
-	import MiningExchangeInput from "../mining-exchange-input/index.vue";
-	import {
-		Grid,
-		GridItem,
-		Popup,
-		Icon,
-		showToast
-	} from "vant";
-	// import { mapState } from "vuex";
-	import {
-		_exchangeRage,
-		_getAllWallet,
-		_initWidthdrawl,
-		_widthdrawl,
-		_records
-	} from "@/service/fund.api";
-	import {
-		mapGetters
-	} from "vuex";
-	import {
-		List,
-		PullRefresh
-	} from 'vant';
-	import {
-		debounce
-	} from '@/utils'
-	export default {
-		name: "MiningAcccount",
-		components: {
-			[Grid.name]: Grid,
-			[GridItem.name]: GridItem,
-			[Popup.name]: Popup,
-			[Icon.name]: Icon,
-			MiningExchangeInput,
-			[List.name]: List,
-			[PullRefresh.name]: PullRefresh
+import MiningExchangeInput from "../mining-exchange-input/index.vue";
+import {
+	Grid,
+	GridItem,
+	Popup,
+	Icon,
+	showToast
+} from "vant";
+// import { mapState } from "vuex";
+import {
+	_exchangeRage,
+	_getAllWallet,
+	_initWidthdrawl,
+	_widthdrawl,
+	_records
+} from "@/service/fund.api";
+import {
+	mapGetters
+} from "vuex";
+import {
+	List,
+	PullRefresh
+} from 'vant';
+import {
+	debounce
+} from '@/utils'
+export default {
+	name: "MiningAcccount",
+	components: {
+		[Grid.name]: Grid,
+		[GridItem.name]: GridItem,
+		[Popup.name]: Popup,
+		[Icon.name]: Icon,
+		MiningExchangeInput,
+		[List.name]: List,
+		[PullRefresh.name]: PullRefresh
+	},
+	props: {
+		show: {
+			type: Boolean,
+			default: false,
 		},
-		props: {
-			show: {
-				type: Boolean,
-				default: false,
+	},
+	computed: {
+		...mapGetters('user', ['userInfo']),
+		tabList() {
+			return [{
+				id: 1,
+				text: this.$t('提幣')
 			},
+			{
+				id: 2,
+				text: this.$t('交易記錄')
+			}
+			]
 		},
-		computed: {
-			...mapGetters('user', ['userInfo']),
-			tabList() {
-				return [{
-						id: 1,
-						text: this.$t('提幣')
-					},
-					{
-						id: 2,
-						text: this.$t('交易記錄')
-					}
-				]
-			},
-			addr() {
-				const account = this.userInfo.account
-				return account && account.substr(0, 5) + '********' + account.substr(account.length - 5)
-			},
-			amountAvailable() {
-				console.log(this.form.symbol)
-				console.log(this.wallets)
-				let res
-				let dataInfo = this.wallets.find(item => item.symbol_data.toUpperCase() === this.form.symbol.toUpperCase())
+		addr() {
+			const account = this.userInfo.account
+			return account && account.substr(0, 5) + '********' + account.substr(account.length - 5)
+		},
+		amountAvailable() {
+			// console.log("ddddddddddddddddddd", this.form.iconImg1, this.wallets)
+			let res
+			let dataInfo = this.wallets.find(item => item.symbol_data.toUpperCase() == this.form.iconImg1.toUpperCase())
 
-				if (dataInfo) {
-					res = dataInfo.usable
-				} else {
-					res = 0
-				}
-				return res
-			},
+			if (dataInfo) {
+				res = dataInfo.usable
+			} else {
+				res = 0
+			}
+
+			return res
 		},
-		data() {
-			return {
-				showPopup: false,
-				activeRecord: 'exchange',
-				valueTwo: 0,
+	},
+	data() {
+		return {
+			showPopup: false,
+			activeRecord: 'exchange',
+			valueTwo: 0,
+			rate: 0,
+			form: { // 闪兑
+				symbol: 'USDC',
+				symbol_to: 'USDT',
+				name: '',
+				volume: '',
 				rate: 0,
-				form: { // 闪兑
-					symbol: 'USDC',
-					symbol_to: 'USDT',
-					volume: '',
-					rate: 0,
-					iconImg2: '',
-					iconImg1: '',
-					symbol_ex: '',
-					symbol_to_ex: '',
+				iconImg2: '',
+				iconImg1: '',
+				symbol_ex: '',
+				symbol_to_ex: '',
 
-				},
-				interval: null,
-				actions: [],
-				balance: 0, // 质押余额
-				page: 1,
-				loading: false, // 当loading为true时,转圈圈
-				finished: false, // 数据是否请求结束,结束会先显示'已经全部加载完毕'
-				noData: false, // 如果没有数据,显示暂无数据
-				wallets: [], // 钱包列表
-				active: 0,
+			},
+			interval: null,
+			actions: [],
+			balance: 0, // 质押余额
+			page: 1,
+			loading: false, // 当loading为true时,转圈圈
+			finished: false, // 数据是否请求结束,结束会先显示'已经全部加载完毕'
+			noData: false, // 如果没有数据,显示暂无数据
+			wallets: [], // 钱包列表
+			active: 0,
+		}
+	},
+	created() {
+		let obj = {
+			symbolType: 'cryptos'
+		}
+		_getAllWallet(obj).then(data => {
+			this.actions = []
+			data.extends.map(item => {
+				this.actions.push({
+					symbol: item.symbol,
+					name: item.name,
+					symbol_data: item.symbol,
+					usable: item.usable,
+					usdt: item.usdt,
+					symbol_data: item.symbol_data
+				})
+			})
+			this.wallets = data.extends
+			console.log("this.actions", this.actions[0].symbol_data);
+			this.form.symbol = this.strToArr(this.actions[0].name, '/')[0]
+			this.form.symbol_to = this.strToArr(this.actions[1].name, '/')[0]
+			this.form.iconImg1 = this.actions[0].symbol_data
+			this.form.iconImg2 = this.actions[1].symbol_data
+			this.form.symbol_ex = this.actions[0].symbol
+			this.form.symbol_to_ex = this.actions[1].symbol
+
+		})
+	},
+	methods: {
+		onMax() { // 最大
+			if (this.amountAvailable / 1) {
+				this.form.volume = this.amountAvailable
+				this.debounceFn()
+			} else {
+				showToast(this.$t('你没有可提数量'))
 			}
 		},
-		created() {
-			let obj = {
-				symbolType: 'cryptos'
+		onInput(e) { // 获取最新
+			this.form.volume = e.target.value
+			this.clearInterval()
+			if (this.form.volume == '') {
+				this.form.get_volume = ''
+			} else {
+				this.debounceFn()
 			}
-			_getAllWallet(obj).then(data => {
-				this.actions = []
-				data.extends.map(item => {
-					this.actions.push({
-						symbol: item.symbol,
-						name: item.symbol,
-						symbol_data: item.symbol,
-						usable: item.usable,
-						usdt: item.usdt,
-						symbol_data: item.symbol_data
-					})
-				})
-				this.wallets = data.extends
-				console.log("this.actions",this.actions[0].symbol_data);
-				this.form.symbol = this.actions[0].symbol_data
-				this.form.symbol_to = this.actions[1].symbol_data
-				this.form.iconImg1 = this.actions[0].symbol_data
-				this.form.iconImg2 = this.actions[1].symbol_data
-				this.form.symbol_ex = this.actions[0].symbol
-				this.form.symbol_to_ex = this.actions[1].symbol
+		},
+		debounceFn: debounce(function () {
 
+			this.fetchRate(true)
+		}, 300),
+		fetchRate(callback) { // interval
+			let obj = {
+				symbol: this.form.symbol_ex,
+				symbol_to: this.form.symbol_to_ex,
+				volume: this.form.volume
+			}
+			_exchangeRage(obj).then(data => {
+				const {
+					get_rate
+				} = data
+				this.form.rate = get_rate
+				this.clearInterval()
+				if (callback && typeof callback === 'function') {
+					callback()
+				}
 			})
 		},
-		methods: {
-			onMax() { // 最大
-				if (this.amountAvailable / 1) {
-					this.form.volume = this.amountAvailable
-					this.debounceFn()
-				} else {
-					showToast(this.$t('你没有可提数量'))
-				}
-			},
-			onInput(e) { // 获取最新
-				this.form.volume = e.target.value
-				this.clearInterval()
-				if (this.form.volume == '') {
-					this.form.get_volume = ''
-				} else {
-					this.debounceFn()
-				}
-			},
-			debounceFn: debounce(function() {
+		onSwitch() { // 交换
+			const temp = this.form.symbol
+			this.form.symbol = this.form.symbol_to
+			this.form.symbol_to = temp
+			const tempImg = this.form.iconImg1
+			this.form.iconImg1 = this.form.iconImg2
+			this.form.iconImg2 = tempImg
+			const tempsymbol = this.form.symbol_ex
+			this.form.symbol_ex = this.form.symbol_to_ex
+			this.form.symbol_to_ex = tempsymbol
 
-				this.fetchRate(true)
-			}, 300),
-			fetchRate(callback) { // interval
-				let obj = {
-					symbol: this.form.symbol_ex,
-					symbol_to: this.form.symbol_to_ex,
-					volume: this.form.volume
-				}
-				_exchangeRage(obj).then(data => {
-					const {
-						get_rate
-					} = data
-					this.form.rate = get_rate
-					this.clearInterval()
-					if (callback && typeof callback === 'function') {
-						callback()
-					}
-				})
-			},
-			onSwitch() { // 交换
-				const temp = this.form.symbol
-				this.form.symbol = this.form.symbol_to
-				this.form.symbol_to = temp
-				const tempImg = this.form.iconImg1
-				this.form.iconImg1 = this.form.iconImg2
-				this.form.iconImg2 = tempImg
-				const tempsymbol = this.form.symbol_ex
-				this.form.symbol_ex = this.form.symbol_to_ex
-				this.form.symbol_to_ex = tempsymbol
-				
+			this.form.volume = ''
+			console.log("this.form", this.form);
+			this.clearInterval()
+		},
+		onSelect(type, evt) { // 选择
+			if (evt.type == 0) {
+				this.form['symbol'] = this.strToArr(evt.item.name, '/')[0]
+				this.form['iconImg1'] = evt.item.symbol_data
+				this.form['symbol_ex'] = evt.item.symbol
+			} else {
+				this.form['symbol_to'] = this.strToArr(evt.item.name, '/')[0]
+				this.form['iconImg2'] = evt.item.symbol_data
+				this.form['symbol_to_ex'] = evt.item.symbol
+			}
+			if (this.form.symbol !== this.form.symbol_to) {
 				this.form.volume = ''
-				console.log("this.form",this.form);
-				this.clearInterval()
-			},
-			onSelect(type, evt) { // 选择
-				if (evt.type == 0) {
-					this.form['symbol'] = evt.item.symbol_data
-					this.form['iconImg1'] = evt.item.symbol_data
-					this.form['symbol_ex'] = evt.item.symbol
-				} else {
-					this.form['symbol_to'] = evt.item.symbol_data
-					this.form['iconImg2'] = evt.item.symbol_data
-					this.form['symbol_to_ex'] = evt.item.symbol
-				}
-				if (this.form.symbol !== this.form.symbol_to) {
-					this.form.volume = ''
-				}
-				this.clearInterval()
-			},
-			onConfirm() { // 闪兑
-				this.clearInterval()
-				if (this.form.volume == '') {
-					showToast(this.$t('请输入数量'));
-				} else {
-					this.fetchRate(() => {
-						this.$emit("exchange", this.form);
-					})
-				}
-			},
-			clearInterval() { // 清除定时器
-				clearInterval(this.interval)
-				this.interval = null
+			}
+			this.clearInterval()
+		},
+		onConfirm() { // 闪兑
+			this.clearInterval()
+			if (this.form.volume == '') {
+				showToast(this.$t('请输入数量'));
+			} else {
+				this.fetchRate(() => {
+					this.$emit("exchange", this.form);
+				})
 			}
 		},
-		beforeUnmount() {
-			// console.log('beforeDestroy')
-			this.clearInterval()
-		}
-	};
+		clearInterval() { // 清除定时器
+			clearInterval(this.interval)
+			this.interval = null
+		},
+		strToArr(str, separator = ',') {
+			if (typeof str !== 'string') return [];
+			return str.split(separator);
+		},
+	},
+	beforeUnmount() {
+		// console.log('beforeDestroy')
+		this.clearInterval()
+	}
+};
 </script>
 
 <style scoped lang="scss">
-	@import "@/assets/init.scss";
+@import "@/assets/init.scss";
 
-	#cryptos {
-		.account_card {
+#cryptos {
+	.account_card {
+		background: $inp-b !important;
+		border-radius: 2.5rem;
+		padding: 1.2rem 2.5rem;
+
+		div {
 			background: $inp-b !important;
-			border-radius: 2.5rem;
-			padding: 1.2rem 2.5rem;
-
-			div {
-				background: $inp-b !important;
-			}
-		}
-
-		.exchange-btn {
-			bottom: 48px;
-			left: 0;
-
-			font-size: 36px;
-
-			p {
-				border-radius: 4rem;
-			}
-		}
-
-		.active {
-			color: $black;
-
-			&:after {
-				content: '';
-				display: block;
-				position: absolute;
-				bottom: 0;
-				width: 140px;
-				height: 8px;
-				background: $active_line;
-				margin: 0 auto;
-			}
-		}
-
-		.convert-box {
-			background: $mainbgWhiteColor;
-			margin: -2rem auto;
-			border-radius: 50%;
-			display: flex;
-			align-items: center;
-			justify-content: center;
-			width: 6rem;
-			height: 6rem;
-			position: relative;
-
-			img {
-				width: 50%;
-				height: 50%;
-			}
-		}
-
-		.btnMain {
-			background: linear-gradient(90deg, #2C64D4 0%, #38AEEA 100%);
-			border-radius: 5px;
-			font-weight: bold;
 		}
 	}
+
+	.exchange-btn {
+		bottom: 48px;
+		left: 0;
+
+		font-size: 36px;
+
+		p {
+			border-radius: 4rem;
+		}
+	}
+
+	.active {
+		color: $black;
+
+		&:after {
+			content: '';
+			display: block;
+			position: absolute;
+			bottom: 0;
+			width: 140px;
+			height: 8px;
+			background: $active_line;
+			margin: 0 auto;
+		}
+	}
+
+	.convert-box {
+		background: $mainbgWhiteColor;
+		margin: -2rem auto;
+		border-radius: 50%;
+		display: flex;
+		align-items: center;
+		justify-content: center;
+		width: 6rem;
+		height: 6rem;
+		position: relative;
+
+		img {
+			width: 50%;
+			height: 50%;
+		}
+	}
+
+	.btnMain {
+		background: linear-gradient(90deg, #2C64D4 0%, #38AEEA 100%);
+		border-radius: 5px;
+		font-weight: bold;
+	}
+}
 </style>
\ No newline at end of file
diff --git a/src/components/Transform/mining-exchange-input/index.vue b/src/components/Transform/mining-exchange-input/index.vue
index a219b85..18fb87b 100644
--- a/src/components/Transform/mining-exchange-input/index.vue
+++ b/src/components/Transform/mining-exchange-input/index.vue
@@ -72,7 +72,7 @@
                   class="w-30 h-30 rounded-full mr-10 currency-icon" />
               </div>
               <div>
-                <div class="item-title textColor">{{ item.symbol_data.toUpperCase() }}</div>
+                <div class="item-title textColor">{{ strToArr(item.name.toUpperCase(),'/')[0] }}</div>
               </div>
             </div>
             <div class="text-right" v-if="activeIndex == 0">
@@ -234,7 +234,11 @@
       } else {
         this.currencyList = this.allCurrencyList
       }
-    }
+    },
+		strToArr(str, separator = ',') {
+			if (typeof str !== 'string') return [];
+			return str.split(separator);
+		},
   },
 };
 </script>
diff --git a/src/components/Transform/trade-order-area/index.vue b/src/components/Transform/trade-order-area/index.vue
index 99536b2..0b1966c 100644
--- a/src/components/Transform/trade-order-area/index.vue
+++ b/src/components/Transform/trade-order-area/index.vue
@@ -27,10 +27,10 @@
       <span>{{ title }}</span>
     </div>
 
-    <template  v-if="initClose.status / 1 === 0">
+    <!-- <template  v-if="initClose.status / 1 === 0">
       <div class="flex justify-center items-center h-66 buy-item">{{ $t('停牌中,禁止交易') }}</div>
-    </template>
-    <template v-else>
+    </template> -->
+    <!-- <template v-else> -->
       <div class="flex total-list">
         <div class="total-div" :class="[!isTotal ? 'active-bg' : '']" @click="checkIsTotal(false)">
           {{ $t('数量') }}
@@ -76,7 +76,7 @@
         :class="currentType === 'open' ? 'bg-green' : 'bg-red'" @click="order()">
         {{ currentType == 'open' ? $t('买入') : $t('卖出') }}
       </div>
-    </template>
+    <!-- </template> -->
   </div>
 </template>
 
diff --git a/src/components/application/application.vue b/src/components/application/application.vue
index a6e52cf..d175e46 100644
--- a/src/components/application/application.vue
+++ b/src/components/application/application.vue
@@ -6,7 +6,7 @@
       <div class="content-box">
         <div class="flex flex-col items-center justify-center mt96">
           <van-image width="162" height="142" src="'../../assets/image/assets-center/success.png'" />
-          <div class="font-45 font-700 success-title textColor">{{ title }} {{$t('申请已提交')}}</div>
+          <div class="font-45 font-700 success-title textColor">{{ title }} {{ $t('申请已提交') }}</div>
         </div>
         <div class="mb87">
           <div class="font-35 textColor">{{ title }} {{ $t('申请已提交') }}</div>
@@ -25,7 +25,8 @@
         <!--         </div>-->
       </div>
       <div class="btn-wrap">
-        <button class="btnMain text-white next-btn font-35" @click="goRouter('/cryptos/assetsCenter/rechargeWithdrawRecord')">
+        <button class="btnMain text-white next-btn font-35"
+          @click="goRouter('/cryptos/assetsCenter/rechargeWithdrawRecord')">
           {{ $t('查看') }} {{ title }} {{ $t('历史') }}</button>
       </div>
     </div>
@@ -35,86 +36,94 @@
 <script>
 import { Image as VanImage } from 'vant';
 import assetsHead from "@/components/Transform/assets-head/index.vue";
+import { customerServiceUrl } from "@/config";
 import { dataTimeEx } from '@/utils/utis'
 export default {
-    name:'rechargeSubmit',
-    components:{
-        assetsHead,
-        [VanImage.name]:VanImage
+  name: 'rechargeSubmit',
+  components: {
+    assetsHead,
+    [VanImage.name]: VanImage
+  },
+  props: {
+    title: {
+      type: String,
+      default: ""
+    }
+  },
+  data() {
+    return {
+      time: ''
+    }
+  },
+  created() {
+    this.getTime()
+  },
+  methods: {
+    onClickLeft() {
+      this.$router.go(-1);
     },
-    props:{
-        title:{
-            type:String,
-            default:""
-        }
+    goRouter(params) {
+      this.$router.push({
+        path: params
+      });
     },
-    data() {
-        return {
-          time:''
-        }
+    getTime() {
+      this.time = dataTimeEx(Date.parse(new Date()), true);
     },
-    created() {
-      this.getTime()
-    },
-    methods:{
-        onClickLeft() {
-            this.$router.go(-1);
-        },
-        goRouter(params) {
-            this.$router.push({
-                path:params
-            });
-        },
-        getTime(){
-          this.time = dataTimeEx(Date.parse(new Date()),true);
-        },
-      tokefu() {
+    tokefu() {
+      if (customerServiceUrl) {
+        window.location.href = customerServiceUrl;
+      } else {
         this.$router.push('/customerService')
       }
     }
+  }
 }
 </script>
 <style lang="scss" scoped>
 @import "@/assets/init.scss";
-#cryptos{
+
+#cryptos {
   .page-box {
-  box-sizing: border-box;
-}
-.btn-wrap {
-  position: fixed;
-  left: 0;
-  bottom: 86px;
-  width: 100%;
-  padding: 0 30px;
-  box-sizing: border-box;
-}
-.mt96 {
-    margin-top:114px;
-}
-.success-title{
-    margin-top:70px;
-    margin-bottom:115px;
-}
+    box-sizing: border-box;
+  }
 
-.mt14{
-    margin-top:14px;
-}
+  .btn-wrap {
+    position: fixed;
+    left: 0;
+    bottom: 86px;
+    width: 100%;
+    padding: 0 30px;
+    box-sizing: border-box;
+  }
 
-.mb87{
-     margin-bottom:87px;
-}
+  .mt96 {
+    margin-top: 114px;
+  }
 
-.service-text{
-    text-decoration:underline;
-}
-.next-btn{
-  width:100%;
-  height:96px;
-  border:none;
-  outline:none;
-  border-radius: 8px;
-}
-}
+  .success-title {
+    margin-top: 70px;
+    margin-bottom: 115px;
+  }
 
+  .mt14 {
+    margin-top: 14px;
+  }
 
+  .mb87 {
+    margin-bottom: 87px;
+  }
+
+  .service-text {
+    text-decoration: underline;
+  }
+
+  .next-btn {
+    width: 100%;
+    height: 96px;
+    border: none;
+    outline: none;
+    border-radius: 8px;
+  }
+}
 </style>
diff --git a/src/i18n/Deutsch.js b/src/i18n/Deutsch.js
index 7879f57..2f883f1 100644
--- a/src/i18n/Deutsch.js
+++ b/src/i18n/Deutsch.js
@@ -2836,4 +2836,9 @@
     "反洗钱协议": "Anti-Geldwäsche-Vereinbarung",
     "法律声明": "Rechtlicher Hinweis",
     "金融服务牌照": "Finanzdienstleistungslizenz",
+    "充值记录": "Aufladeprotokoll",
+    "当日": "Ist das",
+    "最低认购": "Mindestzeichnung",
+    "币种数量": "Menge der währung",
+    "进度": "Fortschritt",
 }
\ No newline at end of file
diff --git a/src/i18n/Italy.js b/src/i18n/Italy.js
index 5e705a5..854e456 100644
--- a/src/i18n/Italy.js
+++ b/src/i18n/Italy.js
@@ -2926,4 +2926,9 @@
     "反洗钱协议": "Accordo antiriciclaggio",
     "法律声明": "Dichiarazione legale",
     "金融服务牌照": "Licenza di servizi finanziari",
+    "充值记录": "Registro di ricarica",
+    "当日": "Oggi",
+    "最低认购": "Sottoscrizione minima",
+    "币种数量": "Menge der Währung",
+    "进度": "Fortschritt",
 }
\ No newline at end of file
diff --git a/src/i18n/Japanese.js b/src/i18n/Japanese.js
index 59cec67..2e584bc 100644
--- a/src/i18n/Japanese.js
+++ b/src/i18n/Japanese.js
@@ -2694,4 +2694,9 @@
     "反洗钱协议": "マネーロンダリング防止契約",
     "法律声明": "法的声明",
     "金融服务牌照": "金融サービスライセンス",
+    "充值记录": "入金記録",
+    "当日": "当日",
+    "最低认购": "最低申込",
+    "币种数量": "通貨数量",
+    "进度": "進捗",
 }
\ No newline at end of file
diff --git a/src/i18n/Portuguese.js b/src/i18n/Portuguese.js
index 3f1b56d..98fc45c 100644
--- a/src/i18n/Portuguese.js
+++ b/src/i18n/Portuguese.js
@@ -646,4 +646,9 @@
     "反洗钱协议": "Acordo de Prevenção à Lavagem de Dinheiro",
     "法律声明": "Declaração Legal",
     "金融服务牌照": "Licença de Serviços Financeiros",
+    "充值记录": "Registro de recarga",
+    "当日": "Hoje",
+    "最低认购": "Subscrição mínima",
+    "币种数量": "Quantidade de moeda",
+    "进度": "Progresso",
 }
\ No newline at end of file
diff --git a/src/i18n/Spanish.js b/src/i18n/Spanish.js
index 5eb6111..c2d9456 100644
--- a/src/i18n/Spanish.js
+++ b/src/i18n/Spanish.js
@@ -2609,4 +2609,9 @@
     "反洗钱协议": "Acuerdo de prevención de lavado de dinero",
     "法律声明": "Declaración legal",
     "金融服务牌照": "Licencia de servicios financieros",
+    "充值记录": "Registro de recarga",
+    "当日": "Hoy",
+    "最低认购": "Suscripción mínima",
+    "币种数量": "Cantidad de moneda",
+    "进度": "Progreso",
 }
\ No newline at end of file
diff --git a/src/i18n/cn.js b/src/i18n/cn.js
index f729a3e..db84cb5 100644
--- a/src/i18n/cn.js
+++ b/src/i18n/cn.js
@@ -2815,4 +2815,9 @@
     "反洗钱协议": "反洗錢協議",
     "法律声明": "法律聲明",
     "金融服务牌照": "金融服務牌照",
+    "充值记录": "充值記錄",
+    "当日": "當日",
+    "最低认购": "最低認購",
+    "币种数量": "幣種數量",
+    "进度": "進度",
 }
diff --git a/src/i18n/en.js b/src/i18n/en.js
index 77333d2..66c502b 100644
--- a/src/i18n/en.js
+++ b/src/i18n/en.js
@@ -2790,4 +2790,9 @@
     "反洗钱协议": "Anti-Money Laundering Agreement",
     "法律声明": "Legal Statement",
     "金融服务牌照": "Financial Services License",
+    "充值记录": "Recharge record",
+    "当日": "Today",
+    "最低认购": "Minimum subscription",
+    "币种数量": "Currency quantity",
+    "进度": "Progress",
 }
\ No newline at end of file
diff --git a/src/i18n/fa.js b/src/i18n/fa.js
index df3ba3a..60b1ee5 100644
--- a/src/i18n/fa.js
+++ b/src/i18n/fa.js
@@ -2733,4 +2733,9 @@
     "反洗钱协议": "Accord de lutte contre le blanchiment d'argent",
     "法律声明": "Mention légale",
     "金融服务牌照": "Licence de services financiers",
+    "充值记录": "Recharge record",
+    "当日": "Aujourd'hui",
+    "最低认购": "Souscription minimale",
+    "币种数量": "Menge der Währung",
+    "进度": "Fortschritt",
 }
\ No newline at end of file
diff --git a/src/i18n/korean.js b/src/i18n/korean.js
index f1e0f31..c632db7 100644
--- a/src/i18n/korean.js
+++ b/src/i18n/korean.js
@@ -2830,4 +2830,9 @@
     "反洗钱协议": "자금세탁 방지 계약",
     "法律声明": "법적 선언",
     "金融服务牌照": "금융 서비스 라이센스",
+    "充值记录": "충전 기록",
+    "当日": "당일",
+    "最低认购": "최소 구독",
+    "币种数量": "통화 수량",
+    "进度": "진행 상황",
 }
\ No newline at end of file
diff --git a/src/i18n/th.js b/src/i18n/th.js
index 508b51a..67f6317 100644
--- a/src/i18n/th.js
+++ b/src/i18n/th.js
@@ -2801,4 +2801,9 @@
     "反洗钱协议": "ข้อตกลงการป้องกันการฟอกเงิน",
     "法律声明": "คำชี้แจงทางกฎหมาย",
     "金融服务牌照": "ใบอนุญาตบริการทางการเงิน",
+    "充值记录": "บันทึกการเติมเงิน",
+    "当日": "วันนี้",
+    "最低认购": "การจองซื้อขั้นต่ำ",
+    "币种数量": "จำนวนเงินตรา",
+    "进度": "ความก้าวหน้า",
 }
\ No newline at end of file
diff --git a/src/i18n/vi.js b/src/i18n/vi.js
index d245399..c02257b 100644
--- a/src/i18n/vi.js
+++ b/src/i18n/vi.js
@@ -2780,4 +2780,9 @@
     "反洗钱协议": "Thỏa thuận chống rửa tiền",
     "法律声明": "Tuyên bố pháp lý",
     "金融服务牌照": "Giấy phép dịch vụ tài chính",
+    "充值记录": "Lịch sử nạp tiền",
+    "当日": "Ngày nay",
+    "最低认购": "Đăng ký tối thiểu",
+    "币种数量": "Số lượng tiền tệ",
+    "进度": "Tiến độ",
 }
\ No newline at end of file
diff --git a/src/i18n/zhcn.js b/src/i18n/zhcn.js
index fcf3e7b..ddafd11 100644
--- a/src/i18n/zhcn.js
+++ b/src/i18n/zhcn.js
@@ -2795,4 +2795,9 @@
     "反洗钱协议": "反洗钱协议",
     "法律声明": "法律声明",
     "金融服务牌照": "金融服务牌照",
+    "充值记录": "充值记录",
+    "当日": "当日",
+    "最低认购": "最低认购",
+    "币种数量": "币种数量",
+    "进度": "进度",
 }
\ No newline at end of file
diff --git a/src/router/index.js b/src/router/index.js
index 2df4040..7a7ef15 100644
--- a/src/router/index.js
+++ b/src/router/index.js
@@ -1425,6 +1425,13 @@
 				import( /* webpackChunkName: "changeFundsPassword" */ /* webpackPrefetch: true */
 					'@/views/changeFundsPassword/index.vue')
 		},
+		{ //重置邮箱/手机号
+			path: '/resetPhoneEmail',
+			name: 'resetPhoneEmail',
+			component: () =>
+				import( /* webpackChunkName: "changeFundsPassword" */ /* webpackPrefetch: true */
+					'@/views/safety/resetPhoneEmail.vue')
+		},
 		{ //绑定验证
 			path: '/bindVerify',
 			name: 'bindVerify',
diff --git a/src/service/login.api.js b/src/service/login.api.js
index 6e8a3f2..25fcccf 100644
--- a/src/service/login.api.js
+++ b/src/service/login.api.js
@@ -53,4 +53,4 @@
         method: "get",
         data: params
     })
-};
\ No newline at end of file
+};
diff --git a/src/service/request.js b/src/service/request.js
index 862e715..d7bf2ea 100644
--- a/src/service/request.js
+++ b/src/service/request.js
@@ -81,6 +81,7 @@
     case 403:   // 登录状态已过期,您可以继续留在该页面,或者重新登录 
       userStore.userInfo = {}
       store.state.user.userInfo = {}
+      showToast({ type: 'warning', message: i18n.global.t('请重新登录')})
       router.push({
         path: '/login'
       })
diff --git a/src/service/user.api.js b/src/service/user.api.js
index 2c3a0d6..65b3a7c 100644
--- a/src/service/user.api.js
+++ b/src/service/user.api.js
@@ -374,4 +374,13 @@
         method: "POST",
         params,
     })
-}
\ No newline at end of file
+}
+
+//重置账户密码
+export const _registerEorP = (params) => {
+    return request({
+        url: `${API_PREFIX}/user/resetUserName`,
+        method: METHODS.POST,
+        data: params
+    })
+};
\ No newline at end of file
diff --git a/src/utils/utis.js b/src/utils/utis.js
index 32ea1ce..cd7ade8 100644
--- a/src/utils/utis.js
+++ b/src/utils/utis.js
@@ -264,4 +264,11 @@
 
 export const handleImage = (url) => {
   return new URL(url, import.meta.url).href
-}
\ No newline at end of file
+}
+
+// 字符串转数组
+export const strToArr = (str, separator = ',') => {
+    if (typeof str !== 'string') return [];
+    return str.split(separator);
+}
+
diff --git a/src/views/C2C/c2c-order-list/components/TradeSuccessDetail.vue b/src/views/C2C/c2c-order-list/components/TradeSuccessDetail.vue
index e138a1f..55a6be6 100644
--- a/src/views/C2C/c2c-order-list/components/TradeSuccessDetail.vue
+++ b/src/views/C2C/c2c-order-list/components/TradeSuccessDetail.vue
@@ -92,6 +92,7 @@
 import OrderData from "./OrderData.vue";
 import Evaluation from "./Evaluation.vue";
 import otcApi from "@/service/otc";
+import { customerServiceUrl } from "@/config";
 export default {
   name: "TradeSuccessDetail",
   props: ['title', 'back'],
@@ -145,7 +146,11 @@
       return str
     },
     tokefu() {
-      this.$router.push('/customerService')
+      if (customerServiceUrl) {
+        window.location.href = customerServiceUrl;
+      } else {
+        this.$router.push('/customerService')
+      }
     }
   }
 }
diff --git a/src/views/C2C/c2c-trade/components/TradeSuccessDetail.vue b/src/views/C2C/c2c-trade/components/TradeSuccessDetail.vue
index 43a7e96..2424098 100644
--- a/src/views/C2C/c2c-trade/components/TradeSuccessDetail.vue
+++ b/src/views/C2C/c2c-trade/components/TradeSuccessDetail.vue
@@ -92,6 +92,7 @@
 import OrderData from "../../c2cOrder/components/order-data/OrderData.vue";
 import Evaluation from "../../c2cOrder/payment/components/Evaluation.vue";
 import otcApi from "@/service/otc";
+import { customerServiceUrl } from "@/config";
 export default {
   name: "TradeSuccessDetail",
   props: ['title', 'back'],
@@ -145,7 +146,11 @@
       return str
     },
     tokefu() {
-      this.$router.push('/customerService')
+      if (customerServiceUrl) {
+        window.location.href = customerServiceUrl;
+      } else {
+        this.$router.push('/customerService')
+      }
     }
   }
 }
diff --git a/src/views/C2C/c2c-trade/page/SellGenerate.vue b/src/views/C2C/c2c-trade/page/SellGenerate.vue
index 366f342..0d30d93 100644
--- a/src/views/C2C/c2c-trade/page/SellGenerate.vue
+++ b/src/views/C2C/c2c-trade/page/SellGenerate.vue
@@ -10,7 +10,7 @@
             <div class="font-48">{{ $t('等待买家付款') }}</div>
             <div class="mt-16 font-24">{{ $t('预计收到付款') }} <span style="color: #1D91FF">{{
               orderDetail.expireTime
-            }}{{ $t('分钟') }}</span>
+                }}{{ $t('分钟') }}</span>
             </div>
           </div>
           <div class="w-140 h-144">
@@ -87,9 +87,10 @@
           :create-order-time="fullTime(orderDetail.createTime)" :seller-name="orderDetail.c2cUserNickName"
           :unit-price="orderDetail.symbolValue" />
         <!--   已超时   -->
-        <cancel-success v-if="timeout" :title="$t('出售')" :count="orderDetail.coinAmount" :total-price="orderDetail.amount"
-          :order-number="orderDetail.orderNo" :create-order-time="fullTime(orderDetail.createTime)"
-          :seller-name="orderDetail.c2cUserNickName" :unit-price="orderDetail.symbolValue">
+        <cancel-success v-if="timeout" :title="$t('出售')" :count="orderDetail.coinAmount"
+          :total-price="orderDetail.amount" :order-number="orderDetail.orderNo"
+          :create-order-time="fullTime(orderDetail.createTime)" :seller-name="orderDetail.c2cUserNickName"
+          :unit-price="orderDetail.symbolValue">
           <template #title>{{ $t('已超时') }}</template>
           <template #desc>{{ $t('买家付款超时,您的订单已取消') }}</template>
         </cancel-success>
@@ -110,6 +111,7 @@
 import otcApi from "@/service/otc";
 
 import { formatTime } from "@/utils/utis";
+import { customerServiceUrl } from "@/config";
 import { SET_ORDER_INFO } from "@/store/const.store";
 
 export default {
@@ -141,10 +143,10 @@
     }
   },
   setup() {
-    onBeforeUnmount(()=>{
+    onBeforeUnmount(() => {
       let end = setInterval(function () { }, 10000);
       for (let i = 1; i <= end; i++) {
-          clearInterval(i);
+        clearInterval(i);
       }
     })
   },
@@ -214,7 +216,11 @@
       return formatTime(new Date(time), 'yyyy-MM-dd hh:mm:ss')
     },
     tokefu() {
-      this.$router.push('/customerService')
+      if (customerServiceUrl) {
+        window.location.href = customerServiceUrl;
+      } else {
+        this.$router.push('/customerService')
+      }
     }
   },
   watch: {
@@ -252,6 +258,7 @@
 
 <style lang="scss" scoped>
 @import "@/assets/css/copy2.scss";
+
 .border-ra {
   border-radius: 20px;
 }
diff --git a/src/views/C2C/c2cOrder/components/appeal/AppealWaiting.vue b/src/views/C2C/c2cOrder/components/appeal/AppealWaiting.vue
index 6473dbd..a28cfa8 100644
--- a/src/views/C2C/c2cOrder/components/appeal/AppealWaiting.vue
+++ b/src/views/C2C/c2cOrder/components/appeal/AppealWaiting.vue
@@ -1,41 +1,41 @@
 <template>
-<div class="w-full h-full">
-  <order-nav :title="$t('申述提交')" :back="false" @back="hide"/>
-  <div class="mt-70">
-    <div class="text-center">
-      <img class="w-122 h-122" style="margin: 0 auto;" src="@/assets/image/c2c/Group100.png" alt="">
-      <div class="mt-35 font-700 font-56 textColor">{{$t('提交成功')}}</div>
-      <div class="mt-10 font-28 text-grey">
-        <p class="mb-15">{{$t('您的资料已成功上传!')}}</p>
-        <p>{{$t('系统将在三个工作日内审核完毕,请您耐心等候。')}}</p>
+  <div class="w-full h-full">
+    <order-nav :title="$t('申述提交')" :back="false" @back="hide" />
+    <div class="mt-70">
+      <div class="text-center">
+        <img class="w-122 h-122" style="margin: 0 auto;" src="@/assets/image/c2c/Group100.png" alt="">
+        <div class="mt-35 font-700 font-56 textColor">{{ $t('提交成功') }}</div>
+        <div class="mt-10 font-28 text-grey">
+          <p class="mb-15">{{ $t('您的资料已成功上传!') }}</p>
+          <p>{{ $t('系统将在三个工作日内审核完毕,请您耐心等候。') }}</p>
+        </div>
       </div>
     </div>
+    <div class="px-33 mt-92">
+      <van-button color="#1D91FF" class="w-full h-100 rounded-xl" type="info" @click="tokefu">{{ $t('联系客服') }}
+      </van-button>
+      <div @click="hide" class="mt-34 font-36 text-center" style="color: #1D91FF">{{ $t('返回') }}</div>
+    </div>
   </div>
-  <div class="px-33 mt-92">
-    <van-button
-        color="#1D91FF"
-        class="w-full h-100 rounded-xl"
-        type="info"
-        @click="tokefu"
-    >{{$t('联系客服')}}
-    </van-button>
-    <div @click="hide" class="mt-34 font-36 text-center" style="color: #1D91FF">{{$t('返回')}}</div>
-  </div>
-</div>
 </template>
 
 <script>
-import {Button} from "vant";
+import { Button } from "vant";
 import OrderNav from "@/components/order-nav/OrderNav.vue";
+import { customerServiceUrl } from "@/config";
 export default {
   name: "AppealWaiting",
   components: {
-    [Button.name]:Button,
+    [Button.name]: Button,
     OrderNav,
   },
-  methods:{
+  methods: {
     tokefu() {
-      this.$router.push('/customerService')
+      if (customerServiceUrl) {
+        window.location.href = customerServiceUrl;
+      } else {
+        this.$router.push('/customerService')
+      }
     },
     hide() {
       console.log(213)
@@ -45,6 +45,4 @@
 }
 </script>
 
-<style scoped>
-
-</style>
+<style scoped></style>
diff --git a/src/views/C2C/c2cOrder/order-generation/orderGeneration.vue b/src/views/C2C/c2cOrder/order-generation/orderGeneration.vue
index 6172380..6ddbe2d 100644
--- a/src/views/C2C/c2cOrder/order-generation/orderGeneration.vue
+++ b/src/views/C2C/c2cOrder/order-generation/orderGeneration.vue
@@ -79,7 +79,7 @@
 import OrderNav from "@/components/order-nav/OrderNav.vue";
 import OrderData from "../components/order-data/OrderData.vue";
 import otcApi from "@/service/otc";
-
+import { customerServiceUrl } from "@/config";
 
 export default {
   name: "orderGeneration",
@@ -120,7 +120,11 @@
       this.$router.push({ path: '/chat' })
     },
     tokefu() {
-      this.$router.push('/customerService')
+      if (customerServiceUrl) {
+        window.location.href = customerServiceUrl;
+      } else {
+        this.$router.push('/customerService')
+      }
     }
   },
   computed: {
diff --git a/src/views/ICO/ico.vue b/src/views/ICO/ico.vue
index a632c8e..7049991 100644
--- a/src/views/ICO/ico.vue
+++ b/src/views/ICO/ico.vue
@@ -4,9 +4,9 @@
             <template v-slot:title>
                 <div>STO</div>
             </template>
-            <template v-slot:right>
+            <!-- <template v-slot:right>
                 <van-icon name="todo-list-o" @click="$router.push('/ICO/icoRecord')" />
-            </template>
+            </template> -->
         </fx-header>
 
         <div class="ico_list">
@@ -15,40 +15,51 @@
                     {{ i.name }}
                 </div>
                 <div class="item_2 flex justify-between">
-                    <div class="mr-5">{{$t('申购时间')}}</div>
+                    <div class="mr-5">{{ $t('申购时间') }}</div>
                     <div>{{ i.startDate }} ~ {{ i.endDate }}</div>
                 </div>
                 <div class="item_2 flex justify-between">
-                    <div>{{$t('listingDate')}}</div>
-                    <div>{{ i.marketDate }}</div>
+                    <div>{{ $t('最低认购') }}</div>
+                    <div>{{ i.minContribution }}</div>
                 </div>
                 <div class="item_2 flex justify-between">
-                    <div>{{$t('每张金额')}}</div>
+                    <div>{{ $t('币种数量') }}</div>
+                    <div>{{ i.maxContribution }}</div>
+                </div>
+                <div class="item_2 flex justify-between">
+                    <div>{{ $t('IssuePrice') }}</div>
                     <div>{{ i.unitAmount }}</div>
                 </div>
+
                 <div class="item_2 flex justify-between">
-                    <div>{{$t('每张手续费')}}</div>
-                    <div>{{ i.unitFee }}</div>
+                    <div>{{ $t('listingDate') }}</div>
+                    <div>{{ i.marketDate }}</div>
                 </div>
-                <div class="item_3 flex justify-center">
+                <div class="item_2 flex justify-between align-center">
+                    <div>{{ $t('进度') }}</div>
+                    <div style="width: 70%;padding-top: 1rem;">
+                        <van-progress :percentage="i.progressRate || 0" track-color="#ccc" />
+                    </div>
+                </div>
+                <!-- <div class="item_3 flex justify-center">
                     <van-button type="default" round size="large" @click="openBuy(i)">{{$t('申购')}}</van-button>
+                </div> -->
+            </div>
+        </div>
+
+
+        <!-- 购买弹窗 -->
+        <van-popup v-model:show="show" round>
+            <div class="buy_popup">
+                <div class="buy_title flex justify-center">{{ itemObj.symbol }}</div>
+
+                <van-field v-model="sgNum" type="digit" :label="$t('申购数量')" />
+
+                <div class="flex justify-center mt-5">
+                    <van-button type="default" size="large" round @click="buy">{{ $t('confirm') }}</van-button>
                 </div>
             </div>
-        </div>
-
-        
-    <!-- 购买弹窗 -->
-    <van-popup v-model:show="show" round >
-        <div class="buy_popup">
-            <div class="buy_title flex justify-center">{{ itemObj.symbol }}</div>
-
-            <van-field v-model="sgNum" type="digit" :label="$t('申购数量')" />
-
-            <div class="flex justify-center mt-5">
-                <van-button type="default" size="large" round @click="buy">{{$t('confirm')}}</van-button>
-            </div>
-        </div>
-    </van-popup>
+        </van-popup>
     </div>
 </template>
 
@@ -64,7 +75,7 @@
 _icoList().then(res => {
     icoList.value = res.records
 }).catch(err => {
-    showToast(err.msg)
+    // showToast(err.msg)
 })
 
 // 打开申购弹窗
@@ -79,9 +90,9 @@
 // 申购
 const buy = () => {
     let opt = {
-        icoProjectId:itemObj.value.id,
+        icoProjectId: itemObj.value.id,
         subscribeNums: sgNum.value,
-        subscriptionType:1,
+        subscriptionType: 1,
     }
     _icoSubscribe(opt).then(res => {
         showToast(t('submitSuccess'))
@@ -94,44 +105,50 @@
 </script>
 
 <style lang="scss" scoped>
-.ico{
+.ico {
     padding: 0rem 1.2rem 5rem 1.2rem;
     font-size: 1.5rem;
-    .buy_popup{
+
+    .buy_popup {
         width: 40rem;
         padding: 1rem;
 
-        .buy_title{
+        .buy_title {
             font-size: 2.5rem;
             font-weight: 700;
             border-bottom: #aaa solid 1px;
             padding: 1rem;
         }
     }
-    
-    .ico_list{
+
+    .ico_list {
         padding: 1rem 0rem;
-        .ico_item{
+
+        .ico_item {
             background-color: #eee;
-            padding:.5rem 1rem;
+            padding: .5rem 1rem;
             border: #aaa solid 1px;
             border-radius: 1rem;
-            .item_1{
+
+            .item_1 {
                 padding: 1rem .5rem;
                 border-bottom: #ccc solid 1px;
                 font-size: 2rem;
                 font-weight: 700;
             }
-            .item_2{
+
+            .item_2 {
                 padding: 1rem .5rem;
                 border-bottom: #ccc solid 1px;
                 font-size: 1.6rem;
                 font-weight: 500;
-                &>div:last-child{
+
+                &>div:last-child {
                     color: #999;
                 }
             }
-            .item_3{
+
+            .item_3 {
                 padding: .5rem;
             }
         }
diff --git a/src/views/cryptos/AboutUs/index.vue b/src/views/cryptos/AboutUs/index.vue
index 98f3cd2..65ff71a 100644
--- a/src/views/cryptos/AboutUs/index.vue
+++ b/src/views/cryptos/AboutUs/index.vue
@@ -43,6 +43,8 @@
           return this.$t('反洗钱协议')
         case '26':
           return this.$t('金融服务牌照')
+        case '27':
+          return this.$t('帮助中心')
         default:
           return this.$t('关于我们')
       }
@@ -66,9 +68,9 @@
       }
       _getAboutUs({
         content_code: this.serviceTerm,
-        // language: this.serviceTerm ? language : this.$i18n.locale,
-        language: 'en', // 强制英文,后台暂时只设置了英文
-        not_language: 1,
+        language: this.serviceTerm ? language : this.$i18n.locale,
+        // language: 'en', // 强制英文,后台暂时只设置了英文
+        // not_language: 1,
       }).then((res) => {
         this.content = res.content
         this.title = res.title
diff --git a/src/views/cryptos/AccountChange/index.vue b/src/views/cryptos/AccountChange/index.vue
index 477779f..3624b69 100644
--- a/src/views/cryptos/AccountChange/index.vue
+++ b/src/views/cryptos/AccountChange/index.vue
@@ -12,14 +12,15 @@
                 <!-- <img v-if="item.amount > 0" src="@/assets/image/assets-center/in.png" class="w-44 h-44 mr-20" />
                 <img v-else src="@/assets/image/assets-center/out.png" class="w-44 h-44 mr-20" /> -->
                 <div>
-                  <div class="font-32 textColor">{{ category[item.category] }}</div>
+                  <!-- <div class="font-32 textColor">{{ category[item.category] }}</div> -->
+                  <div class="font-32 textColor">{{ orderTypes[item.content_type] }}</div>
                   <div class="text-grey font-26 mt-6">{{ item.createTime }}(UTC+2)</div>
-                  <div class="text-grey font-26 mt-6">{{ orderTypes[item.content_type] }}</div>
+                  <!-- <div class="text-grey font-26 mt-6">{{ orderTypes[item.content_type] }}</div> -->
                 </div>
               </div>
               <div>
                 <div class="font-32 text-right" :class="item.amount > 0 ? 'text-green' : 'text-red'">{{
-                  item.amount }}&nbsp;{{ item.wallet_type.toUpperCase() }}</div>
+                  item.amount }}&nbsp;{{ (item.wallet_type || '').toUpperCase() }}</div>
                 <!-- <div class="text-grey font-28 mt-14">{{ item.createTimeStr }}</div> -->
                 <div class="text-grey font-28 mt-6 text-right">{{ item.amountAfter }}</div>
               </div>
@@ -54,8 +55,8 @@
       title: this.$t('选择账户类型'),
       selectData: [
         { title: this.$t('全部'), type: '' },
-        { title: this.$t('法币交易'), type: 'coin' },
-        { title: this.$t('合约交易'), type: 'contract' },
+        { title: this.$t('充值记录'), type: 'coin' },
+        // { title: this.$t('合约交易'), type: 'contract' },
         { title: this.$t('币币交易'), type: 'exchange' },
       ],
       type: "",//选中类型
@@ -144,6 +145,8 @@
         this.symbolType = this.$route.query.type
       }
       _fundRecord(this.type, this.page, this.symbolType).then(data => {
+        console.log("data", data);
+
         this.list = [...this.list, ...data]
         // console.log(logs)
         this.loading = false
diff --git a/src/views/cryptos/Exchange/exchangePage.vue b/src/views/cryptos/Exchange/exchangePage.vue
index 320e332..7c1cdea 100644
--- a/src/views/cryptos/Exchange/exchangePage.vue
+++ b/src/views/cryptos/Exchange/exchangePage.vue
@@ -29,7 +29,7 @@
                   class="w-70 h-70 rounded-full" />
               </div>
               <div class="text-grey font-28 mt-20">{{ $t('从') }}</div>
-              <div class="font-30 mt-30">{{ detail.volume }} {{ detail.symbol }}</div>
+              <div class="font-30 mt-30">{{ detail.volume }} {{ detail.name }}</div>
             </div>
             <img src="../../../assets/image/exchange/icon_6.png" class="w-30 h-20" style="margin-top:-65px" />
 
@@ -60,8 +60,8 @@
                   </li> -->
             <li class="flex justify-between font-28 mt-25">
               <span class="text-grey">{{ $t('汇率') }}</span>
-              <span class="textColor">1 {{ detail.symbol &&
-                detail.symbol.toUpperCase() }}≈{{ (detail.rate * 1).toFixed(5) }} {{ detail.symbol_to &&
+              <span class="textColor">1 {{ detail.name &&
+                detail.name.toUpperCase() }}≈{{ (detail.rate * 1).toFixed(5) }} {{ detail.symbol_to &&
                   detail.symbol_to.toUpperCase() }}</span>
             </li>
           </ul>
diff --git a/src/views/cryptos/Recharge/rechargePage.vue b/src/views/cryptos/Recharge/rechargePage.vue
index c11f4f5..4b94379 100644
--- a/src/views/cryptos/Recharge/rechargePage.vue
+++ b/src/views/cryptos/Recharge/rechargePage.vue
@@ -47,13 +47,13 @@
                                 item.blockchain_name }}</div>
                     </div>
                 </div>
-                <div>
+                <!-- <div>
                     <div class="font-28 textColor">{{ $t('付款凭证(上传支付详情截图)') }}</div>
                     <div class="img-box">
                         <van-uploader accept="image/*" v-model="fileList" multiple :max-count="1"
                             :before-read="beforeRead" :after-read="afterRead" />
                     </div>
-                </div>
+                </div> -->
             </div>
             <div class="hint-box">
                 <div class="pl-30 pr-30">
@@ -242,7 +242,7 @@
                     amount: this.amount,
                     from: this.enterAddress,
                     blockchain_name: this.blockchain_name,
-                    img: this.fileList[0].resURL,
+                    // img: this.fileList[0].resURL,
                     coin: this.coin,
                     channel_address: this.address,
                     tx: "",
diff --git a/src/views/cryptos/Recharge/rechargeSubmit.vue b/src/views/cryptos/Recharge/rechargeSubmit.vue
index 2de4979..fb2ac5d 100644
--- a/src/views/cryptos/Recharge/rechargeSubmit.vue
+++ b/src/views/cryptos/Recharge/rechargeSubmit.vue
@@ -1,88 +1,96 @@
 <template>
-    <!-- 充值或提现申请提交页面 -->
-    <div id="cryptos">
-      <assets-head title="" :goHome="true" />
-      <div class="pl-47 pr-47 page-box relative">
-        <div class="content-box">
-          <div class="flex flex-col items-center justify-center mt96">
-            <img width="162" height="142" src="@/assets/image/assets-center/success.png" />
-            <div class="font-45 font-700 success-title textColor">{{ title }} {{$t('申请已提交')}}</div>
-          </div>
-          <div class="mb87">
-            <div class="font-35 textColor">{{ title }} {{ $t('申请已提交') }}</div>
-            <div class="text-grey font-30 mt14">{{ time }}</div>
-          </div>
-          <div class="mb87">
-            <div class="font-35 textColor">{{ title }} {{ $t('申请已提交') }}</div>
-            <div class="flex mt14">
-              <div class="text-grey font-30">{{ $t('如果') }} {{ title }} {{ $t('未到账') }}?</div>
-              <div class="service-text font-30 text-blue" @click="tokefu">{{ $t('联系客服') }}</div>
-            </div>
-          </div>
-          <!--         <div class="mb87">-->
-          <!--           <div class="font-35">{{ title }} {{ $t('已成功') }}</div>-->
-          <!--           <div class="text-grey font-30 mt14">{{ $t('您会收到邮箱提醒') }}</div>-->
-          <!--         </div>-->
+  <!-- 充值或提现申请提交页面 -->
+  <div id="cryptos">
+    <assets-head title="" :goHome="true" />
+    <div class="pl-47 pr-47 page-box relative">
+      <div class="content-box">
+        <div class="flex flex-col items-center justify-center mt96">
+          <img width="162" height="142" src="@/assets/image/assets-center/success.png" />
+          <div class="font-45 font-700 success-title textColor">{{ title }} {{ $t('申请已提交') }}</div>
         </div>
-        <div class="btn-wrap">
-          <button class="btnMain text-white next-btn font-35" @click="goRouter('/cryptos/assetsCenter/rechargeWithdrawRecord')">
-            {{ $t('查看') }} {{ title }} {{ $t('历史') }}</button>
+        <div class="mb87">
+          <div class="font-35 textColor">{{ title }} {{ $t('申请已提交') }}</div>
+          <div class="text-grey font-30 mt14">{{ time }}</div>
         </div>
+        <div class="mb87">
+          <div class="font-35 textColor">{{ title }} {{ $t('申请已提交') }}</div>
+          <div class="flex mt14">
+            <div class="text-grey font-30">{{ $t('如果') }} {{ title }} {{ $t('未到账') }}?</div>
+            <div class="service-text font-30 text-blue" @click="tokefu">{{ $t('联系客服') }}</div>
+          </div>
+        </div>
+        <!--         <div class="mb87">-->
+        <!--           <div class="font-35">{{ title }} {{ $t('已成功') }}</div>-->
+        <!--           <div class="text-grey font-30 mt14">{{ $t('您会收到邮箱提醒') }}</div>-->
+        <!--         </div>-->
+      </div>
+      <div class="btn-wrap">
+        <button class="btnMain text-white next-btn font-35"
+          @click="goRouter('/cryptos/assetsCenter/rechargeWithdrawRecord')">
+          {{ $t('查看') }} {{ title }} {{ $t('历史') }}</button>
       </div>
     </div>
-  </template>
-  
-  <script>
-  import { Image as VanImage } from 'vant';
-  import assetsHead from "@/components/Transform/assets-head/index.vue";
-  import { dataTimeEx } from '@/utils/utis'
-  export default {
-      name:'rechargeSubmit',
-      components:{
-          assetsHead,
-          [VanImage.name]:VanImage
-      },
-      props:{
-          title:{
-              type:String,
-              default:""
-          }
-      },
-      data() {
-          return {
-            time:''
-          }
-      },
-      created() {
-        this.getTime()
-      },
-      methods:{
-          onClickLeft() {
-              this.$router.go(-1);
-          },
-          goRouter(params) {
-              this.$router.push({
-                  path:params,
-                  query: {
-                    back: 1
-                  }
-              });
-          },
-          getTime(){
-            this.time = dataTimeEx(Date.parse(new Date()),true);
-          },
-        tokefu() {
-          this.$router.push('/customerService')
+  </div>
+</template>
+
+<script>
+import { Image as VanImage } from 'vant';
+import assetsHead from "@/components/Transform/assets-head/index.vue";
+import { dataTimeEx } from '@/utils/utis'
+import { customerServiceUrl } from "@/config";
+export default {
+  name: 'rechargeSubmit',
+  components: {
+    assetsHead,
+    [VanImage.name]: VanImage
+  },
+  props: {
+    title: {
+      type: String,
+      default: ""
+    }
+  },
+  data() {
+    return {
+      time: ''
+    }
+  },
+  created() {
+    this.getTime()
+  },
+  methods: {
+    onClickLeft() {
+      this.$router.go(-1);
+    },
+    goRouter(params) {
+      this.$router.push({
+        path: params,
+        query: {
+          back: 1
         }
+      });
+    },
+    getTime() {
+      this.time = dataTimeEx(Date.parse(new Date()), true);
+    },
+    tokefu() {
+      if (customerServiceUrl) {
+        window.location.href = customerServiceUrl;
+      } else {
+        this.$router.push('/customerService')
       }
+    }
   }
-  </script>
-  <style lang="scss" scoped>
-  @import "@/assets/init.scss";
-  #cryptos{
-    .page-box {
+}
+</script>
+<style lang="scss" scoped>
+@import "@/assets/init.scss";
+
+#cryptos {
+  .page-box {
     box-sizing: border-box;
   }
+
   .btn-wrap {
     position: fixed;
     left: 0;
@@ -91,34 +99,34 @@
     padding: 0 30px;
     box-sizing: border-box;
   }
+
   .mt96 {
-      margin-top:114px;
+    margin-top: 114px;
   }
-  .success-title{
-      margin-top:70px;
-      margin-bottom:115px;
+
+  .success-title {
+    margin-top: 70px;
+    margin-bottom: 115px;
   }
-  
-  .mt14{
-      margin-top:14px;
+
+  .mt14 {
+    margin-top: 14px;
   }
-  
-  .mb87{
-       margin-bottom:87px;
+
+  .mb87 {
+    margin-bottom: 87px;
   }
-  
-  .service-text{
-      text-decoration:underline;
+
+  .service-text {
+    text-decoration: underline;
   }
-  .next-btn{
-    width:100%;
-    height:96px;
-    border:none;
-    outline:none;
+
+  .next-btn {
+    width: 100%;
+    height: 96px;
+    border: none;
+    outline: none;
     border-radius: 8px;
   }
-  }
-  
-  
-  </style>
-  
+}
+</style>
diff --git a/src/views/cryptos/TrendDetails/index.vue b/src/views/cryptos/TrendDetails/index.vue
index b5141fc..a44a0e0 100644
--- a/src/views/cryptos/TrendDetails/index.vue
+++ b/src/views/cryptos/TrendDetails/index.vue
@@ -68,7 +68,7 @@
                     <p>{{ $t('买入') }}</p>
                     <p class="flex  justify-between  font-22">
                       <span style="margin-right: -10px;">{{ $t('价格') }}{{ queryType == 'cryptos' ? '(USDT)' : '(USD)'
-                      }}</span>
+                        }}</span>
                       <span class="buy-title">{{ $t('数量') }}({{ symbolData.toUpperCase() }})</span>
                     </p>
                   </li>
@@ -111,7 +111,7 @@
                   <span class="flex-1">{{ $t('方向') }}</span>
                   <span class="flex-1">{{ $t('价格') }}{{ queryType == 'cryptos' ? '(USDT)' : '(USD)' }}</span>
                   <span class="flex-1 flex justify-center buy-title">{{ $t('数量') }}({{ symbolData.toUpperCase()
-                  }})</span>
+                    }})</span>
                 </li>
                 <li v-for="(item, index) in deals" :key="item.ts + item.price + item.amount || index"
                   class="flex  justify-between mt-30">
@@ -228,6 +228,7 @@
 import { mapGetters } from 'vuex';
 import { fixDate } from "@/utils";
 import { WS_URL } from '@/config';
+import { strToArr } from "@/utils/utis";
 import PopupDelivery from "@/components/Transform/popup-delivery/index.vue";
 import PopupConfirmOrder from '@/components/Transform/popup-confirm-order/index.vue'
 import deepChart from '@/components/Transform/deepChart/index.vue'
@@ -377,7 +378,7 @@
       _getHomeList(this.symbol).then(data => {
         // console.log(data[0])
         this.quote = data[0]
-        this.symbolData = data[0].symbol_data
+        this.symbolData = strToArr(data[0].name, '/')[0]
         this.$nextTick(() => {
           if (!this.sockets.quote && this.symbol) {
             this.startQuoteScoket()
diff --git a/src/views/cryptos/Withdraw/withdrawSumbit.vue b/src/views/cryptos/Withdraw/withdrawSumbit.vue
index 760843b..86634b2 100644
--- a/src/views/cryptos/Withdraw/withdrawSumbit.vue
+++ b/src/views/cryptos/Withdraw/withdrawSumbit.vue
@@ -1,12 +1,12 @@
- <template>
-   <!-- 提现申请提交页面 -->
-   <div id="cryptos">
+<template>
+  <!-- 提现申请提交页面 -->
+  <div id="cryptos">
     <assets-head title="" :goHome="true" />
     <div class="pl-47 pr-47 page-box relative font-28">
       <div class="content-box font-28">
         <div class="flex flex-col items-center justify-center mt96">
-          <img src="@/assets/image/order/success.png"/>
-          <div class="font-45 font-700 success-title textColor">{{ title }} {{$t('申请已提交')}}</div>
+          <img src="@/assets/image/order/success.png" />
+          <div class="font-45 font-700 success-title textColor">{{ title }} {{ $t('申请已提交') }}</div>
         </div>
         <div class="mb87 font-28">
           <div class="font-35 textColor">{{ title }} {{ $t('申请已提交') }}</div>
@@ -25,7 +25,8 @@
         <!--         </div>-->
       </div>
       <div class="btn-wrap">
-        <button class="btnMain text-white next-btn font-35" @click="goRouter('/cryptos/assetsCenter/rechargeWithdrawRecord?back=1')">
+        <button class="btnMain text-white next-btn font-35"
+          @click="goRouter('/cryptos/assetsCenter/rechargeWithdrawRecord?back=1')">
           {{ $t('查看') }} {{ title }} {{ $t('历史') }}</button>
       </div>
     </div>
@@ -36,89 +37,96 @@
 import { Image as VanImage } from 'vant';
 import assetsHead from "@/components/Transform/assets-head/index.vue";
 import { dataTimeEx } from '@/utils/utis'
+import { customerServiceUrl } from "@/config";
 export default {
-    name:'rechargeSubmit',
-    components:{
-        assetsHead,
-        [VanImage.name]:VanImage
+  name: 'rechargeSubmit',
+  components: {
+    assetsHead,
+    [VanImage.name]: VanImage
+  },
+  props: {
+    title: {
+      type: String,
+      default: ""
+    }
+  },
+  data() {
+    return {
+      time: ''
+    }
+  },
+  created() {
+    this.getTime()
+  },
+  methods: {
+    onClickLeft() {
+      this.$router.go(-1);
     },
-    props:{
-        title:{
-            type:String,
-            default:""
+    goRouter(params) {
+      this.$router.push({
+        path: params,
+        query: {
+          back: 1
         }
+      });
     },
-    data() {
-        return {
-          time:''
-        }
+    getTime() {
+      this.time = dataTimeEx(Date.parse(new Date()), true);
     },
-    created() {
-      this.getTime()
-    },
-    methods:{
-        onClickLeft() {
-            this.$router.go(-1);
-        },
-        goRouter(params) {
-            this.$router.push({
-                path:params,
-                query: {
-                    back: 1
-                  }
-            });
-        },
-        getTime(){
-          this.time = dataTimeEx(Date.parse(new Date()),true);
-        },
-      tokefu() {
+    tokefu() {
+      if (customerServiceUrl) {
+        window.location.href = customerServiceUrl;
+      } else {
         this.$router.push('/customerService')
       }
     }
+  }
 }
 </script>
 <style lang="scss" scoped>
 @import "@/assets/init.scss";
-#cryptos{
+
+#cryptos {
   .page-box {
-  box-sizing: border-box;
-}
-.btn-wrap {
-  position: fixed;
-  left: 0;
-  bottom: 86px;
-  width: 100%;
-  padding: 0 30px;
-  box-sizing: border-box;
-}
-.mt96 {
-    margin-top:114px;
-}
-.success-title{
-    margin-top:70px;
-    margin-bottom:115px;
-}
+    box-sizing: border-box;
+  }
 
-.mt14{
-    margin-top:14px;
-}
+  .btn-wrap {
+    position: fixed;
+    left: 0;
+    bottom: 86px;
+    width: 100%;
+    padding: 0 30px;
+    box-sizing: border-box;
+  }
 
-.mb87{
-     margin-bottom:87px;
-}
+  .mt96 {
+    margin-top: 114px;
+  }
 
-.service-text{
-    text-decoration:underline;
-}
-.next-btn{
-  width:100%;
-  height:96px;
-  border:none;
-  outline:none;
-  border-radius: 8px;
-}
-}
+  .success-title {
+    margin-top: 70px;
+    margin-bottom: 115px;
+  }
 
+  .mt14 {
+    margin-top: 14px;
+  }
 
+  .mb87 {
+    margin-bottom: 87px;
+  }
+
+  .service-text {
+    text-decoration: underline;
+  }
+
+  .next-btn {
+    width: 100%;
+    height: 96px;
+    border: none;
+    outline: none;
+    border-radius: 8px;
+  }
+}
 </style>
-
diff --git a/src/views/homePage/index.vue b/src/views/homePage/index.vue
index a65c833..36e40c6 100644
--- a/src/views/homePage/index.vue
+++ b/src/views/homePage/index.vue
@@ -118,7 +118,7 @@
     { key: 7, name: t('提现'), icon: new URL('@/assets/imgs/home/home_6.png', import.meta.url), path: '/cryptos/Withdraw/withdrawPage' },
     // { key: 8, name: t('卡券中心'), icon: new URL('@/assets/imgs/home/home_7.png', import.meta.url) },
     // { key: 9, name: t('闪兑'), icon: new URL('@/assets/imgs/home/home_8.png', import.meta.url), path: '/cryptos/exchangePage' },
-    { key: 9, name: t('划转'), icon: new URL('@/assets/imgs/home/home_8.png', import.meta.url), path: '/my/transfer' },
+    // { key: 9, name: t('划转'), icon: new URL('@/assets/imgs/home/home_8.png', import.meta.url), path: '/my/transfer' },
     // { key: 10, name: t('更多'), icon: new URL('@/assets/imgs/home/home_9.png', import.meta.url) },
 
     { key: 11, name: "STO", icon: new URL('@/assets/imgs/home/home_1.png', import.meta.url), path: '/ICO/ico' },
diff --git a/src/views/login/index.vue b/src/views/login/index.vue
index 9a4b2c7..9696f48 100644
--- a/src/views/login/index.vue
+++ b/src/views/login/index.vue
@@ -13,6 +13,15 @@
             </span>
         </div>
 
+        <div class="flex re-tab">
+            <div class="textColor1" :class="activeIndex == 1 ? 'active' : ''" @click="changeIndex(1)">
+                {{ $t('email') }}
+            </div>
+            <div class="textColor1" :class="activeIndex == 2 ? 'active' : ''" @click="changeIndex(2)">
+                {{ $t('phoneNum') }}
+            </div>
+        </div>
+
         <ExInput style="padding-bottom:16px !important;" :placeholderText="getRegType(activeIndex, false)"
             v-model="username" :dialCode="dialCode" @selectArea="onSelectArea" :area="isArea" :icon="icon"
             @pressEnter="verifyLogin" />
@@ -67,7 +76,7 @@
 
 let username = ref('')
 let password = ref('')
-let activeIndex = ref(0)
+let activeIndex = ref(1)
 let isArea = ref(false)
 let dialCode = ref(0)
 let icon = ref('')
@@ -159,7 +168,8 @@
     _loginUser({
         userName: (activeIndex.value == 0 || activeIndex.value == 1) ? username.value : `${dialCode.value}${username.value}`,
         passWord: password.value,
-        type: type.value
+        // type: type.value
+        type: '3' // 写死, 算所有的登录都是账户登录
     }).then((res) => {
         userStore[GET_USERINFO](res)
         store.commit('user/SET_USERINFO', res)
@@ -179,6 +189,26 @@
     background: $mainbgWhiteColor;
     min-height: 100vh;
 
+    .re-tab {
+        margin-bottom: 22px;
+
+        div {
+            padding: 0 18px;
+            height: 34px;
+            line-height: 34px;
+            text-align: center;
+            border-radius: 4px;
+            margin-right: 10px;
+        }
+
+        .active {
+            // background: $US_tabActice_background;
+            background: $bg_yellow;
+            // color: $color_main;
+            color: $text_color4;
+        }
+    }
+
     :deep(.textColor) {
         color: $log-c;
     }
diff --git a/src/views/my/assets.vue b/src/views/my/assets.vue
index 5cfceca..46f71f2 100644
--- a/src/views/my/assets.vue
+++ b/src/views/my/assets.vue
@@ -14,12 +14,16 @@
                 </van-dropdown-item>
             </van-dropdown-menu>
         </div>
-        <div class="assets_revenue mt-5">
-            <span>{{ $t('ProfitDay') }}</span>
-            {{ currency.currency_symbol }}{{ forexAssets?.money_contract_profit_today ?
-                (forexAssets?.money_contract_profit_today * (currency.rate ?? 0)).toFixed(2) :
-                '--' }}
-        </div>
+        <!-- <div class="assets_revenue mt-5">
+            <span>{{ $t('当日') }}</span>
+            {{ currency.currency_symbol }}
+            <span
+                :style="forexAssets?.money_contract_profit_today > 0 ? 'color:green' : forexAssets?.money_contract_profit_today < 0 ? 'color:red' : ''">
+                {{ forexAssets?.money_contract_profit_today ?
+                    (forexAssets?.money_contract_profit_today * (currency.rate ?? 0)).toFixed(2) :
+                    '--' }}
+            </span>
+        </div> -->
 
         <div class="tabbers flex justify-between mt-20 pl-1 pr-1">
             <div class="item" v-for="item in tabList" :key="item.key" @click="toPage(item.path)">
@@ -43,12 +47,12 @@
                     <span class="mr-5">{{ assetObj.capital }}</span>
                     <van-icon name="arrow" />
                 </div>
-                <div class="assets_item flex justify-start items-center mt-14 font-bold">
+                <!-- <div class="assets_item flex justify-start items-center mt-14 font-bold">
                     <div class="icon" style="background-color: #f7b600;"></div>
                     <span class="ml-5 flex-1">{{ $t('交易账户') }}</span>
                     <span class="mr-5">{{ assetObj.contract }}</span>
                     <van-icon name="arrow" />
-                </div>
+                </div> -->
             </van-collapse-item>
         </van-collapse>
 
diff --git a/src/views/my/index.vue b/src/views/my/index.vue
index d38fa56..a88694d 100644
--- a/src/views/my/index.vue
+++ b/src/views/my/index.vue
@@ -202,7 +202,8 @@
           // { icon: 'todo-list-o', title: t('账变记录'), path: '/cryptos/accountChange' },
           { icon: new URL('../../assets/image/assets-center/valuation.png', import.meta.url), title: t('计价方式'), path: '/cryptos/exchangeRate' },
           // { icon: new URL('../../assets/image/assets-center/AddPaymentMethod.png', import.meta.url), title: t('AddPaymentMethod'), path: '/payMentMethod/list' },
-          { icon: new URL('../../assets/image/assets-center/help.png', import.meta.url), title: t('帮助中心'), path: '/helpCenter' },
+          // { icon: new URL('../../assets/image/assets-center/help.png', import.meta.url), title: t('帮助中心'), path: '/helpCenter' }, // 原帮助中心页面
+          { icon: new URL('../../assets/image/assets-center/help.png', import.meta.url), title: t('帮助中心'), path: '/aboutUs?serviceTerm=27' }, // 现跳转关于我们通过后台编辑获取的页面
         ]
       }
     ]
diff --git a/src/views/order/order-submit.vue b/src/views/order/order-submit.vue
index 551c883..ff31e71 100644
--- a/src/views/order/order-submit.vue
+++ b/src/views/order/order-submit.vue
@@ -11,7 +11,7 @@
         <div class="order-top">
           <div class="title">{{ $t('orderGenerated') }}</div>
           <div class="text mt-2">{{ $t('pleaseAt') }} <span>{{ msgTitle }}</span> {{ $t('paymentSeller')
-            }}{{ payInfo.direction == 'recharge' ? $t('买家') : $t('卖家') }}</div>
+          }}{{ payInfo.direction == 'recharge' ? $t('买家') : $t('卖家') }}</div>
           <div class="customer mt-5" @click="onRoute">
             <div class="flex">
               <div class="flex flex-1 service">
@@ -29,7 +29,8 @@
             <div class="flex step mt-5">
               <img class="success mr-1" src="@/assets/image/order/success.png" alt="" />
               <!-- {{ $t('Payconfidence') }} -->
-              {{ payInfo.direction == 'recharge' ? $t('买家') : $t('卖家') }} {{ payInfo.currency }} {{ $t('已存入交易所账户,请放心付款') }}
+              {{ payInfo.direction == 'recharge' ? $t('买家') : $t('卖家') }} {{ payInfo.currency }} {{ $t('已存入交易所账户,请放心付款')
+              }}
             </div>
             <div class="flex mt-5">
               <div class="flex step flex-1">
@@ -111,6 +112,7 @@
   showToast
 } from 'vant';
 import useClipboard from "vue-clipboard3";
+import { customerServiceUrl } from '@/config'
 import { useI18n } from "vue-i18n";
 const { toClipboard } = useClipboard();
 const { t } = useI18n()
@@ -119,8 +121,11 @@
 const showPopup = ref(false)
 const orderNo = ref(null)
 const onRoute = () => {
-  // router.push('/order/success')
-  router.push('/customerService?order_no=' + orderNo.value)
+  if (customerServiceUrl) {
+    window.location.href = customerServiceUrl;
+  } else {
+    router.push('/customerService?order_no=' + orderNo.value)
+  }
 }
 const onClickLeft = () => {
   // router.push('/exchange/channel-in')
diff --git a/src/views/register/index.vue b/src/views/register/index.vue
index de22861..0649edb 100644
--- a/src/views/register/index.vue
+++ b/src/views/register/index.vue
@@ -14,7 +14,7 @@
             </div>
             <div class="textColor1" :class="activeIndex == 2 ? 'active' : ''" @click="changeIndex(2)">{{
                 $t('phoneNum')
-            }}</div>
+                }}</div>
         </div>
         <ExInput :label="getRegType(activeIndex, true)" :placeholderText="getRegType(activeIndex, false)"
             v-model="username" :area="isArea" :dialCode="dialCode" @selectArea="onSelectArea" :icon="icon" />
@@ -41,7 +41,10 @@
                 <img v-show="agree" src="../../assets/image/login/prot2.png" alt="" />
                 <img v-show="!agree" src="../../assets/image/login/prot1.png" alt="" />
             </i>
-            {{ $t('readAgree') }}<span class="colorMain" @click="router.push('/TermsOfService')">{{
+            <!-- {{ $t('readAgree') }}<span class="colorMain" @click="router.push('/TermsOfService')">{{
+                $t('serviceConf')
+                }}</span> -->
+            {{ $t('readAgree') }}<span class="colorMain" @click="router.push('/aboutUs?serviceTerm=23')">{{
                 $t('serviceConf')
             }}</span>
         </div>
diff --git a/src/views/resetVerify/index.vue b/src/views/resetVerify/index.vue
index 2c413bd..f1d70a1 100644
--- a/src/views/resetVerify/index.vue
+++ b/src/views/resetVerify/index.vue
@@ -73,18 +73,18 @@
         name: t('resetFundsPassword'),
         type: 0
     },
-    {
-        name: t('resetPhone'),
-        type: 1
-    },
-    {
-        name: t('resetEmail'),
-        type: 2
-    },
-    {
-        name: t('resetGoogleVerify'),
-        type: 3
-    },
+    // {
+    //     name: t('resetPhone'),
+    //     type: 1
+    // },
+    // {
+    //     name: t('resetEmail'),
+    //     type: 2
+    // },
+    // {
+    //     name: t('resetGoogleVerify'),
+    //     type: 3
+    // },
 ])
 const frontFile = ref([])
 const reverseFile = ref([])
diff --git a/src/views/safety/index.vue b/src/views/safety/index.vue
index bc94e11..043df3a 100644
--- a/src/views/safety/index.vue
+++ b/src/views/safety/index.vue
@@ -1,6 +1,6 @@
 <template>
   <div class="safety">
-    <fx-header >
+    <fx-header>
     </fx-header>
     <div class="content">
       <div class="title textColor">{{ $t('safe') }}</div>
@@ -91,7 +91,11 @@
   {
     name: t('manualReset'),
     url: "/resetVerify?type=0"
-  }
+  },
+  {
+    name: `${t('resetPhone')}/${t('resetEmail')}`,
+    url: "/resetPhoneEmail"
+  },
 ])
 
 onMounted(() => {
@@ -129,7 +133,7 @@
   // background-color: $mainBgColor;
 }
 
-:deep(.van-grid-item__content){
+:deep(.van-grid-item__content) {
   // background:  $main2_background !important;
   color: $text_color;
 }
diff --git a/src/views/safety/resetPhoneEmail.vue b/src/views/safety/resetPhoneEmail.vue
new file mode 100644
index 0000000..ddb8d7d
--- /dev/null
+++ b/src/views/safety/resetPhoneEmail.vue
@@ -0,0 +1,401 @@
+<template>
+    <div class="register">
+        <div class="top flex justify-between items-center">
+            <img src="../../assets/image/icon-close.png" alt="" @click="router.go(-1)">
+            <div @click="onRoute('/customerService')">{{ $t('onLineService') }}</div>
+        </div>
+        <div class="title textColor">{{ $t('重置') }}</div>
+        <div class="flex re-tab">
+            <!-- <div class="textColor1" :class="activeIndex == 0 ? 'active' : ''" @click="changeIndex(0)">{{
+                $t('account')
+            }}</div> -->
+            <div class="textColor1" :class="activeIndex == 1 ? 'active' : ''" @click="changeIndex(1)">
+                {{ $t('email') }}
+            </div>
+            <div class="textColor1" :class="activeIndex == 2 ? 'active' : ''" @click="changeIndex(2)">
+                {{ $t('phoneNum') }}
+            </div>
+        </div>
+        <ExInput :label="getRegType(activeIndex, true)" :placeholderText="getRegType(activeIndex, false)"
+            v-model="username" :area="isArea" :dialCode="dialCode" @selectArea="onSelectArea" :icon="icon" />
+
+        <ExInput :label="$t('repassword')" :placeholderText="$t('请输入')" v-model="password"
+            typeText="password" />
+        <!-- <ExInput :label="$t('repassword')" :placeholderText="$t('surePassword')" v-model="repassword"
+            typeText="password" /> -->
+        <ExInput :label="$t('fundsPassword')" :placeholderText="$t('请输入')" v-model="safeword" typeText="password"
+            v-if="activeIndex === 1 || activeIndex === 2" />
+        <div class="inputCom" v-if="activeIndex === 1 || activeIndex === 2">
+            <p class="label  textColor">{{ $t('验证码') }}</p>
+            <div class="iptbox inputBackground">
+                <input class="inputBackground textColor" type="text" :placeholder="$t('entryVerifyCode')"
+                    v-model="verifyCode">
+                <span v-if="type !== 3" @click="senCode">{{ $t('sendVerifyCode') }}
+                    <template v-if="time">({{ time }})s</template>
+                </span>
+            </div>
+        </div>
+
+        <!-- <ExInput :label="$t('金融机构代码')" :placeholderText="$t('请输入')" v-model="invitCode" :clearBtn="false" /> -->
+
+        <div class="protocol textColor">
+            <i @click="agreeProt">
+                <img v-show="agree" src="../../assets/image/login/prot2.png" alt="" />
+                <img v-show="!agree" src="../../assets/image/login/prot1.png" alt="" />
+            </i>
+            <!-- {{ $t('readAgree') }}<span class="colorMain" @click="router.push('/TermsOfService')">{{
+                $t('serviceConf')
+            }}</span> -->
+            {{ $t('readAgree') }}<span class="colorMain" @click="router.push('/aboutUs?serviceTerm=23')">{{
+                $t('serviceConf')
+            }}</span>
+        </div>
+        <van-button class="w-full" style="margin-top:10px;" type="primary" @click="register">{{ $t('confirm') }}
+        </van-button>
+        <!-- <div class="noTips textColor">{{ $t('hasAccount') }}<span class="colorMain" @click="router.push('/login')">
+                {{ $t('goLogin') }}</span>
+        </div> -->
+        <nationality-list ref='controlChildRef' :title="$t('selectArea')" @getName="getName"></nationality-list>
+
+        <Vcode :imgs="[img1, img2]" :show="show" @success="onSuccess" :canvasHeight="200" @fail="onFail"
+            @close="show = false;" sliderText='' :successText="$t('vertifyPass')" :failText="$t('vertifuFail')" />
+
+        <div>{{ msg }}</div>
+    </div>
+</template>
+
+<script setup>
+import ExInput from "@/components/ex-input/index.vue";
+import { _registerUser, _sendVerifyCode } from "@/service/login.api";
+import { _bindEmailRegister, _registerEorP } from "@/service/user.api.js";
+import { useUserStore } from '@/store/user';
+import { GET_USERINFO } from '@/store/types.store'
+import nationalityList from '../authentication/components/nationalityList.vue'
+import Vcode from "vue3-puzzle-vcode";
+import img1 from "@/assets/image/slider/1.png";
+import img2 from "@/assets/image/slider/2.png";
+import { getStorage } from '@/utils/index'
+import { useI18n } from 'vue-i18n'
+import { customerServiceUrl } from "@/config";
+import { useRouter } from 'vue-router';
+import { ref, onMounted, reactive, onUnmounted } from 'vue';
+import { showToast } from "vant";
+import store from '@/store/store'
+const customer_service_url = ref(customerServiceUrl) // 客服链接,有值的话就会跳转到客服外链
+const { t } = useI18n()
+const router = useRouter()
+const onRoute = (path) => {
+    if (path == 'back') {
+        router.go(-1)
+    } else {
+        if (path == '/customerService') {
+            if (customer_service_url.value) {
+                window.location.href = customer_service_url.value;
+            } else {
+                router.push(path)
+            }
+        } else {
+            router.push(path)
+        }
+    }
+}
+const userStore = useUserStore();
+
+let show = ref(false)
+const msg = ref('')
+const type = ref(1)
+const time = ref(0)
+let agree = ref(false)
+const username = ref('')
+const password = ref('')
+const repassword = ref('')
+const verifyCode = ref('')
+const safeword = ref('')
+const fundPassword = ref('')
+const refundPassword = ref('')
+const activeIndex = ref(1)
+const typeText = ref('password')
+let isArea = ref(false)
+let dialCode = ref(0)
+let icon = ref('')
+const state = reactive({
+    timer: null
+})
+
+let invitCode = ref('')
+onMounted(() => {
+    console.log(store)
+    let usercode = getStorage('usercode')
+    if (usercode) {
+        invitCode = usercode;
+    }
+    clearInterval(state.timer)
+    state.timer = null
+})
+
+onUnmounted(() => {
+    clearInterval(state.timer)
+    state.timer = null
+})
+
+const getRegType = (activeIndex, bFlag) => {
+    switch (activeIndex) {
+        case 0:
+            return bFlag ? t('account') : t('entryAccount');
+        case 1:
+            return bFlag ? t('email') : t('entryEmail');
+        case 2:
+            return bFlag ? t('phoneNum') : t('entryPhone');
+    }
+}
+
+const senCode = () => {
+    if (time.value > 0) {
+        return false
+    }
+    _sendVerifyCode({
+        target: activeIndex.value === 1 ? username.value : dialCode.value + username.value,
+    }).then((res) => {
+        time.value = 30;
+        state.timer = setInterval(() => {
+            if (time.value > 0) {
+                time.value = time.value - 1
+            } else {
+                time.value = 0;
+                clearInterval(state.timer)
+                state.timer = null
+            }
+        }, 1000);
+    }).catch((error) => {
+        showToast(t(error.msg));
+    });
+}
+
+const onSuccess = () => {
+    console.log('onSuccess')
+    registerApi();
+    show.value = false;
+}
+const onFail = () => {
+    msg.value = ''
+}
+const onRefresh = () => {
+    msg.value = ''
+}
+
+const controlChildRef = ref(null)
+const onSelectArea = () => {
+    controlChildRef.value.open();
+}
+
+const getName = (params) => {
+    icon.value = params.code;
+    dialCode.value = params.dialCode;
+}
+const agreeProt = () => {
+    agree.value = !agree.value
+}
+const register = () => {
+    console.log(activeIndex.value, 'activeIndex.value')
+    if (activeIndex.value == 0) {
+        if (username.value == '') {
+            showToast(t('entryAccount'));
+            return
+        }
+        if (username.value.length < 6 || username.value.length > 30) {
+            showToast(t('accountLength'));
+            return
+        }
+    } else if (activeIndex.value == 1) {
+        let match = username.value.search(/@/);
+        if (username.value == '' || match.value == -1) {
+            showToast(t('entryCorrectEmail'));
+            return
+        }
+        if (safeword.value == '') {
+            showToast(t('safewordTips'));
+            return
+        }
+        if (verifyCode.value.length < 6) {
+            showToast(t('entryVerifyTips'));
+            return
+        }
+    } else if (activeIndex.value == 2) {
+        if (!(/(^[1-9]\d*$)/.test(username.value))) {
+            showToast(t('entryPhone'));
+            return
+        }
+        if (username.value == '') {
+            showToast(t('entryPhone'));
+            return
+        }
+    }
+    if (password.value == '') {
+        showToast(t('entryPassword'));
+        return
+    }
+    if (password.value.length < 6) {
+        showToast(t('passwordTips'));
+        return
+    }
+    // if (repassword.value !== password.value) {
+    //     showToast(t('noSamePassword'));
+    //     return
+    // }
+    if (!agree.value) {
+        showToast(t('agreeServiceCond'));
+        return
+    }
+    show.value = true
+}
+const changeIndex = (index) => {
+    activeIndex.value = index;
+    if (index == 0 || index == 1) {
+        isArea.value = false
+    } else {
+        isArea.value = true
+    }
+}
+const registerApi = () => {
+    switch (activeIndex.value) {
+        case 0:
+            {
+                type.value = 3;
+                break;
+            }
+        case 1:
+            {
+                type.value = 2;
+                break;
+            }
+        case 2:
+            {
+                type.value = 1;
+                break;
+            }
+    }
+
+    _registerEorP({
+        username: activeIndex.value === 1 ? username.value : dialCode.value + username.value,
+        password: password.value,
+        type: activeIndex.value === 1 ? '2' : '1',   // 2邮箱,1手机
+        verifcode: verifyCode.value,
+        safeword: safeword.value
+    }).then((res) => {
+        userStore[GET_USERINFO](res)
+        store.state.user.userInfo = res
+        // 其他操作??
+        // router.push('/identity')
+        router.push('/login')
+    })
+}
+</script>
+
+<style lang="scss" scoped>
+.activeBKClick {
+    &:active {
+        background: $tab_background;
+        opacity: 0.5;
+    }
+}
+
+.activeClick {
+    &:active {
+        background: $mainbgWhiteColor;
+        opacity: 0.5;
+    }
+}
+
+.register {
+    width: 100%;
+    box-sizing: border-box;
+    padding: 16px;
+    font-size: 13px;
+    background-color: $mainbgWhiteColor;
+}
+
+.top {
+    padding-left: 9px;
+    padding-top: 9px;
+
+    img {
+        width: 18px;
+        height: 18px;
+    }
+}
+
+.title {
+    font-weight: 700;
+    font-size: 26px;
+    margin-top: 27px;
+    margin-bottom: 33px;
+}
+
+.re-tab {
+    margin-bottom: 22px;
+
+    div {
+        padding: 0 18px;
+        height: 34px;
+        line-height: 34px;
+        text-align: center;
+        border-radius: 4px;
+        margin-right: 10px;
+    }
+
+    .active {
+        // background: $US_tabActice_background;
+        background: $bg_yellow;
+        // color: $color_main;
+        color: $text_color4;
+    }
+}
+
+.forget {
+    color: $color_main;
+    font-size: 12px;
+    line-height: 14px;
+}
+
+.noTips {
+    margin-top: 24px;
+}
+
+.protocol {
+    display: flex;
+    align-items: center;
+    height: 15px;
+
+    i {
+        width: 15px;
+        height: 15px;
+        margin-right: 9px;
+
+        img {
+            width: 100%;
+            height: 100%;
+        }
+    }
+}
+
+.iptbox {
+    height: 44px;
+    margin-top: 8px;
+    margin-bottom: 18px;
+    padding: 0 20px;
+    display: flex;
+    justify-content: space-between;
+    align-items: center;
+    border-radius: 6px;
+
+    input {
+        flex: 1;
+        height: 100%;
+        border: none;
+    }
+
+    span {
+        color: $color_main;
+    }
+}
+</style>

--
Gitblit v1.9.3