Taio_O 3 месяцев назад
Сommit
215b39c94e
100 измененных файлов с 4804 добавлено и 0 удалено
  1. 32 0
      .gitignore
  2. 55 0
      App.vue
  3. 4 0
      README.md
  4. 171 0
      api/index.js
  5. 92 0
      components/headtitle/headtitle.vue
  6. 35 0
      components/loading/loading.vue
  7. 52 0
      components/notice/notice.vue
  8. 93 0
      components/pagination/pagination.vue
  9. 64 0
      components/progressline/progressline.vue
  10. 120 0
      components/tabbar/tabbar.vue
  11. 20 0
      index.html
  12. 730 0
      locale/en_US.json
  13. 33 0
      locale/index.js
  14. 730 0
      locale/th_TH.json
  15. 730 0
      locale/zh_CN.json
  16. 60 0
      main.js
  17. 119 0
      manifest.json
  18. 23 0
      package.json
  19. 18 0
      pages.json
  20. 9 0
      pages/index/sign.vue
  21. 57 0
      static/svg-icons-lib.js
  22. 3 0
      static/svg-icons/activeDot.svg
  23. 19 0
      static/svg-icons/add.svg
  24. 3 0
      static/svg-icons/back.svg
  25. 3 0
      static/svg-icons/checked.svg
  26. 3 0
      static/svg-icons/copy.svg
  27. 4 0
      static/svg-icons/delete.svg
  28. 3 0
      static/svg-icons/editor.svg
  29. 3 0
      static/svg-icons/inactiveDot.svg
  30. 1 0
      static/svg-icons/inmsg.svg
  31. 4 0
      static/svg-icons/language/America.svg
  32. 4 0
      static/svg-icons/language/China.svg
  33. 12 0
      static/svg-icons/language/Thailand.svg
  34. 4 0
      static/svg-icons/level/1.svg
  35. 4 0
      static/svg-icons/level/10.svg
  36. 4 0
      static/svg-icons/level/2.svg
  37. 2 0
      static/svg-icons/level/3.svg
  38. 4 0
      static/svg-icons/level/4.svg
  39. 4 0
      static/svg-icons/level/5.svg
  40. 2 0
      static/svg-icons/level/6.svg
  41. 4 0
      static/svg-icons/level/7.svg
  42. 2 0
      static/svg-icons/level/8.svg
  43. 2 0
      static/svg-icons/level/9.svg
  44. 1 0
      static/svg-icons/newmsg.svg
  45. 10 0
      static/svg-icons/question.svg
  46. 3 0
      static/svg-icons/recharge/balance.svg
  47. 9 0
      static/svg-icons/recharge/bankcard.svg
  48. 10 0
      static/svg-icons/recharge/item.svg
  49. 24 0
      static/svg-icons/recharge/upload.svg
  50. 3 0
      static/svg-icons/refresh.svg
  51. 2 0
      static/svg-icons/service.svg
  52. 3 0
      static/svg-icons/unchecked.svg
  53. 6 0
      static/svg-icons/user/aboutus.svg
  54. 3 0
      static/svg-icons/user/account_info.svg
  55. 1 0
      static/svg-icons/user/agreement.svg
  56. 2 0
      static/svg-icons/user/archive_info.svg
  57. 9 0
      static/svg-icons/user/bankcard.svg
  58. 6 0
      static/svg-icons/user/basic.svg
  59. 9 0
      static/svg-icons/user/language.svg
  60. 3 0
      static/svg-icons/user/line.svg
  61. 6 0
      static/svg-icons/user/loanagree.svg
  62. 2 0
      static/svg-icons/user/logout.svg
  63. 9 0
      static/svg-icons/user/message.svg
  64. 9 0
      static/svg-icons/user/messages.svg
  65. 24 0
      static/svg-icons/user/newuser.svg
  66. 9 0
      static/svg-icons/user/privacy.svg
  67. 9 0
      static/svg-icons/user/purchase.svg
  68. 4 0
      static/svg-icons/user/real_info.svg
  69. 1 0
      static/svg-icons/user/recharge.svg
  70. 6 0
      static/svg-icons/user/repaymentp.svg
  71. 14 0
      static/svg-icons/user/team.svg
  72. 7 0
      static/svg-icons/user/transaction.svg
  73. 9 0
      static/svg-icons/user/wallet.svg
  74. 1 0
      static/svg-icons/user/withdraw.svg
  75. 3 0
      static/svg-icons/vector.svg
  76. 3 0
      static/svg-icons/withdraw/arrow.svg
  77. 4 0
      static/svg-icons/withdraw/constructionBank.svg
  78. BIN
      static/temp/background.png
  79. BIN
      static/temp/commit.png
  80. BIN
      static/temp/logo.png
  81. BIN
      static/temp/sign.png
  82. 1 0
      store/index.js
  83. 22 0
      store/module/color.js
  84. 5 0
      store/module/index.js
  85. 22 0
      store/module/lang.js
  86. 36 0
      store/module/project.js
  87. 41 0
      store/module/user.js
  88. 73 0
      store/module/weather.js
  89. 24 0
      svgo.config.js
  90. 10 0
      uni.promisify.adaptor.js
  91. 78 0
      uni.scss
  92. 8 0
      uni_modules/cc-defineKeyboard/changelog.md
  93. 54 0
      uni_modules/cc-defineKeyboard/components/cc-defineKeyboard/cc-defineKeyboard.scss
  94. 117 0
      uni_modules/cc-defineKeyboard/components/cc-defineKeyboard/cc-defineKeyboard.vue
  95. 87 0
      uni_modules/cc-defineKeyboard/package.json
  96. 232 0
      uni_modules/cc-defineKeyboard/readme.md
  97. 7 0
      uni_modules/uv-action-sheet/changelog.md
  98. 50 0
      uni_modules/uv-action-sheet/components/uv-action-sheet/props.js
  99. 280 0
      uni_modules/uv-action-sheet/components/uv-action-sheet/uv-action-sheet.vue
  100. 92 0
      uni_modules/uv-action-sheet/package.json

+ 32 - 0
.gitignore

@@ -0,0 +1,32 @@
+.DS_Store
+node_modules
+/screenshots
+/dist
+dist.zip
+dist_electron
+package-lock.json
+yarn.lock
+
+# local env files
+.env.local
+.env.*.local
+
+# Log files
+npm-debug.log*
+yarn-debug.log*
+yarn-error.log*
+pnpm-debug.log*
+
+# Editor directories and files
+.idea
+.vscode
+*.suo
+*.ntvs*
+*.njsproj
+*.sln
+*.sw?
+/components.d.ts
+
+/node_modules/
+/.hbuilderx/
+/unpackage/

+ 55 - 0
App.vue

@@ -0,0 +1,55 @@
+<script>
+	export default {
+		onLaunch: function() {
+			console.log('App Launch')
+		},
+		onShow: function() {
+			console.log('App Show')
+		},
+		onHide: function() {
+			console.log('App Hide')
+		}
+	}
+</script>
+
+<style>
+	/*每个页面公共css */
+
+	/*  #ifdef H5  */
+	.status_bar {
+		height: 25px;
+	}
+	/*  #endif  */
+	
+	/*  #ifdef APP-PLUS  */
+	.status_bar {
+		height: var(--status-bar-height);
+	}
+	/*  #endif  */
+	
+	.status_bar {
+		margin-top: 5rpx;
+		width: 100%;
+	}
+	
+	.mainBtn{
+		width: 600rpx;
+		height: 80rpx;
+		line-height: 80rpx;
+		text-align: center;
+		color: #ffffff;
+		border-radius: 20rpx;
+		background-color: #EC0000;
+		margin: 80rpx auto 0;
+	}
+	.newStyleBtn{
+		height: 88rpx;
+		line-height: 88rpx;
+		text-align: center;
+		color: #ffffff;
+		border-radius: 44rpx;
+		background-color: #EC0000;
+		margin-left: 48rpx;
+		margin-right: 48rpx;
+	}
+</style>

+ 4 - 0
README.md

@@ -0,0 +1,4 @@
+### grab 客户端
+```
+
+```

+ 171 - 0
api/index.js

@@ -0,0 +1,171 @@
+import {
+	get,
+	post
+} from '../utils/request.js'
+import {
+	useUserStore
+} from '@/store/index.js';
+
+// 测试
+let data = {
+	"token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJzdW5zaGluZS5jZGJhb2xhbi5jb20iLCJhdWQiOiJzdW5zaGluZS5jZGJhb2xhbi5jb20iLCJpYXQiOjE3MTEzNTM2NTEsIm5iZiI6MTcxMTM1MzU5MSwiZXhwIjoxNzExMzc4ODUxLCJkYXRhIjp7ImlkIjoiMzQ2NTciLCJwaG9uZSI6ImRvdDFAcXEuY29tIn19.nw4_Aoez9jSA2krU_X760zkps4dEPO4DpItEQCM5u7s",
+	"language": "zh_cn"
+}
+// export const apihost = 'https://loanvem.com'
+// export const apihost = 'https://loanicom.com'
+export const apihost = 'http://192.168.50.253:8000'
+
+// 上传图片
+export function uploadImage(url) {
+	return new Promise((resolve, reject) => {
+		const userStore = useUserStore()
+		uni.uploadFile({
+			url: apihost + '/api/upload/file',
+			filePath: url,
+			header: {
+				'Authorization': userStore.token
+			},
+			name: 'file',
+			formData: {
+				'type': 0,
+			},
+			success: (res) => {
+				const temp = JSON.parse(res.data)
+				resolve({
+					success: true,
+					data: temp
+				});
+			}
+		});
+	})
+}
+
+export function fetchChatConfig() {
+	return post('/api/user/activity-list', data)
+}
+
+export function signup(params = {}) {
+	return post('/api/user/sign-up', params)
+}
+
+export function init(params = {}) {
+	return post('/api/user/init', params)
+}
+
+export function about(params = {}) {
+	return post('/api/user/about', params)
+}
+
+export function articledetail(params = {}) {
+	return post('/api/article/detail', params)
+}
+
+export function signin(params = {}) {
+	return post('/api/user/sign-in', params)
+}
+
+export function itemsearch(params = {}) {
+	return post('/api/item/search', params)
+}
+
+export function itemlist(params = {}) {
+	return post('/api/item/list', params)
+}
+
+export function itemdetail(params = {}) {
+	return post('/api/item/detail', params)
+}
+
+export function userprofile(params = {}) {
+	return post('/api/user/profile', params)
+}
+
+export function userorderlist(params = {}) {
+	return post('/api/user/order-list', params)
+}
+
+export function userdetail(params = {}) {
+	return post('/api/user/order-detail', params)
+}
+
+export function banklist(params = {}) {
+	return post('/api/bank/list', params)
+}
+
+export function bankadd(params = {}) {
+	return post('/api/bank/add', params)
+}
+
+export function bankdel(params = {}) {
+	return post('/api/bank/del', params)
+}
+export function rechargetype(params = {}) {
+	return post('/api/user/recharge-type', params)
+}
+
+export function recharge(params = {}) {
+	return post('/api/user/recharge', params)
+}
+
+export function noticelist(params = {}) {
+	return post('/api/user/notice-list', params)
+}
+
+export function noticeview(params = {}) {
+	return post('/api/user/notice-view', params)
+}
+
+export function userfunds(params = {}) {
+	return post('/api/user/funds', params)
+}
+
+export function fetchweather(params = {}) {
+	return post('/api/user/weather', params)
+}
+
+export function sendsms(params = {}) {
+	return post('/api/user/send-sms', params)
+}
+
+export function itembuy(params = {}) {
+	return post('/api/item/apply', params)
+}
+
+export function orderlist(params = {}) {
+	return post('/api/user/order-list', params)
+}
+
+export function upload(params = {}) {
+	return post('/api/upload/file', params, {'content-type': "application/form-data"})
+}
+
+export function forgot(params = {}) {
+	return post('/api/user/forgot-passwd', params)
+}
+
+export function cashpasswd(params = {}) {
+	return post('/api/user/cash-passwd-reset', params)
+}
+
+export function updateprofile(params = {}) {
+	return post('/api/user/profile-update', params)
+}
+
+export function team(params = {}) {
+	return post('/api/user/team', params)
+}
+
+export function cashApply(params = {}) {
+	return post('/api/cash/apply', params)
+}
+export function cashList(params = {}) {
+	return post('/api/cash/list', params)
+}
+
+
+export function cashEmailList(params = {}) {
+	return post('/api/cash/email_list', params)
+}
+export function cashEmailView(params = {}) {
+	return post('/api/cash/email_view', params)
+}

+ 92 - 0
components/headtitle/headtitle.vue

@@ -0,0 +1,92 @@
+<template>
+	<view :style="{background:bgColor}">
+		<!-- 状态栏占位 -->
+		<view class="status_bar"></view>
+		<view class="title">
+			<zui-svg-icon icon="back" v-if="isback" :style="{color:color}" class="icon" @click="leftClick()" />
+			<view class="content" :style="{color: fontColor}">
+				<slot></slot>
+			</view>
+			<view class="right">
+				<slot name="right"></slot>
+			</view>
+		</view>
+	</view>
+</template>
+
+<script setup>
+	import {
+		onMounted,
+		ref
+	} from 'vue';
+	import {
+		useColortore
+	} from '@/store/index.js';
+	import {
+		navTo,
+		navBack,
+		navTabbar
+	} from '@/utils/navigate';
+	const props = defineProps({
+		theme: String,
+		isback: String,
+		bgColor: String,
+		fontColor: String,
+		toWallet: Boolean
+	});
+
+	const color = ref('' || '#000000');
+	const isback = ref(true)
+	const bgColor = ref('' || '#EC0000');
+	const fontColor = ref('' || '#FFFFFF');
+	onMounted(() => {
+		const colorStore = useColortore()
+		bgColor.value = colorStore.mainRed
+		
+		if (props.theme === 'white') {
+			color.value = '#ffffff'
+		}
+		if (props.isback == "false") {
+			isback.value = false
+		}
+		if (props.bgColor != "") {
+			bgColor.value = props.bgColor
+		}
+		if (props.fontColor != "") {
+			fontColor.value = props.fontColor
+		}
+	})
+	const leftClick = () => {
+		console.log('leftClick:')
+		console.log(props.leftFunc)
+		if (props.toWallet == true) {
+			navTabbar('/pages/project/index')
+		} else {
+			navBack()
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+	.title {
+		display: flex;
+		justify-content: center;
+		align-items: center;
+		position: relative;
+		padding-bottom: 30rpx;
+		z-index: 998;
+		font-size: 36rpx;
+
+		.icon {
+			position: absolute;
+			left: 30rpx;
+			width: 20rpx;
+			height: 34rpx;
+		}
+
+		.right {
+			position: absolute;
+			right: 50rpx;
+		}
+	}
+</style>

+ 35 - 0
components/loading/loading.vue

@@ -0,0 +1,35 @@
+<template>
+	<view class="load" v-if="props.show">
+		<uv-loading-icon :text="props.text" textSize="28rpx" timing-function="linear" :show="isLoad" color="#fff"
+			textColor="#fff"></uv-loading-icon>
+	</view>
+</template>
+
+<script setup>
+	import {
+		onMounted,
+		ref
+	} from 'vue';
+
+	const props = defineProps({
+		show: Boolean,
+		text: String,
+	})
+</script>
+
+<style lang="scss" scoped>
+	.load {
+		width: 300rpx;
+		height: 180rpx;
+		display: flex;
+		justify-content: center;
+		align-items: center;
+		position: fixed;
+		left: 50%;
+		top: 50%;
+		border-radius: 20rpx;
+		background-color: rgba(0, 0, 0, 0.4);
+		z-index: 999;
+		transform: translate(-50%, -50%);
+	}
+</style>

+ 52 - 0
components/notice/notice.vue

@@ -0,0 +1,52 @@
+<template>
+	<view v-if="props.show" class="notice" :style="{'background-color': props.bgColor, 'color':props.color}">
+		<text>{{props.text}}</text>
+	</view>
+</template>
+
+<script setup>
+	const props = defineProps({
+		show: Boolean,
+		text: String,
+		bgColor: {
+			type: String,
+			default: '#219EFF'
+		},
+		color: {
+			type: String,
+			default: '#ffffff'
+		},
+	});
+</script>
+
+<style lang="scss" scoped>
+	.notice {
+		width: 100vw;
+		height: 100rpx;
+		line-height: 100rpx;
+		position: fixed;
+		top: -100rpx;
+		text-align: center;
+		z-index: 9999;
+		transition: all 0.5s;
+		animation: go 2s ease;
+	}
+
+	@keyframes go {
+		0% {
+			top: -100rpx;
+		}
+
+		30% {
+			top: 0;
+		}
+
+		70% {
+			top: 0;
+		}
+
+		100% {
+			top: -100rpx;
+		}
+	}
+</style>

+ 93 - 0
components/pagination/pagination.vue

@@ -0,0 +1,93 @@
+<template>
+	<view class="page" @click="pageChange">
+		<view :class="onfirst ? 'prev end' : 'prev'" id="prev">{{$t('user.pre')}}</view>
+		<view class="info">{{curPageNum}}</view>
+		<view :class="onlast ? 'next end' : 'next'" id="next" :style="{ backgroundColor: mainColor }">
+			{{$t('user.next')}}</view>
+	</view>
+</template>
+
+<script setup>
+	import {
+		onMounted,
+		onUpdated,
+		ref
+	} from 'vue';
+	import {
+		useColortore
+	} from '@/store/index.js';
+	import {
+		onShow
+	} from "@dcloudio/uni-app";
+	import {
+		t
+	} from '@/locale'
+
+	const props = defineProps({
+		curPageNum: {
+			type: Number,
+			default: 1
+		},
+		isEnd: {
+			type: String,
+			default: ''
+		},
+	});
+
+	const curPageNum = ref(props.curPageNum)
+	const isEnd = ref(props.isEnd)
+	const onfirst = ref(true)
+	const onlast = ref(false)
+
+	const emit = defineEmits();
+
+	const mainColor = ref('')
+
+	onMounted(() => {
+		const colorStore = useColortore()
+		mainColor.value = colorStore.mainRed
+		if (props.curPageNum != 1) onfirst.value = false
+	})
+
+	onUpdated(() => {
+		if (props.isEnd == 'end') onlast.value = true
+	})
+
+	const pageChange = (e) => {
+		if (e.target.id === 'prev') {
+			if (curPageNum.value == 1) return
+			curPageNum.value--
+		} else if (e.target.id === 'next') {
+			if (props.isEnd == 'end') return
+			curPageNum.value++
+		}
+		if (curPageNum.value == 1) onfirst.value = true
+		else onfirst.value = false
+		if (props.isEnd == 'end') onlast.value = true
+		else onlast.value = false
+		emit('pageChange', curPageNum.value)
+	}
+</script>
+
+<style lang="scss" scoped>
+	.page {
+		display: flex;
+		justify-content: space-around;
+		align-items: center;
+		font-size: 28rpx;
+		padding-top: 30rpx;
+
+		.prev,
+		.next {
+			color: #ffffff;
+			font-size: 24rpx;
+			border-radius: 10rpx;
+			background-color: #219EFF;
+			padding: 4rpx 16rpx;
+		}
+	}
+
+	.end {
+		background-color: #CCCCCC !important;
+	}
+</style>

+ 64 - 0
components/progressline/progressline.vue

@@ -0,0 +1,64 @@
+<template>
+	<view class="progressmax" :style="{'background-color': props.backgroundColor}">
+		<view class="progressnow"
+			:style="{'background-image': 'linear-gradient(' + props.frontColor + ',' + props.backColor + ')', 'width':props.progress}">
+			<view class="progressani"></view>
+		</view>
+	</view>
+</template>
+
+<script setup>
+	const props = defineProps({
+		progress: {
+			type: String,
+			default: '0'
+		},
+		backgroundColor: {
+			type: String,
+			default: 'rgba(0, 0, 0, 0.2)'
+		},
+		frontColor: {
+			type: String,
+			default: '#CDCF5C'
+		},
+		backColor: {
+			type: String,
+			default: '#EF8835'
+		},
+	});
+</script>
+
+<style lang="scss" scoped>
+	.progressmax {
+		width: 240rpx;
+		height: 12rpx;
+		border-radius: 9999px;
+		// background-color: rgba(0, 0, 0, 0.2);
+
+		.progressnow {
+			// width: 90%;
+			height: inherit;
+			border-radius: inherit;
+			// background-image: linear-gradient(#CDCF5C, #EF8835);
+
+			.progressani {
+				height: inherit;
+				border-radius: inherit;
+				background-image: inherit;
+				animation: progress 2.5s infinite;
+			}
+		}
+	}
+
+	@keyframes progress {
+		0% {
+			background: rgba(255, 255, 255, 0.6);
+			width: 0;
+		}
+
+		100% {
+			background: transparent;
+			width: 100%;
+		}
+	}
+</style>

+ 120 - 0
components/tabbar/tabbar.vue

@@ -0,0 +1,120 @@
+<template>
+	<view class="tab-bar" :style="{ backgroundColor: mainColor }">
+		<!--  循环每个 item 菜单 -->
+		<view v-for="(item,index) in tabBarList" :key="index"
+			:class="{'tab-bar-item': true,currentTar: selected == item.id}" @click="switchTab(item, index)">
+			<view class="tab_text" :style="{color: selected == index ? selectedColor : color}">
+				<image class="tab_img" :src="selected == index ? item.selectedIconPath : item.iconPath"></image>
+				<view>{{ item.text }}</view>
+			</view>
+		</view>
+	</view>
+</template>
+
+<script setup>
+	import {
+		onMounted,
+		defineProps,
+		ref
+	} from 'vue'
+	import {
+		useColortore
+	} from '@/store/index.js';
+	import {
+		useI18n
+	} from 'vue-i18n'
+	const {
+		locale,
+		t
+	} = useI18n();
+
+	const mainColor = ref('')
+	onMounted(() => {
+		const colorStore = useColortore()
+		mainColor.value = colorStore.mainRed
+	})
+
+	// 子组件传递参数
+	const props = defineProps({
+		selected: {
+			type: String,
+			default: '0'
+		}
+	})
+	let color = ref('#ffffff')
+	let selectedColor = ref('#ffffff')
+	let tabBarList = ref([{
+		"id": 0,
+		"pagePath": "/pages/index/index",
+		"iconPath": "../../static/tabBar/home.png",
+		"selectedIconPath": "../../static/tabBar/home-selected.png",
+		"text": t("tabbar.home")
+	}, {
+		"id": 1,
+		"pagePath": "/pages/project/index",
+		"iconPath": "../../static/tabBar/project.png",
+		"selectedIconPath": "../../static/tabBar/project-selected.png",
+		"text": t("tabbar.project")
+	}, {
+		"id": 2,
+		"pagePath": "/pages/user/index",
+		"iconPath": "../../static/tabBar/user.png",
+		"selectedIconPath": "../../static/tabBar/user-selected.png",
+		"text": t("tabbar.me")
+	}])
+	// 跳转tabBar菜单栏
+	const switchTab = (item) => {
+		let url = item.pagePath;
+		uni.switchTab({
+			url
+		})
+	}
+
+	// 隐藏原生TabBar
+	uni.hideTabBar();
+</script>
+
+<style lang="scss" scoped>
+	// 外部装修
+	.tab-bar {
+		position: fixed;
+		bottom: 0;
+		width: 100vw;
+		height: 100rpx;
+		// background: #EC0000;
+		padding: 20rpx 0;
+		display: flex;
+		justify-content: center;
+		align-items: center;
+		z-index: 9999;
+
+		.currentTar {
+			border-radius: 15rpx;
+			transition: all 0.5s ease-in-out;
+		}
+
+		.tab-bar-item {
+			//flex: 0.5;
+			text-align: center;
+			display: flex;
+			justify-content: center;
+			align-items: center;
+			flex-direction: column;
+			width: 150rpx;
+			background-color: transparent;
+			transition: all 0.5s ease-in-out;
+			margin: auto;
+
+			.tab_img {
+				width: 50rpx;
+				height: 50rpx;
+			}
+
+			.tab_text {
+				font-size: 24rpx;
+				margin-top: 10rpx;
+				flex: 1;
+			}
+		}
+	}
+</style>

+ 20 - 0
index.html

@@ -0,0 +1,20 @@
+<!DOCTYPE html>
+<html lang="en">
+  <head>
+    <meta charset="UTF-8" />
+    <script>
+      var coverSupport = 'CSS' in window && typeof CSS.supports === 'function' && (CSS.supports('top: env(a)') ||
+        CSS.supports('top: constant(a)'))
+      document.write(
+        '<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0' +
+        (coverSupport ? ', viewport-fit=cover' : '') + '" />')
+    </script>
+    <title></title>
+    <!--preload-links-->
+    <!--app-context-->
+  </head>
+  <body>
+    <div id="app"><!--app-html--></div>
+    <script type="module" src="/main.js"></script>
+  </body>
+</html>

+ 730 - 0
locale/en_US.json

@@ -0,0 +1,730 @@
+{
+	"weather": {
+		"0": "Clear sky",
+		"1": "Mainly clear",
+		"2": "Partly cloudy",
+		"3": "Overcast",
+		"45": "Fog and depositing rime fog",
+		"48": "Depositing rime fog",
+		"51": "Drizzle: Light",
+		"53": "Drizzle: Moderate",
+		"55": "Drizzle: Dense intensity",
+		"56": "Freezing Drizzle: Light",
+		"57": "Freezing Drizzle: Dense intensity",
+		"61": "Rain: Slight",
+		"63": "Rain: Moderate",
+		"65": "Rain: Heavy",
+		"66": "Freezing Rain: Light",
+		"67": "Freezing Rain: Heavy",
+		"71": "Snow fall: Slight",
+		"73": "Snow fall: Moderate",
+		"75": "Snow fall: Heavy",
+		"77": "Snow grains",
+		"80": "Rain showers: Slight",
+		"81": "Rain showers: Moderate",
+		"82": "Rain showers: Violent",
+		"85": "Snow showers: Slight",
+		"86": "Snow showers: Heavy",
+		"95": "Thunderstorm: Slight or moderate",
+		"96": "Thunderstorm with slight hail",
+		"99": "Thunderstorm with heavy hail"
+	},
+	"index": {
+		"home": "Home",
+		"solar": "solar energy",
+		"charge": "Charging pile",
+		"my": "my",
+		"invest": "My investment",
+		"recommend": "Recommended for newbies",
+		"realtime": "Real Time",
+		"all": "Total Revenue",
+		"yesterday": "Yesterday Revenue",
+		"today": "Today Revenue",
+		"team": "Team Revenue",
+		"currencyUnit": "₱",
+		"unitSignal": "฿",
+		"China": "China",
+		"America": "America",
+		"Thailand": "Thailand",
+		"Chinese": "中文",
+		"English": "English",
+		"Thai": "Thai",
+		"prompt": "prompt",
+		"confirm": "Confirm",
+		"cancel": "Cancel",
+		"copy": "copy",
+		"modifiedSuccessfully": "Modification successful",
+		"popup": "popup",
+		"toLook": "look",
+		"get": "know it"
+	},
+	"request.err": "The request is error,please wait a minute",
+	"login.name": "Login",
+	"login.mobile": "mobile phone",
+	"login.enterMobile": "Please enter your mobile phone number",
+	"login.password": "password",
+	"login.enterPassword": "Please enter your password",
+	"login.forgot": "Forgot password/unbind",
+	"login.code": "Verification code",
+	"login.enterCode": "Please enter the verification code",
+	"login.getCode": "Get verification code",
+	"login.afterGet": "Reget after",
+
+	"register.name": "Register",
+	"utils": {
+		"tz_auto": "Auto-renew when it expires",
+		"money": "",
+		"moneyMark": "USD",
+		"cankao_info": "(fixed rate)",
+		"yuji_sy": "expected profit",
+		"sj_tips": "Live data Currency:USD",
+		"confirm": "Confirm",
+		"cancel": "Cancel",
+		"submit": "Submit",
+		"dailyIncome": "Interest rate",
+		"cycle": "Cycle",
+		"day": " days",
+		"startingAmount": "Initial amount",
+		"scale": "Scale",
+		"invest": "Invest",
+		"investOver": "Sold out",
+		"income": "Income",
+		"investmentAmount": "Investment amount",
+		"complete": "Complete",
+		"delete": "Delete",
+		"year": "Year",
+		"month": "Month"
+	},
+	"home": {
+		"index": "Home",
+		"item": "Wealth",
+		"invest": "Invest",
+		"activity": "Activity",
+		"my": "Account",
+		"esloan":"Estimated loan amount(PHP)",
+		"esstep":"①Fill in the information ②Apply for a loan ③Quick loan",
+		"card1sub":"Smart people have joined",
+		"card1person":"persion",
+		"card1lend":"Lended",
+		"loancheck":"Check Your Repayment Amount",
+		"easyloan":" Easy Loan ",
+		"esasyloandes":" Cumulative transaction amount (PHP) "
+	},
+
+	"item": {
+		"all": "All",
+		"tab1": "Beginners",
+		"tab2": "Popular",
+		"tab3": "Steady",
+		"tab4": "Featured",
+		"tab5": "Global",
+		"inputAmount": "Masukkan jumlah investasi",
+		"noData": "No data"
+	},
+	"user": {
+		"personalinfo": "Personal information editing",
+		"uncollectedPrincipal": "Principal",
+		"uncollectedInterest": "Income",
+		"cumulativeIncome": "Cumulative",
+		"earnings": "Total",
+		"availableBalance": "Account Balance",
+		"recharge": "recharge",
+		"withdraw": "Withdraw",
+		"rechargeRecord": "Recharge",
+		"purchaseRecord": "Purchase",
+		"withdrawalRecord": "Withdrawal",
+		"functions": "Common",
+		"myWallet": "my wallet",
+		"myTeam": "my team",
+		"bankcardManage": "Bankcard",
+		"language": "language",
+		"userAgreement": "agreement",
+		"privacyPolicy": "company profile",
+		"message": "message",
+		"logout": "log out",
+		"realtimeData": "real-time data",
+		"incomeandExpenditure": "Income and Expenditure Details",
+		"reward": "Total reward",
+		"teamSize": "Team (people)",
+		"teamEarnings": "Team earnings (yuan)",
+		"invitationLink": "invitation link",
+		"rewardDes": "Reward Introduction",
+		"changeLanguage": "Confirm to change the language to",
+		"teamdes": "15% for first-level customers, 10% for second-level customers, and 5% for third-level customers. Subordinate B invited by A can get an additional 15% of B's ​​daily income, for example, B purchases By purchasing a photovoltaic panel, customer A can obtain an income of 17.6 baht per day, and customer A can receive an additional income of 17.6*0.15=2.64 baht generated by customer B.",
+		"incrate": "The purchase of battery panels increases the yield of wealth management products",
+		"unread": "unread",
+		"service": "service",
+		"linkService": "linkService",
+		"pre": "Previous page",
+		"next": "Next page",
+		"all": "all",
+		"invest": "Financial product",
+		"solar": "solar energy",
+		"rebate": "affiliate commission",
+		"datefilter": "date selection",
+		"nomessage": "no message",
+		"account":"Account",
+		"credit_socre":"Your credit score is",
+		"credit_tip":"Mga rating inilabas ng Bangko Sentral ng Pilipinas (BSP)",
+		"purse":"My purse",
+		"setup":"Set up",
+		"repaymentp":"Repayment Period",
+		"emailbox":"Email Inbox",
+		"basic":"Basic Information",
+		"aboutus":"About Us",
+		"loanagree":"Loan Agreement",
+		"loginp":"Login Password",
+		"logouts":"Logout",
+		"data":"Data Certification",
+		"real_name_info":"Real Name Information",
+		"real_name_tip":"Your real information",
+		"age":"Age",
+		"age_tip":"Please enter your age",
+		"archive_info":"Archive Information",
+		"archive_tip":"Your archive information",
+		"account_info":"Account Information",
+		"account_tip":"Your account(Bank/Gcash)",
+		"signature":"Signature",
+		"signature_tip":"No sign data",
+		"goto_loan":"Goto Loan",
+		"id":"Identification Information",
+		"front_card":"Front Card",
+		"front_card_tip":"Please Upload Front Card",
+		"back_card":"Back Card",
+		"back_card_tip":"Please Upload Back Card",
+		"hold_card":"Hold ID Card",
+		"hold_card_tip":"Please Upload Hold ID Card",
+		"change_password":"Change Password",
+		"origin_password":"Original password",
+		"origin_password_tip":"Recent password",
+		"change_password_btn":"Change password",
+		"apply":"Apply For A Loan",
+		"personal_info":"Personal information",
+		"firstname":"First And Last Name",
+		"firstname_tip":"Please Enter Your Name",
+		"idcode":"Id Code",
+		"idcode_tip":"Please Enter Your ID Number",
+		"current_address":"Current Address",
+		"current_address_tip":"Please Enter The Current Address",
+		"zipcode":"Zip Code",
+		"zipcode_tip":"Please Enter The Postal Code",
+		"phone_number":"Phone Number",
+		"phone_number_tip":"Please enter the phone number",
+		"birthday":"Birthday",
+		"birthday_tip":"Please Enter Your Birthday",
+		"sex":"Sex",
+		"sex_tip":"Please Enter Your Sex",
+		"marital_status":"Marital Status",
+		"marital_status_tip":"Please Enter Your Marital Status",
+		"work_info":"Work Information",
+		"job_type":"JobType",
+		"job_type_tip":"Please Enter The Job Type",
+		"company_name":"Company Name",
+		"company_name_tip":"Please Enter The Company Name",
+		"company_address":"Company Address",
+		"company_address_tip":"Please Enter The Company Address",
+		"monthly_income":"Monthly Income",
+		"monthly_income_tip":"Please Enter The Monthly Income",
+		"nodata":"No more data yet",
+		"withdraw":"Withdraw",
+		"account_balance":"Account Balance:",
+		"money":"Money:",
+		"password":"Password:",
+		"password_tip":"please enter your password",
+		"transaction":"Transaction",
+		"trans_time":"Withdrawal Time:",
+		"trans_amount":"Withdrawal Amount:",
+		"trans_status":"Withdrawal Status:",
+		"desposite_time":"Desposite Time:",
+		"desposite_amount":"Desposite Amount:",
+		"bank":"Bind Bank Card",
+		"account_name":"Account Name",
+		"account_name_tip":"Please Enter Account Name",
+		"bank_name":"Bank Name",
+		"bank_name_tip":"Please Enter Bank Name",
+		"bank_account_number":"Bank Account Number",
+		"bank_account_number_tip":"Please Enter Bank Account Number",
+		"clear":"Clear",
+		"submit":"Submit",
+		"signature_alert_tip":"Please handwrite your signature",
+		"nextstep":"Next Step",
+		"loan_confirm":"Loan Details",
+		"loan_confirm_sub":"Loan Amount",
+		"loan_confirm_element":"Element",
+		"loan_confirm_month":"Month",
+		"loan_confirm_repayment":"Repayment Amount",
+		"loan_confirm_borrow_time":"Borrowing Time",
+		"loan_confirm_borrower":"Name of Borrowers",
+		"loan_confirm_income_bank":"Bank Name",
+		"loan_confirm_debit_card":"Bank Number",
+		"signature_label":"Please sign within the dotted line, the signature must be standardized, complete and clear",
+		"confirm_submit":" Confirm Submition ",
+		"contract":"Contract",
+		"payment_details":"Repayment Details",
+		"phase":"Phase",
+		"monthly_repayment":"Monthly Repayment",
+		"withdraw_money_tip":"Please enter the withdraw amount",
+		"withdraw_password_tip":"Please enter the withdraw password"
+		
+	},
+	"search": {
+		"history": "Search history",
+		"historyEmpty": "No search history",
+		"notFound": "Search record not found"
+	},
+	"safe": {
+		"setting": "Setting",
+		"verified": "Not Verified Email",
+		"verifiedIdentity": "Verified Email",
+		"toVerify": "To Verify",
+		"paymentOptions": "Wallet management",
+		"language": "Language",
+		"signInPassword": "Login Password",
+		"paymentPassword": "Payment Password",
+		"signOut": "Sign Out"
+	},
+	"orders": {
+		"record": "Investment record",
+		"noOrders": "No investment record",
+		"finish": "Done",
+		"unfinish": "Ongoing"
+	},
+	"loading": {
+		"default": "loading",
+		"avatar": "avatar uploading",
+		"ordering": "order creating",
+		"vouchering": "credit uploading",
+		"login": "loading"
+	},
+	"request": {
+		"err":"request error,please wait"
+	},
+	"login": {
+		"welcome": "Welcome to us",
+		"mobile": "Mobile",
+		"signin": "Sign in",
+		"signup": "Sign up",
+		"submit": "Submit",
+		"loginEnterPassword": "Please enter your password",
+		"enterMobile": "Please enter your mobile phone number",
+		"code": "Verification code",
+		"enterCode": "Please enter your verification code",
+		"getCode": "Get verification code",
+		"sendSuccessfully": "Send successfully",
+		"renew": "Reacquire later",
+		"password": "Password",
+		"enterPassword": "Please enter your new password",
+		"newPassword": "New password",
+		"confirmPassword": "Confirm password",
+		"enterComfirmPassword": "Please enter your comfirm password",
+		"comfirmPasswordError": "comfirm password not match password",
+		"inviteCode": "invite code",
+		"enterInviteCode": "Please enter your invitation code",
+		"remember": "remember password",
+		"forgot": "forgot password",
+		"login": "login",
+		"register": "register",
+		"loginSuccessfully": "Login successfully",
+		"registerSuccessfully": "Registration successful",
+		"modifySuccessfully": "Modify successfully",
+		"noUser": "User does not exist",
+		"passwordError": "Wrong password",
+		"passwordShort": "Password length is too short",
+		"passwordNull": "Password cannot be empty",
+		"phoneNull": "Mobile phone number cannot be empty",
+		"codeUnexpired": "The verification code has not expired",
+		"haveNull": "Incomplete information",
+		"phoneError": "Wrong number",
+		"2pdnotsame": "Two passwords are inconsistent",
+		"codeError": "Verification code error"
+	},
+	"prompt": {
+		"copySuccessfully": "Copied to pasteboard",
+		"submitSuccessfully": "Submit successfully",
+		"setSuccessfully": "Set successfully",
+		"modifiedSuccessfully": "Modification successful",
+		"avatarSuccessfully": "Avatar modified successfully",
+		"nameSuccessfully": "Nickname modified successfully",
+		"sendCodeSuccessfully": "Send verification code successfully",
+		"loginSuccessfully": "Login successfully",
+		"registerSuccessfully": "Registration successful",
+		"resetSuccessfully": "Profile update reset successfully",
+		"buySuccessfully": "Buy successfully",
+		"addCardSuccessfully": "Bank card added successfully",
+		"delCardSuccessfully": "Bank card deleted successfully",
+		"sendCodeError": "Failed to send verification code",
+		"nameShortError": "Nickname length is too short",
+		"passwordShortError": "Password length is too short",
+		"pdNotSameError": "Two passwords are inconsistent",
+		"buyLittleError": "The investment amount cannot be less than the starting investment amount",
+		"buyMuchError": "Exceeds the current purchase quantity",
+		"buyError": "Purchase failed",
+		"voucherNull": "The voucher cannot be empty",
+		"phoneNull": "Mobile phone number cannot be empty",
+		"passwordNull": "Password cannot be empty",
+		"codeNull": "Verification code cannot be empty",
+		"nameNull": "Name cannot be empty",
+		"bankNull": "The bank name cannot be empty",
+		"bankcardNull": "The bank card number cannot be empty",
+		"moneyNull": "Withdrawal amount cannot be empty"
+	},
+	"project": {
+		"incomeDes": "Income introduction",
+		"income": "income",
+		"incomeDesDetail": "A board earns 2.2 baht per hour, and you can earn 8 hours a day. That is 17.6, divide it into eight hours of income. Start at 9 am and end at 5 pm. These eight hours go Calculated. Time also follows the time difference in Thailand. Purchasing a solar panel requires 1,000 baht. The purchase period is one year. After one year, the principal will be automatically returned to your account balance, and this income will also be stopped. .In other words, buying a solar panel can only earn you one year's profit.",
+		"rate": "yield",
+		"cycle": "cycle",
+		"purchase": "qi",
+		"level": "level display",
+		"startInvest": "Start",
+		"customersCanPurchase": "Customers can purchase",
+		"maxPurchase": "The maximum number of purchases available at the current level",
+		"block": "block",
+		"needtoInvite": "need to invite",
+		"effectiveSubordinate": "effective subordinates",
+		"toInvite": "To invite",
+		"toPurchase": "ToPurchase",
+		"quantity": "Purchase quantity",
+		"investmentAmount": "investment amount",
+		"inviteFriends": "Invite friends to earn money",
+		"myInvite": "My invitation",
+		"successfullyInvite": "SuccessfullyInvite",
+		"getRewarded": "Get rewarded",
+		"slogan": "Earn income every day",
+		"toInvest": "To Invest",
+		"buyTooMuch": "Exceeds the current purchase quantity",
+		"buySuccessfully": "Buy successfully",
+		"copySuccessfully": "Copied to pasteboard"
+	},
+	"register": {
+		"register": "Register",
+		"signIn": "Log In",
+		"signUp": "Sign Up",
+		"phoneNumber": "phone",
+		"password": "Password",
+		"code": "Code",
+		"sendCode": "Send Code",
+		"sendSuccess": "Send Successed",
+		"referralCode": "Referral Code",
+		"signUpBtn": "Sign Up",
+		"phoneEmpty": "Your Email is empty",
+		"passwordEmpty": "Your password is empty",
+		"codeEmpty": "Your password is empty",
+		"signUpSuccess": "Success"
+	},
+	"forgetpwe": {
+		"reset": "Reset Password",
+		"phoneNumber": "Email",
+		"code": "Code",
+		"send": "Send",
+		"newPassword": "New Password",
+		"submit": "Submit",
+		"phoneNumberEmpty": "Your email is empty",
+		"sendSuccess": "Send successed",
+		"newPasswordEmpty": "Your new password is empty",
+		"codeEmpty": "Your code is empty",
+		"success": "Successed"
+	},
+	"sign": {
+		"sign_day_num": "You have signed in for ",
+		"days": " days",
+		"one": "Mo",
+		"two": "Tu",
+		"three": "We",
+		"four": "Th",
+		"five": "Fr",
+		"six": "Sa",
+		"seven": "Su",
+		"rewardToday": "Check in reward today",
+		"cash": "Cash",
+		"addToBalance": "Direct release to account balance",
+		"cumulative": "Cumulative sign in reward",
+		"note2": "Note: bonus envelopes are directly distributed to the account balance. Please pay attention to check!",
+		"get": "Get",
+		"signIn": "Sign in",
+		"success": "Succeeded",
+		"sign": "Receive",
+		"signed": "Received",
+		"signing": "Receiving",
+		"signDays": "Check in days"
+	},
+	"share": {
+		"introduction": "Reward introduction",
+		"tip1": "First-level member recharge, reward ",
+		"tip11": "",
+		"tip2": "Second-level member recharge, reward ",
+		"tip22": "",
+		"tip3": "Third-level member recharge, reward ",
+		"tip33": "",
+		"commission": "Total Rewards",
+		"team": "Team",
+		"recharge": "Recharge",
+		"people": "people",
+		"shareLink": "Invitation link",
+		"level1": "Level 1",
+		"level2": "Level 2",
+		"level3": "Level 3",
+		"saveImg": "Download"
+	},
+	"notice": {
+		"message": "Message",
+		"unRead": " unread",
+		"detail": "detail"
+	},
+	"invest": {
+		"recharge": "Account recharge",
+		"availableBalance": "Available balance",
+		"rechargeAmount": "Recharge amount",
+		"paymentMethod": "Payment method",
+		"next": "Next step",
+		"paymentMethodEmpty": "Please select payment method",
+		"rechargeAmountLow": "Recharge amount cannot be empty or less than ",
+		"rechargeAmountLow1": "",
+		"overtop": "Recharge frequency is too high",
+		"success": "Recharge succeeded",
+		"failed": "Recharge failed"
+	},
+	"invest_qrcode": {
+		"recharge": "Account recharge",
+		"address": "Address:",
+		"amount": "Amount:",
+		"explain": "Explain:",
+		"walletAddress": "Wallet Address",
+		"copyWalletAddress": "Copy Address",
+		"submittedSuccessfully": "Recharge application submitted successfully",
+		"copySucceeded": "Copy succeeded",
+		"scanQRcode": "Scan QR code and transfer into recharge amount"
+	},
+	"invest_bank": {
+		"copy": "Copy",
+		"name": "Name:",
+		"account": "Account:",
+		"bank": "Bank:"
+	},
+	"cash": {
+		"bank": "Bank card",
+		"withdraw": "Withdrawal",
+		"wallet": "Wallet",
+		"chooseWallet": "Please select Wallet",
+		"amount": "Withdrawal amount",
+		"withdrawableAmount": "Withdrawable amount ",
+		"addWallet": "Add a new withdrawal Wallet",
+		"arrivalTime": "The withdrawal will be automatically reviewed and processed by the system. The estimated arrival time is within 30 minutes. Please wait patiently!!",
+		"inReview": "Under review",
+		"withdrawalAccountEmpty": "Please select withdrawal Wallet",
+		"withdrawalAmountEmpty": "Withdrawal amount cannot be blank",
+		"withdrawalAmountNotAllow": "Withdrawal amount cannot be negative",
+		"withdrawalAmountHigh": "Withdrawal amount cannot be greater than balance",
+		"withdrawalPasswordEmpty": "Withdrawal password cannot be blank",
+		"success": "Withdrawal application succeeded",
+		"charge": "Handling fee ",
+		"setPwdFirst": "Please set wallet password first",
+		"setNow": "Set up now",
+		"tips": "Please enter the payment password"
+	},
+	"account": {
+		"manage": "Wallet management",
+		"withdrawalAccounts": " bound withdrawal Wallet",
+		"add": "Add Wallet",
+		"addAccount": "Add Wallet",
+		"bank": "Wallet type",
+		"address": "Wallet address",
+		"addressTit": "Please enter wallet address",
+		"submit": "Submit",
+		"success": "Added successfully",
+		"addressEmpty": "Please enter wallet address",
+		"qrcodeEmpty": "Please upload wallet QR code",
+		"within2megabytes": "Please upload pictures within 2m",
+		"supportPicture": "Only JPG and PNG images can be uploaded",
+		"uploadSuccess": "Upload succeeded",
+		"uploadFail": "Upload failed",
+		"qrcodetips": "Wallet QR code"
+	},
+	"accountUsdt": {
+		"alipayAccount": "Alipay account:",
+		"alipayAccountEmpty": "Please enter your Alipay account",
+		"alipayQrcode": "Alipay receipt code",
+		"wechatAccount": "We chat number :",
+		"wechatAccountEmpty": "Please enter WeChat ID",
+		"wechatQrcode": "WeChat payment code",
+		"name": "Name:",
+		"nameEmpty": "Please enter cardholder name",
+		"account": "account:",
+		"accountEmpty": "Please enter the card number",
+		"area": "Branch:",
+		"areaEmpty": "Please enter branch"
+	},
+	"moneybag": {
+		"myWallet": "My wallet",
+		"rechargeRecord": "Recharge record",
+		"withdrawRecord": "Withdrawal record",
+		"accountBalance": "Total balance",
+		"recharge": "Recharge",
+		"withdraw": "Withdraw"
+	},
+	"authEmail": {
+		"authentication": "Verify Email",
+		"tip": "For your security and points reward,please verify your email firstly",
+		"code": "Code",
+		"sendcode": "Send Code",
+		"sendsuccess": "Send succeeded",
+		"submit": "Confirm",
+		"codeEmpty": "Your Code is empty",
+		"success": "Validation succeeded"
+	},
+	"setpwd": {
+		"modifyLoginPassword": "Login password",
+		"setNewLoginPassword": "Modify login password",
+		"usemobilenumber": "Use Email",
+		"useoriginalpassword": "Use original password",
+		"boundmobilenumber": "Bound Email:",
+		"SMSverificationcode": "Email verification code",
+		"sendcode": "Send code",
+		"originalloginpassword": "Original login password",
+		"newpassword": "New login password",
+		"confirmnewpassword": "Confirm new password",
+		"modify": "Modify",
+		"sendsuccessfully": "Send successed",
+		"originalpasswordcannotbeempty": "Original password cannot be empty",
+		"newpasswordcannotbeempty": "New login password cannot be empty",
+		"inconsistent": "The confirmation password and the new password are inconsistent",
+		"modifiedsuccessfully": "Modified successfully"
+	},
+	"setpaypwd": {
+		"useloginpassword": "Use login password",
+		"modifyPaymentPassword": "Payment password",
+		"setNewPaymentPassword": "Modify payment password",
+		"loginpassword": "Login password",
+		"loginpasswordcannotbeempty": "Login password cannot be empty",
+		"newpassword": "6-digit pure number",
+		"newpasswordcannotbeempty": "New payment password cannot be empty",
+		"inconsistent": "The confirmation password is inconsistent with the new payment password",
+		"pureNumber": "Please enter a pure number"
+	},
+	"lang": {
+		"curtext": "English"
+	},
+	"charge": {
+		"search": "search",
+		"placeholder": "Charging pile name",
+		"orderDetail": "Order Details",
+		"level": "Current level",
+		"orderTime": "order time",
+		"total": "total",
+		"actualPayment": "actual payment",
+		"orderTotal": "OrderTotal",
+		"orderInfo": "Order Information",
+		"haveNumbers": "have numbers",
+		"hourlyEarning": "Hourly Earning",
+		"accumulatedEarning": "Accumulated Earning",
+		"purchaseDate": "Purchase Date",
+		"finishDate": "End date",
+		"searchTip": "Here are the search results found for you:",
+		"nothingTip": "Nothing found",
+		"buyError": "Purchase failed",
+		"fullyInvested": "The project has been fully invested",
+		"finish": "Completed",
+		"ing": "in progress"
+	},
+	"bankcard": {
+		"manage": "Management",
+		"finish": "Complete",
+		"add": "Add new card",
+		"bankcardAdd": "Bankcard Add",
+		"myCard": "my card",
+		"unit": "张",
+		"name": "name",
+		"cardNumber": "Bank card number",
+		"bankName": "Bank Name",
+		"addConfirm": "Confirm to add",
+		"addSuccessfully": "Add successfully",
+		"prompt": "Are you sure you want to delete this bank card?",
+		"deleteSuccessfully": "Delete successfully"
+	},
+	"tabbar": {
+		"home": "Home",
+		"project": "Wallet",
+		"item": "Charge",
+		"me": "Me"
+	},
+	"tabtitle":{
+		"home":"Loan Lending",
+		"wallet":"Wallet",
+		"me":"Personal Center",
+		"monthly":"Monthly Repayment Amount"
+	},
+	"monthly":{
+		"tips":"tips",
+		"tips_content":"You currently have no loans to repay"
+	},
+	"wallet":{
+		"title":"Account Balance",
+		"withdraw":"Withdraw",
+		"withdrawn":"Withdrawal Successful",
+		"statusTitle":"Situation State",
+		"statusSub":"Describe:",
+		"statusDesNo":"No Message",
+		"statusDesLock":"Moderated",
+		"statusCashNo":"Moderated",
+		"statusCashYes":"Withdrawn",
+		"statusCashRefused":"Account Locked",
+		"week":"month",
+		"loadAmount":"Loan Amount",
+		"borrowPeriod":"Borrowing period",
+		"contract":"View Contract",
+		"step1":"Submit Com",
+		"step2":"Under View",
+		"step3":"Approved",
+		"step4":"Successfully",
+		"repayment":"View Repayment",
+		"lanWeek":"PAYING WITHIN 3 WORKING DAYS",
+		"loanRate":"Monthly interest rate",
+		"borrowTime":"Borrowing time",
+		"repaymentIn":"Repayment in",
+		"php":"PHP",
+		"installments":"installments",
+		"interestRate":"(The interest rate is ",
+		"next":"N   E   X   T",
+		"step":"S	T	E	P",
+		"month":"month",
+		"edit":"Amount Edit",
+		"amount":"Amount",
+		"amountRule":"Amount Value out of range",
+		"msgTitle":"notification"
+	},
+	"memberlevel": {
+		"level1": "1Level",
+		"level2": "2Level",
+		"level3": "3Level",
+		"level4": "4Level",
+		"level5": "5Level",
+		"level6": "6Level",
+		"level7": "7Level",
+		"level8": "8Level",
+		"level9": "9Level",
+		"level10": "10Level"
+	},
+	"recharge": {
+		"availableBalance": "Account balance (yuan)",
+		"rechargePrice": "Please enter the recharge amount",
+		"paymentMethod": "payment method",
+		"paybyBankcard": "Pay by Bankcard",
+		"paymentVoucher": "Payment Voucher",
+		"rechargebyBandcard": "Bandcard recharge"
+	},
+	"withdraw": {
+		"availableWithdraw": "Amount of cash available (yuan)",
+		"withdrawPrice": "Withdrawal amount",
+		"allPrice": "Withdraw all",
+		"withdrawTo": "Withdraw To",
+		"constructionBank": "construction bank",
+		"withdrawtoBandcard": "Withdraw to Bandcard",
+		"hint": "forget withdraw password",
+		"passwdhint": "withdraw password"
+	},
+	"msg": {
+		"unread": "unread",
+		"readed": "readed"
+	}
+	
+}

+ 33 - 0
locale/index.js

@@ -0,0 +1,33 @@
+import enUS from './en_US.json'
+import thTH from './th_TH.json'
+import zhCN from './zh_CN.json'
+
+import { createI18n } from 'vue-i18n'
+import storage from "@/utils/storage.js"
+
+const lang = storage.getCache('lang')
+
+const defaultLocale = lang || 'zh_cn'
+
+export const i18nConfig = {
+	locale: defaultLocale,
+	messages: {
+		'en_us': enUS,
+		'th_th': thTH,
+		'zh_cn': zhCN,
+	},
+}
+
+const i18n = createI18n(i18nConfig)
+
+export const t = i18n.global.t
+
+export function setLocale(locale) {
+	i18n.global.locale = locale
+}
+
+export function setupI18n(app) {
+	app.use(i18n)
+}
+
+export default i18n

+ 730 - 0
locale/th_TH.json

@@ -0,0 +1,730 @@
+{
+	"weather": {
+		"0": "Clear sky",
+		"1": "Mainly clear",
+		"2": "Partly cloudy",
+		"3": "Overcast",
+		"45": "Fog and depositing rime fog",
+		"48": "Depositing rime fog",
+		"51": "Drizzle: Light",
+		"53": "Drizzle: Moderate",
+		"55": "Drizzle: Dense intensity",
+		"56": "Freezing Drizzle: Light",
+		"57": "Freezing Drizzle: Dense intensity",
+		"61": "Rain: Slight",
+		"63": "Rain: Moderate",
+		"65": "Rain: Heavy",
+		"66": "Freezing Rain: Light",
+		"67": "Freezing Rain: Heavy",
+		"71": "Snow fall: Slight",
+		"73": "Snow fall: Moderate",
+		"75": "Snow fall: Heavy",
+		"77": "Snow grains",
+		"80": "Rain showers: Slight",
+		"81": "Rain showers: Moderate",
+		"82": "Rain showers: Violent",
+		"85": "Snow showers: Slight",
+		"86": "Snow showers: Heavy",
+		"95": "Thunderstorm: Slight or moderate",
+		"96": "Thunderstorm with slight hail",
+		"99": "Thunderstorm with heavy hail"
+	},
+	"index": {
+		"home": "Home",
+		"solar": "solar energy",
+		"charge": "Charging pile",
+		"my": "my",
+		"invest": "My investment",
+		"recommend": "Recommended for newbies",
+		"realtime": "Real Time",
+		"all": "Total Revenue",
+		"yesterday": "Yesterday Revenue",
+		"today": "Today Revenue",
+		"team": "Team Revenue",
+		"currencyUnit": "₱",
+		"unitSignal": "฿",
+		"China": "China",
+		"America": "America",
+		"Thailand": "Thailand",
+		"Chinese": "中文",
+		"English": "English",
+		"Thai": "Thai",
+		"prompt": "prompt",
+		"confirm": "Confirm",
+		"cancel": "Cancel",
+		"copy": "copy",
+		"modifiedSuccessfully": "Modification successful",
+		"popup": "popup",
+		"toLook": "look",
+		"get": "know it"
+	},
+	"request.err": "The request is error,please wait a minute",
+	"login.name": "Login",
+	"login.mobile": "mobile phone",
+	"login.enterMobile": "Please enter your mobile phone number",
+	"login.password": "password",
+	"login.enterPassword": "Please enter your password",
+	"login.forgot": "Forgot password/unbind",
+	"login.code": "Verification code",
+	"login.enterCode": "Please enter the verification code",
+	"login.getCode": "Get verification code",
+	"login.afterGet": "Reget after",
+
+	"register.name": "Register",
+	"utils": {
+		"tz_auto": "Auto-renew when it expires",
+		"money": "",
+		"moneyMark": "USD",
+		"cankao_info": "(fixed rate)",
+		"yuji_sy": "expected profit",
+		"sj_tips": "Live data Currency:USD",
+		"confirm": "Confirm",
+		"cancel": "Cancel",
+		"submit": "Submit",
+		"dailyIncome": "Interest rate",
+		"cycle": "Cycle",
+		"day": " days",
+		"startingAmount": "Initial amount",
+		"scale": "Scale",
+		"invest": "Invest",
+		"investOver": "Sold out",
+		"income": "Income",
+		"investmentAmount": "Investment amount",
+		"complete": "Complete",
+		"delete": "Delete",
+		"year": "Year",
+		"month": "Month"
+	},
+	"home": {
+		"index": "Home",
+		"item": "Wealth",
+		"invest": "Invest",
+		"activity": "Activity",
+		"my": "Account",
+		"esloan":"Estimated loan amount(PHP)",
+		"esstep":"①Fill in the information ②Apply for a loan ③Quick loan",
+		"card1sub":"Smart people have joined",
+		"card1person":"persion",
+		"card1lend":"Lended",
+		"loancheck":"Check Your Repayment Amount",
+		"easyloan":" Easy Loan ",
+		"esasyloandes":" Cumulative transaction amount (PHP) "
+	},
+
+	"item": {
+		"all": "All",
+		"tab1": "Beginners",
+		"tab2": "Popular",
+		"tab3": "Steady",
+		"tab4": "Featured",
+		"tab5": "Global",
+		"inputAmount": "Masukkan jumlah investasi",
+		"noData": "No data"
+	},
+	"user": {
+		"personalinfo": "Personal information editing",
+		"uncollectedPrincipal": "Principal",
+		"uncollectedInterest": "Income",
+		"cumulativeIncome": "Cumulative",
+		"earnings": "Total",
+		"availableBalance": "Account Balance",
+		"recharge": "recharge",
+		"withdraw": "Withdraw",
+		"rechargeRecord": "Recharge",
+		"purchaseRecord": "Purchase",
+		"withdrawalRecord": "Withdrawal",
+		"functions": "Common",
+		"myWallet": "my wallet",
+		"myTeam": "my team",
+		"bankcardManage": "Bankcard",
+		"language": "language",
+		"userAgreement": "agreement",
+		"privacyPolicy": "company profile",
+		"message": "message",
+		"logout": "log out",
+		"realtimeData": "real-time data",
+		"incomeandExpenditure": "Income and Expenditure Details",
+		"reward": "Total reward",
+		"teamSize": "Team (people)",
+		"teamEarnings": "Team earnings (yuan)",
+		"invitationLink": "invitation link",
+		"rewardDes": "Reward Introduction",
+		"changeLanguage": "Confirm to change the language to",
+		"teamdes": "15% for first-level customers, 10% for second-level customers, and 5% for third-level customers. Subordinate B invited by A can get an additional 15% of B's ​​daily income, for example, B purchases By purchasing a photovoltaic panel, customer A can obtain an income of 17.6 baht per day, and customer A can receive an additional income of 17.6*0.15=2.64 baht generated by customer B.",
+		"incrate": "The purchase of battery panels increases the yield of wealth management products",
+		"unread": "unread",
+		"service": "service",
+		"linkService": "linkService",
+		"pre": "Previous page",
+		"next": "Next page",
+		"all": "all",
+		"invest": "Financial product",
+		"solar": "solar energy",
+		"rebate": "affiliate commission",
+		"datefilter": "date selection",
+		"nomessage": "no message",
+		"account":"Account",
+		"credit_socre":"Your credit score is",
+		"credit_tip":"Mga rating inilabas ng Bangko Sentral ng Pilipinas (BSP)",
+		"purse":"My purse",
+		"setup":"Set up",
+		"repaymentp":"Repayment Period",
+		"emailbox":"Email Inbox",
+		"basic":"Basic Information",
+		"aboutus":"About Us",
+		"loanagree":"Loan Agreement",
+		"loginp":"Login Password",
+		"logouts":"Logout",
+		"data":"Data Certification",
+		"real_name_info":"Real Name Information",
+		"real_name_tip":"Your real information",
+		"age":"Age",
+		"age_tip":"Please enter your age",
+		"archive_info":"Archive Information",
+		"archive_tip":"Your archive information",
+		"account_info":"Account Information",
+		"account_tip":"Your account(Bank/Gcash)",
+		"signature":"Signature",
+		"signature_tip":"No sign data",
+		"goto_loan":"Goto Loan",
+		"id":"Identification Information",
+		"front_card":"Front Card",
+		"front_card_tip":"Please Upload Front Card",
+		"back_card":"Back Card",
+		"back_card_tip":"Please Upload Back Card",
+		"hold_card":"Hold ID Card",
+		"hold_card_tip":"Please Upload Hold ID Card",
+		"change_password":"Change Password",
+		"origin_password":"Original password",
+		"origin_password_tip":"Recent password",
+		"change_password_btn":"Change password",
+		"apply":"Apply For A Loan",
+		"personal_info":"Personal information",
+		"firstname":"First And Last Name",
+		"firstname_tip":"Please Enter Your Name",
+		"idcode":"Id Code",
+		"idcode_tip":"Please Enter Your ID Number",
+		"current_address":"Current Address",
+		"current_address_tip":"Please Enter The Current Address",
+		"zipcode":"Zip Code",
+		"zipcode_tip":"Please Enter The Postal Code",
+		"phone_number":"Phone Number",
+		"phone_number_tip":"Please enter the phone number",
+		"birthday":"Birthday",
+		"birthday_tip":"Please Enter Your Birthday",
+		"sex":"Sex",
+		"sex_tip":"Please Enter Your Sex",
+		"marital_status":"Marital Status",
+		"marital_status_tip":"Please Enter Your Marital Status",
+		"work_info":"Work Information",
+		"job_type":"JobType",
+		"job_type_tip":"Please Enter The Job Type",
+		"company_name":"Company Name",
+		"company_name_tip":"Please Enter The Company Name",
+		"company_address":"Company Address",
+		"company_address_tip":"Please Enter The Company Address",
+		"monthly_income":"Monthly Income",
+		"monthly_income_tip":"Please Enter The Monthly Income",
+		"nodata":"No more data yet",
+		"withdraw":"Withdraw",
+		"account_balance":"Account Balance:",
+		"money":"Money:",
+		"password":"Password:",
+		"password_tip":"please enter your password",
+		"transaction":"Transaction",
+		"trans_time":"Withdrawal Time:",
+		"trans_amount":"Withdrawal Amount:",
+		"trans_status":"Withdrawal Status:",
+		"desposite_time":"Desposite Time:",
+		"desposite_amount":"Desposite Amount:",
+		"bank":"Bind Bank Card",
+		"account_name":"Account Name",
+		"account_name_tip":"Please Enter Account Name",
+		"bank_name":"Bank Name",
+		"bank_name_tip":"Please Enter Bank Name",
+		"bank_account_number":"Bank Account Number",
+		"bank_account_number_tip":"Please Enter Bank Account Number",
+		"clear":"Clear",
+		"submit":"Submit",
+		"signature_alert_tip":"Please handwrite your signature",
+		"nextstep":"Next Step",
+		"loan_confirm":"Loan Details",
+		"loan_confirm_sub":"Loan Amount",
+		"loan_confirm_element":"Element",
+		"loan_confirm_month":"Month",
+		"loan_confirm_repayment":"Repayment Amount",
+		"loan_confirm_borrow_time":"Borrowing Time",
+		"loan_confirm_borrower":"Name of Borrowers",
+		"loan_confirm_income_bank":"Bank Name",
+		"loan_confirm_debit_card":"Bank Number",
+		"signature_label":"Please sign within the dotted line, the signature must be standardized, complete and clear",
+		"confirm_submit":" Confirm Submition ",
+		"contract":"Contract",
+		"payment_details":"Repayment Details",
+		"phase":"Phase",
+		"monthly_repayment":"Monthly Repayment",
+		"withdraw_money_tip":"Please enter the withdraw amount",
+		"withdraw_password_tip":"Please enter the withdraw password"
+		
+	},
+	"search": {
+		"history": "Search history",
+		"historyEmpty": "No search history",
+		"notFound": "Search record not found"
+	},
+	"safe": {
+		"setting": "Setting",
+		"verified": "Not Verified Email",
+		"verifiedIdentity": "Verified Email",
+		"toVerify": "To Verify",
+		"paymentOptions": "Wallet management",
+		"language": "Language",
+		"signInPassword": "Login Password",
+		"paymentPassword": "Payment Password",
+		"signOut": "Sign Out"
+	},
+	"orders": {
+		"record": "Investment record",
+		"noOrders": "No investment record",
+		"finish": "Done",
+		"unfinish": "Ongoing"
+	},
+	"loading": {
+		"default": "loading",
+		"avatar": "avatar uploading",
+		"ordering": "order creating",
+		"vouchering": "credit uploading",
+		"login": "loading"
+	},
+	"request": {
+		"err":"request error,please wait"
+	},
+	"login": {
+		"welcome": "Welcome to us",
+		"mobile": "Mobile",
+		"signin": "Sign in",
+		"signup": "Sign up",
+		"submit": "Submit",
+		"loginEnterPassword": "Please enter your password",
+		"enterMobile": "Please enter your mobile phone number",
+		"code": "Verification code",
+		"enterCode": "Please enter your verification code",
+		"getCode": "Get verification code",
+		"sendSuccessfully": "Send successfully",
+		"renew": "Reacquire later",
+		"password": "Password",
+		"enterPassword": "Please enter your new password",
+		"newPassword": "New password",
+		"confirmPassword": "Confirm password",
+		"enterComfirmPassword": "Please enter your comfirm password",
+		"comfirmPasswordError": "comfirm password not match password",
+		"inviteCode": "invite code",
+		"enterInviteCode": "Please enter your invitation code",
+		"remember": "remember password",
+		"forgot": "forgot password",
+		"login": "login",
+		"register": "register",
+		"loginSuccessfully": "Login successfully",
+		"registerSuccessfully": "Registration successful",
+		"modifySuccessfully": "Modify successfully",
+		"noUser": "User does not exist",
+		"passwordError": "Wrong password",
+		"passwordShort": "Password length is too short",
+		"passwordNull": "Password cannot be empty",
+		"phoneNull": "Mobile phone number cannot be empty",
+		"codeUnexpired": "The verification code has not expired",
+		"haveNull": "Incomplete information",
+		"phoneError": "Wrong number",
+		"2pdnotsame": "Two passwords are inconsistent",
+		"codeError": "Verification code error"
+	},
+	"prompt": {
+		"copySuccessfully": "Copied to pasteboard",
+		"submitSuccessfully": "Submit successfully",
+		"setSuccessfully": "Set successfully",
+		"modifiedSuccessfully": "Modification successful",
+		"avatarSuccessfully": "Avatar modified successfully",
+		"nameSuccessfully": "Nickname modified successfully",
+		"sendCodeSuccessfully": "Send verification code successfully",
+		"loginSuccessfully": "Login successfully",
+		"registerSuccessfully": "Registration successful",
+		"resetSuccessfully": "Profile update reset successfully",
+		"buySuccessfully": "Buy successfully",
+		"addCardSuccessfully": "Bank card added successfully",
+		"delCardSuccessfully": "Bank card deleted successfully",
+		"sendCodeError": "Failed to send verification code",
+		"nameShortError": "Nickname length is too short",
+		"passwordShortError": "Password length is too short",
+		"pdNotSameError": "Two passwords are inconsistent",
+		"buyLittleError": "The investment amount cannot be less than the starting investment amount",
+		"buyMuchError": "Exceeds the current purchase quantity",
+		"buyError": "Purchase failed",
+		"voucherNull": "The voucher cannot be empty",
+		"phoneNull": "Mobile phone number cannot be empty",
+		"passwordNull": "Password cannot be empty",
+		"codeNull": "Verification code cannot be empty",
+		"nameNull": "Name cannot be empty",
+		"bankNull": "The bank name cannot be empty",
+		"bankcardNull": "The bank card number cannot be empty",
+		"moneyNull": "Withdrawal amount cannot be empty"
+	},
+	"project": {
+		"incomeDes": "Income introduction",
+		"income": "income",
+		"incomeDesDetail": "A board earns 2.2 baht per hour, and you can earn 8 hours a day. That is 17.6, divide it into eight hours of income. Start at 9 am and end at 5 pm. These eight hours go Calculated. Time also follows the time difference in Thailand. Purchasing a solar panel requires 1,000 baht. The purchase period is one year. After one year, the principal will be automatically returned to your account balance, and this income will also be stopped. .In other words, buying a solar panel can only earn you one year's profit.",
+		"rate": "yield",
+		"cycle": "cycle",
+		"purchase": "qi",
+		"level": "level display",
+		"startInvest": "Start",
+		"customersCanPurchase": "Customers can purchase",
+		"maxPurchase": "The maximum number of purchases available at the current level",
+		"block": "block",
+		"needtoInvite": "need to invite",
+		"effectiveSubordinate": "effective subordinates",
+		"toInvite": "To invite",
+		"toPurchase": "ToPurchase",
+		"quantity": "Purchase quantity",
+		"investmentAmount": "investment amount",
+		"inviteFriends": "Invite friends to earn money",
+		"myInvite": "My invitation",
+		"successfullyInvite": "SuccessfullyInvite",
+		"getRewarded": "Get rewarded",
+		"slogan": "Earn income every day",
+		"toInvest": "To Invest",
+		"buyTooMuch": "Exceeds the current purchase quantity",
+		"buySuccessfully": "Buy successfully",
+		"copySuccessfully": "Copied to pasteboard"
+	},
+	"register": {
+		"register": "Register",
+		"signIn": "Log In",
+		"signUp": "Sign Up",
+		"phoneNumber": "phone",
+		"password": "Password",
+		"code": "Code",
+		"sendCode": "Send Code",
+		"sendSuccess": "Send Successed",
+		"referralCode": "Referral Code",
+		"signUpBtn": "Sign Up",
+		"phoneEmpty": "Your Email is empty",
+		"passwordEmpty": "Your password is empty",
+		"codeEmpty": "Your password is empty",
+		"signUpSuccess": "Success"
+	},
+	"forgetpwe": {
+		"reset": "Reset Password",
+		"phoneNumber": "Email",
+		"code": "Code",
+		"send": "Send",
+		"newPassword": "New Password",
+		"submit": "Submit",
+		"phoneNumberEmpty": "Your email is empty",
+		"sendSuccess": "Send successed",
+		"newPasswordEmpty": "Your new password is empty",
+		"codeEmpty": "Your code is empty",
+		"success": "Successed"
+	},
+	"sign": {
+		"sign_day_num": "You have signed in for ",
+		"days": " days",
+		"one": "Mo",
+		"two": "Tu",
+		"three": "We",
+		"four": "Th",
+		"five": "Fr",
+		"six": "Sa",
+		"seven": "Su",
+		"rewardToday": "Check in reward today",
+		"cash": "Cash",
+		"addToBalance": "Direct release to account balance",
+		"cumulative": "Cumulative sign in reward",
+		"note2": "Note: bonus envelopes are directly distributed to the account balance. Please pay attention to check!",
+		"get": "Get",
+		"signIn": "Sign in",
+		"success": "Succeeded",
+		"sign": "Receive",
+		"signed": "Received",
+		"signing": "Receiving",
+		"signDays": "Check in days"
+	},
+	"share": {
+		"introduction": "Reward introduction",
+		"tip1": "First-level member recharge, reward ",
+		"tip11": "",
+		"tip2": "Second-level member recharge, reward ",
+		"tip22": "",
+		"tip3": "Third-level member recharge, reward ",
+		"tip33": "",
+		"commission": "Total Rewards",
+		"team": "Team",
+		"recharge": "Recharge",
+		"people": "people",
+		"shareLink": "Invitation link",
+		"level1": "Level 1",
+		"level2": "Level 2",
+		"level3": "Level 3",
+		"saveImg": "Download"
+	},
+	"notice": {
+		"message": "Message",
+		"unRead": " unread",
+		"detail": "detail"
+	},
+	"invest": {
+		"recharge": "Account recharge",
+		"availableBalance": "Available balance",
+		"rechargeAmount": "Recharge amount",
+		"paymentMethod": "Payment method",
+		"next": "Next step",
+		"paymentMethodEmpty": "Please select payment method",
+		"rechargeAmountLow": "Recharge amount cannot be empty or less than ",
+		"rechargeAmountLow1": "",
+		"overtop": "Recharge frequency is too high",
+		"success": "Recharge succeeded",
+		"failed": "Recharge failed"
+	},
+	"invest_qrcode": {
+		"recharge": "Account recharge",
+		"address": "Address:",
+		"amount": "Amount:",
+		"explain": "Explain:",
+		"walletAddress": "Wallet Address",
+		"copyWalletAddress": "Copy Address",
+		"submittedSuccessfully": "Recharge application submitted successfully",
+		"copySucceeded": "Copy succeeded",
+		"scanQRcode": "Scan QR code and transfer into recharge amount"
+	},
+	"invest_bank": {
+		"copy": "Copy",
+		"name": "Name:",
+		"account": "Account:",
+		"bank": "Bank:"
+	},
+	"cash": {
+		"bank": "Bank card",
+		"withdraw": "Withdrawal",
+		"wallet": "Wallet",
+		"chooseWallet": "Please select Wallet",
+		"amount": "Withdrawal amount",
+		"withdrawableAmount": "Withdrawable amount ",
+		"addWallet": "Add a new withdrawal Wallet",
+		"arrivalTime": "The withdrawal will be automatically reviewed and processed by the system. The estimated arrival time is within 30 minutes. Please wait patiently!!",
+		"inReview": "Under review",
+		"withdrawalAccountEmpty": "Please select withdrawal Wallet",
+		"withdrawalAmountEmpty": "Withdrawal amount cannot be blank",
+		"withdrawalAmountNotAllow": "Withdrawal amount cannot be negative",
+		"withdrawalAmountHigh": "Withdrawal amount cannot be greater than balance",
+		"withdrawalPasswordEmpty": "Withdrawal password cannot be blank",
+		"success": "Withdrawal application succeeded",
+		"charge": "Handling fee ",
+		"setPwdFirst": "Please set wallet password first",
+		"setNow": "Set up now",
+		"tips": "Please enter the payment password"
+	},
+	"account": {
+		"manage": "Wallet management",
+		"withdrawalAccounts": " bound withdrawal Wallet",
+		"add": "Add Wallet",
+		"addAccount": "Add Wallet",
+		"bank": "Wallet type",
+		"address": "Wallet address",
+		"addressTit": "Please enter wallet address",
+		"submit": "Submit",
+		"success": "Added successfully",
+		"addressEmpty": "Please enter wallet address",
+		"qrcodeEmpty": "Please upload wallet QR code",
+		"within2megabytes": "Please upload pictures within 2m",
+		"supportPicture": "Only JPG and PNG images can be uploaded",
+		"uploadSuccess": "Upload succeeded",
+		"uploadFail": "Upload failed",
+		"qrcodetips": "Wallet QR code"
+	},
+	"accountUsdt": {
+		"alipayAccount": "Alipay account:",
+		"alipayAccountEmpty": "Please enter your Alipay account",
+		"alipayQrcode": "Alipay receipt code",
+		"wechatAccount": "We chat number :",
+		"wechatAccountEmpty": "Please enter WeChat ID",
+		"wechatQrcode": "WeChat payment code",
+		"name": "Name:",
+		"nameEmpty": "Please enter cardholder name",
+		"account": "account:",
+		"accountEmpty": "Please enter the card number",
+		"area": "Branch:",
+		"areaEmpty": "Please enter branch"
+	},
+	"moneybag": {
+		"myWallet": "My wallet",
+		"rechargeRecord": "Recharge record",
+		"withdrawRecord": "Withdrawal record",
+		"accountBalance": "Total balance",
+		"recharge": "Recharge",
+		"withdraw": "Withdraw"
+	},
+	"authEmail": {
+		"authentication": "Verify Email",
+		"tip": "For your security and points reward,please verify your email firstly",
+		"code": "Code",
+		"sendcode": "Send Code",
+		"sendsuccess": "Send succeeded",
+		"submit": "Confirm",
+		"codeEmpty": "Your Code is empty",
+		"success": "Validation succeeded"
+	},
+	"setpwd": {
+		"modifyLoginPassword": "Login password",
+		"setNewLoginPassword": "Modify login password",
+		"usemobilenumber": "Use Email",
+		"useoriginalpassword": "Use original password",
+		"boundmobilenumber": "Bound Email:",
+		"SMSverificationcode": "Email verification code",
+		"sendcode": "Send code",
+		"originalloginpassword": "Original login password",
+		"newpassword": "New login password",
+		"confirmnewpassword": "Confirm new password",
+		"modify": "Modify",
+		"sendsuccessfully": "Send successed",
+		"originalpasswordcannotbeempty": "Original password cannot be empty",
+		"newpasswordcannotbeempty": "New login password cannot be empty",
+		"inconsistent": "The confirmation password and the new password are inconsistent",
+		"modifiedsuccessfully": "Modified successfully"
+	},
+	"setpaypwd": {
+		"useloginpassword": "Use login password",
+		"modifyPaymentPassword": "Payment password",
+		"setNewPaymentPassword": "Modify payment password",
+		"loginpassword": "Login password",
+		"loginpasswordcannotbeempty": "Login password cannot be empty",
+		"newpassword": "6-digit pure number",
+		"newpasswordcannotbeempty": "New payment password cannot be empty",
+		"inconsistent": "The confirmation password is inconsistent with the new payment password",
+		"pureNumber": "Please enter a pure number"
+	},
+	"lang": {
+		"curtext": "English"
+	},
+	"charge": {
+		"search": "search",
+		"placeholder": "Charging pile name",
+		"orderDetail": "Order Details",
+		"level": "Current level",
+		"orderTime": "order time",
+		"total": "total",
+		"actualPayment": "actual payment",
+		"orderTotal": "OrderTotal",
+		"orderInfo": "Order Information",
+		"haveNumbers": "have numbers",
+		"hourlyEarning": "Hourly Earning",
+		"accumulatedEarning": "Accumulated Earning",
+		"purchaseDate": "Purchase Date",
+		"finishDate": "End date",
+		"searchTip": "Here are the search results found for you:",
+		"nothingTip": "Nothing found",
+		"buyError": "Purchase failed",
+		"fullyInvested": "The project has been fully invested",
+		"finish": "Completed",
+		"ing": "in progress"
+	},
+	"bankcard": {
+		"manage": "Management",
+		"finish": "Complete",
+		"add": "Add new card",
+		"bankcardAdd": "Bankcard Add",
+		"myCard": "my card",
+		"unit": "张",
+		"name": "name",
+		"cardNumber": "Bank card number",
+		"bankName": "Bank Name",
+		"addConfirm": "Confirm to add",
+		"addSuccessfully": "Add successfully",
+		"prompt": "Are you sure you want to delete this bank card?",
+		"deleteSuccessfully": "Delete successfully"
+	},
+	"tabbar": {
+		"home": "Home",
+		"project": "Wallet",
+		"item": "Charge",
+		"me": "Me"
+	},
+	"tabtitle":{
+		"home":"Loan Lending",
+		"wallet":"Wallet",
+		"me":"Personal Center",
+		"monthly":"Monthly Repayment Amount"
+	},
+	"monthly":{
+		"tips":"tips",
+		"tips_content":"You currently have no loans to repay"
+	},
+	"wallet":{
+		"title":"Account Balance",
+		"withdraw":"Withdraw",
+		"withdrawn":"Withdrawal Successful",
+		"statusTitle":"Situation State",
+		"statusSub":"Describe:",
+		"statusDesNo":"No Message",
+		"statusDesLock":"Moderated",
+		"statusCashNo":"Moderated",
+		"statusCashYes":"Withdrawn",
+		"statusCashRefused":"Account Locked",
+		"week":"month",
+		"loadAmount":"Loan Amount",
+		"borrowPeriod":"Borrowing period",
+		"contract":"View Contract",
+		"step1":"Submit Com",
+		"step2":"Under View",
+		"step3":"Approved",
+		"step4":"Successfully",
+		"repayment":"View Repayment",
+		"lanWeek":"PAYING WITHIN 3 WORKING DAYS",
+		"loanRate":"Monthly interest rate",
+		"borrowTime":"Borrowing time",
+		"repaymentIn":"Repayment in",
+		"php":"PHP",
+		"installments":"installments",
+		"interestRate":"(The interest rate is ",
+		"next":"N   E   X   T",
+		"step":"S	T	E	P",
+		"month":"month",
+		"edit":"Amount Edit",
+		"amount":"Amount",
+		"amountRule":"Amount Value out of range",
+		"msgTitle":"notification"
+	},
+	"memberlevel": {
+		"level1": "1Level",
+		"level2": "2Level",
+		"level3": "3Level",
+		"level4": "4Level",
+		"level5": "5Level",
+		"level6": "6Level",
+		"level7": "7Level",
+		"level8": "8Level",
+		"level9": "9Level",
+		"level10": "10Level"
+	},
+	"recharge": {
+		"availableBalance": "Account balance (yuan)",
+		"rechargePrice": "Please enter the recharge amount",
+		"paymentMethod": "payment method",
+		"paybyBankcard": "Pay by Bankcard",
+		"paymentVoucher": "Payment Voucher",
+		"rechargebyBandcard": "Bandcard recharge"
+	},
+	"withdraw": {
+		"availableWithdraw": "Amount of cash available (yuan)",
+		"withdrawPrice": "Withdrawal amount",
+		"allPrice": "Withdraw all",
+		"withdrawTo": "Withdraw To",
+		"constructionBank": "construction bank",
+		"withdrawtoBandcard": "Withdraw to Bandcard",
+		"hint": "forget withdraw password",
+		"passwdhint": "withdraw password"
+	},
+	"msg": {
+		"unread": "unread",
+		"readed": "readed"
+	}
+	
+}

+ 730 - 0
locale/zh_CN.json

@@ -0,0 +1,730 @@
+{
+	"weather": {
+		"0": "Clear sky",
+		"1": "Mainly clear",
+		"2": "Partly cloudy",
+		"3": "Overcast",
+		"45": "Fog and depositing rime fog",
+		"48": "Depositing rime fog",
+		"51": "Drizzle: Light",
+		"53": "Drizzle: Moderate",
+		"55": "Drizzle: Dense intensity",
+		"56": "Freezing Drizzle: Light",
+		"57": "Freezing Drizzle: Dense intensity",
+		"61": "Rain: Slight",
+		"63": "Rain: Moderate",
+		"65": "Rain: Heavy",
+		"66": "Freezing Rain: Light",
+		"67": "Freezing Rain: Heavy",
+		"71": "Snow fall: Slight",
+		"73": "Snow fall: Moderate",
+		"75": "Snow fall: Heavy",
+		"77": "Snow grains",
+		"80": "Rain showers: Slight",
+		"81": "Rain showers: Moderate",
+		"82": "Rain showers: Violent",
+		"85": "Snow showers: Slight",
+		"86": "Snow showers: Heavy",
+		"95": "Thunderstorm: Slight or moderate",
+		"96": "Thunderstorm with slight hail",
+		"99": "Thunderstorm with heavy hail"
+	},
+	"index": {
+		"home": "Home",
+		"solar": "solar energy",
+		"charge": "Charging pile",
+		"my": "my",
+		"invest": "My investment",
+		"recommend": "Recommended for newbies",
+		"realtime": "Real Time",
+		"all": "Total Revenue",
+		"yesterday": "Yesterday Revenue",
+		"today": "Today Revenue",
+		"team": "Team Revenue",
+		"currencyUnit": "₱",
+		"unitSignal": "฿",
+		"China": "China",
+		"America": "America",
+		"Thailand": "Thailand",
+		"Chinese": "中文",
+		"English": "English",
+		"Thai": "Thai",
+		"prompt": "prompt",
+		"confirm": "Confirm",
+		"cancel": "Cancel",
+		"copy": "copy",
+		"modifiedSuccessfully": "Modification successful",
+		"popup": "popup",
+		"toLook": "look",
+		"get": "know it"
+	},
+	"request.err": "The request is error,please wait a minute",
+	"login.name": "Login",
+	"login.mobile": "mobile phone",
+	"login.enterMobile": "Please enter your mobile phone number",
+	"login.password": "password",
+	"login.enterPassword": "Please enter your password",
+	"login.forgot": "Forgot password/unbind",
+	"login.code": "Verification code",
+	"login.enterCode": "Please enter the verification code",
+	"login.getCode": "Get verification code",
+	"login.afterGet": "Reget after",
+
+	"register.name": "Register",
+	"utils": {
+		"tz_auto": "Auto-renew when it expires",
+		"money": "",
+		"moneyMark": "USD",
+		"cankao_info": "(fixed rate)",
+		"yuji_sy": "expected profit",
+		"sj_tips": "Live data Currency:USD",
+		"confirm": "Confirm",
+		"cancel": "Cancel",
+		"submit": "Submit",
+		"dailyIncome": "Interest rate",
+		"cycle": "Cycle",
+		"day": " days",
+		"startingAmount": "Initial amount",
+		"scale": "Scale",
+		"invest": "Invest",
+		"investOver": "Sold out",
+		"income": "Income",
+		"investmentAmount": "Investment amount",
+		"complete": "Complete",
+		"delete": "Delete",
+		"year": "Year",
+		"month": "Month"
+	},
+	"home": {
+		"index": "Home",
+		"item": "Wealth",
+		"invest": "Invest",
+		"activity": "Activity",
+		"my": "Account",
+		"esloan":"Estimated loan amount(PHP)",
+		"esstep":"①Fill in the information ②Apply for a loan ③Quick loan",
+		"card1sub":"Smart people have joined",
+		"card1person":"persion",
+		"card1lend":"Lended",
+		"loancheck":"Check Your Repayment Amount",
+		"easyloan":" Easy Loan ",
+		"esasyloandes":" Cumulative transaction amount (PHP) "
+	},
+
+	"item": {
+		"all": "All",
+		"tab1": "Beginners",
+		"tab2": "Popular",
+		"tab3": "Steady",
+		"tab4": "Featured",
+		"tab5": "Global",
+		"inputAmount": "Masukkan jumlah investasi",
+		"noData": "No data"
+	},
+	"user": {
+		"personalinfo": "Personal information editing",
+		"uncollectedPrincipal": "Principal",
+		"uncollectedInterest": "Income",
+		"cumulativeIncome": "Cumulative",
+		"earnings": "Total",
+		"availableBalance": "Account Balance",
+		"recharge": "recharge",
+		"withdraw": "Withdraw",
+		"rechargeRecord": "Recharge",
+		"purchaseRecord": "Purchase",
+		"withdrawalRecord": "Withdrawal",
+		"functions": "Common",
+		"myWallet": "my wallet",
+		"myTeam": "my team",
+		"bankcardManage": "Bankcard",
+		"language": "language",
+		"userAgreement": "agreement",
+		"privacyPolicy": "company profile",
+		"message": "message",
+		"logout": "log out",
+		"realtimeData": "real-time data",
+		"incomeandExpenditure": "Income and Expenditure Details",
+		"reward": "Total reward",
+		"teamSize": "Team (people)",
+		"teamEarnings": "Team earnings (yuan)",
+		"invitationLink": "invitation link",
+		"rewardDes": "Reward Introduction",
+		"changeLanguage": "Confirm to change the language to",
+		"teamdes": "15% for first-level customers, 10% for second-level customers, and 5% for third-level customers. Subordinate B invited by A can get an additional 15% of B's ​​daily income, for example, B purchases By purchasing a photovoltaic panel, customer A can obtain an income of 17.6 baht per day, and customer A can receive an additional income of 17.6*0.15=2.64 baht generated by customer B.",
+		"incrate": "The purchase of battery panels increases the yield of wealth management products",
+		"unread": "unread",
+		"service": "service",
+		"linkService": "linkService",
+		"pre": "Previous page",
+		"next": "Next page",
+		"all": "all",
+		"invest": "Financial product",
+		"solar": "solar energy",
+		"rebate": "affiliate commission",
+		"datefilter": "date selection",
+		"nomessage": "no message",
+		"account":"Account",
+		"credit_socre":"Your credit score is",
+		"credit_tip":"Mga rating inilabas ng Bangko Sentral ng Pilipinas (BSP)",
+		"purse":"My purse",
+		"setup":"Set up",
+		"repaymentp":"Repayment Period",
+		"emailbox":"Email Inbox",
+		"basic":"Basic Information",
+		"aboutus":"About Us",
+		"loanagree":"Loan Agreement",
+		"loginp":"Login Password",
+		"logouts":"Logout",
+		"data":"Data Certification",
+		"real_name_info":"Real Name Information",
+		"real_name_tip":"Your real information",
+		"age":"Age",
+		"age_tip":"Please enter your age",
+		"archive_info":"Archive Information",
+		"archive_tip":"Your archive information",
+		"account_info":"Account Information",
+		"account_tip":"Your account(Bank/Gcash)",
+		"signature":"Signature",
+		"signature_tip":"No sign data",
+		"goto_loan":"Goto Loan",
+		"id":"Identification Information",
+		"front_card":"Front Card",
+		"front_card_tip":"Please Upload Front Card",
+		"back_card":"Back Card",
+		"back_card_tip":"Please Upload Back Card",
+		"hold_card":"Hold ID Card",
+		"hold_card_tip":"Please Upload Hold ID Card",
+		"change_password":"Change Password",
+		"origin_password":"Original password",
+		"origin_password_tip":"Recent password",
+		"change_password_btn":"Change password",
+		"apply":"Apply For A Loan",
+		"personal_info":"Personal information",
+		"firstname":"First And Last Name",
+		"firstname_tip":"Please Enter Your Name",
+		"idcode":"Id Code",
+		"idcode_tip":"Please Enter Your ID Number",
+		"current_address":"Current Address",
+		"current_address_tip":"Please Enter The Current Address",
+		"zipcode":"Zip Code",
+		"zipcode_tip":"Please Enter The Postal Code",
+		"phone_number":"Phone Number",
+		"phone_number_tip":"Please enter the phone number",
+		"birthday":"Birthday",
+		"birthday_tip":"Please Enter Your Birthday",
+		"sex":"Sex",
+		"sex_tip":"Please Enter Your Sex",
+		"marital_status":"Marital Status",
+		"marital_status_tip":"Please Enter Your Marital Status",
+		"work_info":"Work Information",
+		"job_type":"JobType",
+		"job_type_tip":"Please Enter The Job Type",
+		"company_name":"Company Name",
+		"company_name_tip":"Please Enter The Company Name",
+		"company_address":"Company Address",
+		"company_address_tip":"Please Enter The Company Address",
+		"monthly_income":"Monthly Income",
+		"monthly_income_tip":"Please Enter The Monthly Income",
+		"nodata":"No more data yet",
+		"withdraw":"Withdraw",
+		"account_balance":"Account Balance:",
+		"money":"Money:",
+		"password":"Password:",
+		"password_tip":"please enter your password",
+		"transaction":"Transaction",
+		"trans_time":"Withdrawal Time:",
+		"trans_amount":"Withdrawal Amount:",
+		"trans_status":"Withdrawal Status:",
+		"desposite_time":"Desposite Time:",
+		"desposite_amount":"Desposite Amount:",
+		"bank":"Bind Bank Card",
+		"account_name":"Account Name",
+		"account_name_tip":"Please Enter Account Name",
+		"bank_name":"Bank Name",
+		"bank_name_tip":"Please Enter Bank Name",
+		"bank_account_number":"Bank Account Number",
+		"bank_account_number_tip":"Please Enter Bank Account Number",
+		"clear":"Clear",
+		"submit":"Submit",
+		"signature_alert_tip":"Please handwrite your signature",
+		"nextstep":"Next Step",
+		"loan_confirm":"Loan Details",
+		"loan_confirm_sub":"Loan Amount",
+		"loan_confirm_element":"Element",
+		"loan_confirm_month":"Month",
+		"loan_confirm_repayment":"Repayment Amount",
+		"loan_confirm_borrow_time":"Borrowing Time",
+		"loan_confirm_borrower":"Name of Borrowers",
+		"loan_confirm_income_bank":"Bank Name",
+		"loan_confirm_debit_card":"Bank Number",
+		"signature_label":"Please sign within the dotted line, the signature must be standardized, complete and clear",
+		"confirm_submit":" Confirm Submition ",
+		"contract":"Contract",
+		"payment_details":"Repayment Details",
+		"phase":"Phase",
+		"monthly_repayment":"Monthly Repayment",
+		"withdraw_money_tip":"Please enter the withdraw amount",
+		"withdraw_password_tip":"Please enter the withdraw password"
+		
+	},
+	"search": {
+		"history": "Search history",
+		"historyEmpty": "No search history",
+		"notFound": "Search record not found"
+	},
+	"safe": {
+		"setting": "Setting",
+		"verified": "Not Verified Email",
+		"verifiedIdentity": "Verified Email",
+		"toVerify": "To Verify",
+		"paymentOptions": "Wallet management",
+		"language": "Language",
+		"signInPassword": "Login Password",
+		"paymentPassword": "Payment Password",
+		"signOut": "Sign Out"
+	},
+	"orders": {
+		"record": "Investment record",
+		"noOrders": "No investment record",
+		"finish": "Done",
+		"unfinish": "Ongoing"
+	},
+	"loading": {
+		"default": "loading",
+		"avatar": "avatar uploading",
+		"ordering": "order creating",
+		"vouchering": "credit uploading",
+		"login": "loading"
+	},
+	"request": {
+		"err":"request error,please wait"
+	},
+	"login": {
+		"welcome": "Welcome to us",
+		"mobile": "Mobile",
+		"signin": "Sign in",
+		"signup": "Sign up",
+		"submit": "Submit",
+		"loginEnterPassword": "Please enter your password",
+		"enterMobile": "Please enter your mobile phone number",
+		"code": "Verification code",
+		"enterCode": "Please enter your verification code",
+		"getCode": "Get verification code",
+		"sendSuccessfully": "Send successfully",
+		"renew": "Reacquire later",
+		"password": "Password",
+		"enterPassword": "Please enter your new password",
+		"newPassword": "New password",
+		"confirmPassword": "Confirm password",
+		"enterComfirmPassword": "Please enter your comfirm password",
+		"comfirmPasswordError": "comfirm password not match password",
+		"inviteCode": "invite code",
+		"enterInviteCode": "Please enter your invitation code",
+		"remember": "remember password",
+		"forgot": "forgot password",
+		"login": "login",
+		"register": "register",
+		"loginSuccessfully": "Login successfully",
+		"registerSuccessfully": "Registration successful",
+		"modifySuccessfully": "Modify successfully",
+		"noUser": "User does not exist",
+		"passwordError": "Wrong password",
+		"passwordShort": "Password length is too short",
+		"passwordNull": "Password cannot be empty",
+		"phoneNull": "Mobile phone number cannot be empty",
+		"codeUnexpired": "The verification code has not expired",
+		"haveNull": "Incomplete information",
+		"phoneError": "Wrong number",
+		"2pdnotsame": "Two passwords are inconsistent",
+		"codeError": "Verification code error"
+	},
+	"prompt": {
+		"copySuccessfully": "Copied to pasteboard",
+		"submitSuccessfully": "Submit successfully",
+		"setSuccessfully": "Set successfully",
+		"modifiedSuccessfully": "Modification successful",
+		"avatarSuccessfully": "Avatar modified successfully",
+		"nameSuccessfully": "Nickname modified successfully",
+		"sendCodeSuccessfully": "Send verification code successfully",
+		"loginSuccessfully": "Login successfully",
+		"registerSuccessfully": "Registration successful",
+		"resetSuccessfully": "Profile update reset successfully",
+		"buySuccessfully": "Buy successfully",
+		"addCardSuccessfully": "Bank card added successfully",
+		"delCardSuccessfully": "Bank card deleted successfully",
+		"sendCodeError": "Failed to send verification code",
+		"nameShortError": "Nickname length is too short",
+		"passwordShortError": "Password length is too short",
+		"pdNotSameError": "Two passwords are inconsistent",
+		"buyLittleError": "The investment amount cannot be less than the starting investment amount",
+		"buyMuchError": "Exceeds the current purchase quantity",
+		"buyError": "Purchase failed",
+		"voucherNull": "The voucher cannot be empty",
+		"phoneNull": "Mobile phone number cannot be empty",
+		"passwordNull": "Password cannot be empty",
+		"codeNull": "Verification code cannot be empty",
+		"nameNull": "Name cannot be empty",
+		"bankNull": "The bank name cannot be empty",
+		"bankcardNull": "The bank card number cannot be empty",
+		"moneyNull": "Withdrawal amount cannot be empty"
+	},
+	"project": {
+		"incomeDes": "Income introduction",
+		"income": "income",
+		"incomeDesDetail": "A board earns 2.2 baht per hour, and you can earn 8 hours a day. That is 17.6, divide it into eight hours of income. Start at 9 am and end at 5 pm. These eight hours go Calculated. Time also follows the time difference in Thailand. Purchasing a solar panel requires 1,000 baht. The purchase period is one year. After one year, the principal will be automatically returned to your account balance, and this income will also be stopped. .In other words, buying a solar panel can only earn you one year's profit.",
+		"rate": "yield",
+		"cycle": "cycle",
+		"purchase": "qi",
+		"level": "level display",
+		"startInvest": "Start",
+		"customersCanPurchase": "Customers can purchase",
+		"maxPurchase": "The maximum number of purchases available at the current level",
+		"block": "block",
+		"needtoInvite": "need to invite",
+		"effectiveSubordinate": "effective subordinates",
+		"toInvite": "To invite",
+		"toPurchase": "ToPurchase",
+		"quantity": "Purchase quantity",
+		"investmentAmount": "investment amount",
+		"inviteFriends": "Invite friends to earn money",
+		"myInvite": "My invitation",
+		"successfullyInvite": "SuccessfullyInvite",
+		"getRewarded": "Get rewarded",
+		"slogan": "Earn income every day",
+		"toInvest": "To Invest",
+		"buyTooMuch": "Exceeds the current purchase quantity",
+		"buySuccessfully": "Buy successfully",
+		"copySuccessfully": "Copied to pasteboard"
+	},
+	"register": {
+		"register": "Register",
+		"signIn": "Log In",
+		"signUp": "Sign Up",
+		"phoneNumber": "phone",
+		"password": "Password",
+		"code": "Code",
+		"sendCode": "Send Code",
+		"sendSuccess": "Send Successed",
+		"referralCode": "Referral Code",
+		"signUpBtn": "Sign Up",
+		"phoneEmpty": "Your Email is empty",
+		"passwordEmpty": "Your password is empty",
+		"codeEmpty": "Your password is empty",
+		"signUpSuccess": "Success"
+	},
+	"forgetpwe": {
+		"reset": "Reset Password",
+		"phoneNumber": "Email",
+		"code": "Code",
+		"send": "Send",
+		"newPassword": "New Password",
+		"submit": "Submit",
+		"phoneNumberEmpty": "Your email is empty",
+		"sendSuccess": "Send successed",
+		"newPasswordEmpty": "Your new password is empty",
+		"codeEmpty": "Your code is empty",
+		"success": "Successed"
+	},
+	"sign": {
+		"sign_day_num": "You have signed in for ",
+		"days": " days",
+		"one": "Mo",
+		"two": "Tu",
+		"three": "We",
+		"four": "Th",
+		"five": "Fr",
+		"six": "Sa",
+		"seven": "Su",
+		"rewardToday": "Check in reward today",
+		"cash": "Cash",
+		"addToBalance": "Direct release to account balance",
+		"cumulative": "Cumulative sign in reward",
+		"note2": "Note: bonus envelopes are directly distributed to the account balance. Please pay attention to check!",
+		"get": "Get",
+		"signIn": "Sign in",
+		"success": "Succeeded",
+		"sign": "Receive",
+		"signed": "Received",
+		"signing": "Receiving",
+		"signDays": "Check in days"
+	},
+	"share": {
+		"introduction": "Reward introduction",
+		"tip1": "First-level member recharge, reward ",
+		"tip11": "",
+		"tip2": "Second-level member recharge, reward ",
+		"tip22": "",
+		"tip3": "Third-level member recharge, reward ",
+		"tip33": "",
+		"commission": "Total Rewards",
+		"team": "Team",
+		"recharge": "Recharge",
+		"people": "people",
+		"shareLink": "Invitation link",
+		"level1": "Level 1",
+		"level2": "Level 2",
+		"level3": "Level 3",
+		"saveImg": "Download"
+	},
+	"notice": {
+		"message": "Message",
+		"unRead": " unread",
+		"detail": "detail"
+	},
+	"invest": {
+		"recharge": "Account recharge",
+		"availableBalance": "Available balance",
+		"rechargeAmount": "Recharge amount",
+		"paymentMethod": "Payment method",
+		"next": "Next step",
+		"paymentMethodEmpty": "Please select payment method",
+		"rechargeAmountLow": "Recharge amount cannot be empty or less than ",
+		"rechargeAmountLow1": "",
+		"overtop": "Recharge frequency is too high",
+		"success": "Recharge succeeded",
+		"failed": "Recharge failed"
+	},
+	"invest_qrcode": {
+		"recharge": "Account recharge",
+		"address": "Address:",
+		"amount": "Amount:",
+		"explain": "Explain:",
+		"walletAddress": "Wallet Address",
+		"copyWalletAddress": "Copy Address",
+		"submittedSuccessfully": "Recharge application submitted successfully",
+		"copySucceeded": "Copy succeeded",
+		"scanQRcode": "Scan QR code and transfer into recharge amount"
+	},
+	"invest_bank": {
+		"copy": "Copy",
+		"name": "Name:",
+		"account": "Account:",
+		"bank": "Bank:"
+	},
+	"cash": {
+		"bank": "Bank card",
+		"withdraw": "Withdrawal",
+		"wallet": "Wallet",
+		"chooseWallet": "Please select Wallet",
+		"amount": "Withdrawal amount",
+		"withdrawableAmount": "Withdrawable amount ",
+		"addWallet": "Add a new withdrawal Wallet",
+		"arrivalTime": "The withdrawal will be automatically reviewed and processed by the system. The estimated arrival time is within 30 minutes. Please wait patiently!!",
+		"inReview": "Under review",
+		"withdrawalAccountEmpty": "Please select withdrawal Wallet",
+		"withdrawalAmountEmpty": "Withdrawal amount cannot be blank",
+		"withdrawalAmountNotAllow": "Withdrawal amount cannot be negative",
+		"withdrawalAmountHigh": "Withdrawal amount cannot be greater than balance",
+		"withdrawalPasswordEmpty": "Withdrawal password cannot be blank",
+		"success": "Withdrawal application succeeded",
+		"charge": "Handling fee ",
+		"setPwdFirst": "Please set wallet password first",
+		"setNow": "Set up now",
+		"tips": "Please enter the payment password"
+	},
+	"account": {
+		"manage": "Wallet management",
+		"withdrawalAccounts": " bound withdrawal Wallet",
+		"add": "Add Wallet",
+		"addAccount": "Add Wallet",
+		"bank": "Wallet type",
+		"address": "Wallet address",
+		"addressTit": "Please enter wallet address",
+		"submit": "Submit",
+		"success": "Added successfully",
+		"addressEmpty": "Please enter wallet address",
+		"qrcodeEmpty": "Please upload wallet QR code",
+		"within2megabytes": "Please upload pictures within 2m",
+		"supportPicture": "Only JPG and PNG images can be uploaded",
+		"uploadSuccess": "Upload succeeded",
+		"uploadFail": "Upload failed",
+		"qrcodetips": "Wallet QR code"
+	},
+	"accountUsdt": {
+		"alipayAccount": "Alipay account:",
+		"alipayAccountEmpty": "Please enter your Alipay account",
+		"alipayQrcode": "Alipay receipt code",
+		"wechatAccount": "We chat number :",
+		"wechatAccountEmpty": "Please enter WeChat ID",
+		"wechatQrcode": "WeChat payment code",
+		"name": "Name:",
+		"nameEmpty": "Please enter cardholder name",
+		"account": "account:",
+		"accountEmpty": "Please enter the card number",
+		"area": "Branch:",
+		"areaEmpty": "Please enter branch"
+	},
+	"moneybag": {
+		"myWallet": "My wallet",
+		"rechargeRecord": "Recharge record",
+		"withdrawRecord": "Withdrawal record",
+		"accountBalance": "Total balance",
+		"recharge": "Recharge",
+		"withdraw": "Withdraw"
+	},
+	"authEmail": {
+		"authentication": "Verify Email",
+		"tip": "For your security and points reward,please verify your email firstly",
+		"code": "Code",
+		"sendcode": "Send Code",
+		"sendsuccess": "Send succeeded",
+		"submit": "Confirm",
+		"codeEmpty": "Your Code is empty",
+		"success": "Validation succeeded"
+	},
+	"setpwd": {
+		"modifyLoginPassword": "Login password",
+		"setNewLoginPassword": "Modify login password",
+		"usemobilenumber": "Use Email",
+		"useoriginalpassword": "Use original password",
+		"boundmobilenumber": "Bound Email:",
+		"SMSverificationcode": "Email verification code",
+		"sendcode": "Send code",
+		"originalloginpassword": "Original login password",
+		"newpassword": "New login password",
+		"confirmnewpassword": "Confirm new password",
+		"modify": "Modify",
+		"sendsuccessfully": "Send successed",
+		"originalpasswordcannotbeempty": "Original password cannot be empty",
+		"newpasswordcannotbeempty": "New login password cannot be empty",
+		"inconsistent": "The confirmation password and the new password are inconsistent",
+		"modifiedsuccessfully": "Modified successfully"
+	},
+	"setpaypwd": {
+		"useloginpassword": "Use login password",
+		"modifyPaymentPassword": "Payment password",
+		"setNewPaymentPassword": "Modify payment password",
+		"loginpassword": "Login password",
+		"loginpasswordcannotbeempty": "Login password cannot be empty",
+		"newpassword": "6-digit pure number",
+		"newpasswordcannotbeempty": "New payment password cannot be empty",
+		"inconsistent": "The confirmation password is inconsistent with the new payment password",
+		"pureNumber": "Please enter a pure number"
+	},
+	"lang": {
+		"curtext": "English"
+	},
+	"charge": {
+		"search": "search",
+		"placeholder": "Charging pile name",
+		"orderDetail": "Order Details",
+		"level": "Current level",
+		"orderTime": "order time",
+		"total": "total",
+		"actualPayment": "actual payment",
+		"orderTotal": "OrderTotal",
+		"orderInfo": "Order Information",
+		"haveNumbers": "have numbers",
+		"hourlyEarning": "Hourly Earning",
+		"accumulatedEarning": "Accumulated Earning",
+		"purchaseDate": "Purchase Date",
+		"finishDate": "End date",
+		"searchTip": "Here are the search results found for you:",
+		"nothingTip": "Nothing found",
+		"buyError": "Purchase failed",
+		"fullyInvested": "The project has been fully invested",
+		"finish": "Completed",
+		"ing": "in progress"
+	},
+	"bankcard": {
+		"manage": "Management",
+		"finish": "Complete",
+		"add": "Add new card",
+		"bankcardAdd": "Bankcard Add",
+		"myCard": "my card",
+		"unit": "张",
+		"name": "name",
+		"cardNumber": "Bank card number",
+		"bankName": "Bank Name",
+		"addConfirm": "Confirm to add",
+		"addSuccessfully": "Add successfully",
+		"prompt": "Are you sure you want to delete this bank card?",
+		"deleteSuccessfully": "Delete successfully"
+	},
+	"tabbar": {
+		"home": "Home",
+		"project": "Wallet",
+		"item": "Charge",
+		"me": "Me"
+	},
+	"tabtitle":{
+		"home":"Loan Lending",
+		"wallet":"Wallet",
+		"me":"Personal Center",
+		"monthly":"Monthly Repayment Amount"
+	},
+	"monthly":{
+		"tips":"tips",
+		"tips_content":"You currently have no loans to repay"
+	},
+	"wallet":{
+		"title":"Account Balance",
+		"withdraw":"Withdraw",
+		"withdrawn":"Withdrawal Successful",
+		"statusTitle":"Situation State",
+		"statusSub":"Describe:",
+		"statusDesNo":"No Message",
+		"statusDesLock":"Moderated",
+		"statusCashNo":"Moderated",
+		"statusCashYes":"Withdrawn",
+		"statusCashRefused":"Account Locked",
+		"week":"month",
+		"loadAmount":"Loan Amount",
+		"borrowPeriod":"Borrowing period",
+		"contract":"View Contract",
+		"step1":"Submit Com",
+		"step2":"Under View",
+		"step3":"Approved",
+		"step4":"Successfully",
+		"repayment":"View Repayment",
+		"lanWeek":"PAYING WITHIN 3 WORKING DAYS",
+		"loanRate":"Monthly interest rate",
+		"borrowTime":"Borrowing time",
+		"repaymentIn":"Repayment in",
+		"php":"PHP",
+		"installments":"installments",
+		"interestRate":"(The interest rate is ",
+		"next":"N   E   X   T",
+		"step":"S	T	E	P",
+		"month":"month",
+		"edit":"Amount Edit",
+		"amount":"Amount",
+		"amountRule":"Amount Value out of range",
+		"msgTitle":"notification"
+	},
+	"memberlevel": {
+		"level1": "1Level",
+		"level2": "2Level",
+		"level3": "3Level",
+		"level4": "4Level",
+		"level5": "5Level",
+		"level6": "6Level",
+		"level7": "7Level",
+		"level8": "8Level",
+		"level9": "9Level",
+		"level10": "10Level"
+	},
+	"recharge": {
+		"availableBalance": "Account balance (yuan)",
+		"rechargePrice": "Please enter the recharge amount",
+		"paymentMethod": "payment method",
+		"paybyBankcard": "Pay by Bankcard",
+		"paymentVoucher": "Payment Voucher",
+		"rechargebyBandcard": "Bandcard recharge"
+	},
+	"withdraw": {
+		"availableWithdraw": "Amount of cash available (yuan)",
+		"withdrawPrice": "Withdrawal amount",
+		"allPrice": "Withdraw all",
+		"withdrawTo": "Withdraw To",
+		"constructionBank": "construction bank",
+		"withdrawtoBandcard": "Withdraw to Bandcard",
+		"hint": "forget withdraw password",
+		"passwdhint": "withdraw password"
+	},
+	"msg": {
+		"unread": "unread",
+		"readed": "readed"
+	}
+	
+}

+ 60 - 0
main.js

@@ -0,0 +1,60 @@
+import App from '@/App'
+import messages from '@/locale/'
+import * as nav from '@/utils/navigate.js'
+import storage from "@/utils/storage.js"
+import {
+	setupI18n,
+	i18nConfig
+} from '@/locale'
+
+import * as Pinia from 'pinia';
+
+// let i18nConfig = {
+// 	locale: uni.getLocale() || "zh-Hans",
+// 	messages
+// }
+console.log('main')
+console.log(uni.getLocale())
+// #ifndef VUE3
+import Vue from 'vue'
+import VueI18n from 'vue-i18n' // v8.x
+import './uni.promisify.adaptor'
+
+import '@/uni.scss'
+
+Vue.use(VueI18n)
+const i18n = new VueI18n(i18nConfig)
+
+Vue.config.productionTip = false
+App.mpType = 'app'
+const app = new Vue({
+	i18n,
+	...App
+})
+Vue.prototype.$nav = nav;
+Vue.prototype.$i18n = i18n;
+app.$mount()
+// #endif
+
+// #ifdef VUE3
+import {
+	createSSRApp
+} from 'vue'
+import {
+	createI18n
+} from 'vue-i18n' // v9.x
+import piniaPluginPersistedstate from 'pinia-plugin-persistedstate';
+const store = Pinia.createPinia();
+store.use(piniaPluginPersistedstate); // 使用持久化插件
+const i18n = createI18n(i18nConfig)
+export function createApp() {
+	const app = createSSRApp(App)
+	app.config.globalProperties.$nav = nav;
+	app.use(store)
+	setupI18n(app)
+	return {
+		app,
+		Pinia
+	}
+}
+// #endif

+ 119 - 0
manifest.json

@@ -0,0 +1,119 @@
+{
+    "name" : "Loan",
+    "appid" : "__UNI__2B1480F",
+    "description" : "",
+    "versionName" : "1.1.2",
+    "versionCode" : 112,
+    "transformPx" : false,
+    /* 5+App特有相关 */
+    "app-plus" : {
+        "useWebview" : true,
+        "usingComponents" : true,
+        "nvueStyleCompiler" : "uni-app",
+        "compilerVersion" : 3,
+        "splashscreen" : {
+            "alwaysShowBeforeRender" : true,
+            "waiting" : true,
+            "autoclose" : true,
+            "delay" : 0
+        },
+        /* 模块配置 */
+        "modules" : {},
+        /* 应用发布信息 */
+        "distribute" : {
+            /* android打包配置 */
+            "android" : {
+                "permissions" : [
+                    "<uses-permission android:name=\"android.permission.CHANGE_NETWORK_STATE\"/>",
+                    "<uses-permission android:name=\"android.permission.MOUNT_UNMOUNT_FILESYSTEMS\"/>",
+                    "<uses-permission android:name=\"android.permission.VIBRATE\"/>",
+                    "<uses-permission android:name=\"android.permission.READ_LOGS\"/>",
+                    "<uses-permission android:name=\"android.permission.ACCESS_WIFI_STATE\"/>",
+                    "<uses-feature android:name=\"android.hardware.camera.autofocus\"/>",
+                    "<uses-permission android:name=\"android.permission.ACCESS_NETWORK_STATE\"/>",
+                    "<uses-permission android:name=\"android.permission.CAMERA\"/>",
+                    "<uses-permission android:name=\"android.permission.GET_ACCOUNTS\"/>",
+                    "<uses-permission android:name=\"android.permission.READ_PHONE_STATE\"/>",
+                    "<uses-permission android:name=\"android.permission.CHANGE_WIFI_STATE\"/>",
+                    "<uses-permission android:name=\"android.permission.WAKE_LOCK\"/>",
+                    "<uses-permission android:name=\"android.permission.FLASHLIGHT\"/>",
+                    "<uses-feature android:name=\"android.hardware.camera\"/>",
+                    "<uses-permission android:name=\"android.permission.WRITE_SETTINGS\"/>"
+                ],
+                "abiFilters" : [ "arm64-v8a", "x86" ]
+            },
+            /* ios打包配置 */
+            "ios" : {
+                "dSYMs" : false
+            },
+            /* SDK配置 */
+            "sdkConfigs" : {
+                "ad" : {}
+            },
+            "icons" : {
+                "android" : {
+                    "hdpi" : "unpackage/res/icons/72x72.png",
+                    "xhdpi" : "unpackage/res/icons/96x96.png",
+                    "xxhdpi" : "unpackage/res/icons/144x144.png",
+                    "xxxhdpi" : "unpackage/res/icons/192x192.png"
+                },
+                "ios" : {
+                    "appstore" : "unpackage/res/icons/1024x1024.png",
+                    "ipad" : {
+                        "app" : "unpackage/res/icons/76x76.png",
+                        "app@2x" : "unpackage/res/icons/152x152.png",
+                        "notification" : "unpackage/res/icons/20x20.png",
+                        "notification@2x" : "unpackage/res/icons/40x40.png",
+                        "proapp@2x" : "unpackage/res/icons/167x167.png",
+                        "settings" : "unpackage/res/icons/29x29.png",
+                        "settings@2x" : "unpackage/res/icons/58x58.png",
+                        "spotlight" : "unpackage/res/icons/40x40.png",
+                        "spotlight@2x" : "unpackage/res/icons/80x80.png"
+                    },
+                    "iphone" : {
+                        "app@2x" : "unpackage/res/icons/120x120.png",
+                        "app@3x" : "unpackage/res/icons/180x180.png",
+                        "notification@2x" : "unpackage/res/icons/40x40.png",
+                        "notification@3x" : "unpackage/res/icons/60x60.png",
+                        "settings@2x" : "unpackage/res/icons/58x58.png",
+                        "settings@3x" : "unpackage/res/icons/87x87.png",
+                        "spotlight@2x" : "unpackage/res/icons/80x80.png",
+                        "spotlight@3x" : "unpackage/res/icons/120x120.png"
+                    }
+                }
+            }
+        }
+    },
+    /* 快应用特有相关 */
+    "quickapp" : {},
+    /* 小程序特有相关 */
+    "mp-weixin" : {
+        "appid" : "",
+        "setting" : {
+            "urlCheck" : false
+        },
+        "usingComponents" : true
+    },
+    "mp-alipay" : {
+        "usingComponents" : true
+    },
+    "mp-baidu" : {
+        "usingComponents" : true
+    },
+    "mp-toutiao" : {
+        "usingComponents" : true
+    },
+    "uniStatistics" : {
+        "enable" : false
+    },
+    "vueVersion" : "3",
+    "locale" : "en_US",
+    "fallbackLocale" : "en_US",
+    "h5" : {
+        "title" : "Loan",
+        "router" : {
+            "base" : "",
+            "mode" : "hash"
+        }
+    }
+}

+ 23 - 0
package.json

@@ -0,0 +1,23 @@
+{
+	"name": "solar",
+	"version": "1.0.0",
+	"description": "",
+	"main": "main.js",
+	"dependencies": {
+		"pinia-plugin-persistedstate": "^3.2.1",
+		"scss": "^0.2.4",
+		"svgo": "^3.2.0",
+		"vue": "^3.4.21",
+		"vue-i18n": "^9.11.1"
+	},
+	"scripts": {
+		"test": "echo \"Error: no test specified\" && exit 1",
+		"svgicon": "node ./uni_modules/zui-svg-icon/tools/generate-svg-icon.js"
+	},
+	"author": "",
+	"license": "ISC",
+	"devDependencies": {
+		"sass": "^1.77.8",
+		"sass-loader": "^16.0.0"
+	}
+}

+ 18 - 0
pages.json

@@ -0,0 +1,18 @@
+{
+	"pages": [ //pages数组中第一项表示应用启动页,参考:https://uniapp.dcloud.io/collocation/pages
+		{ // tabbar: home && wallet && me
+			"path": "pages/index/sign",
+			"style": {
+				"navigationBarTitleText": "Sign",
+				"navigationStyle": "custom"
+			}
+		}
+	],
+	"globalStyle": {
+		"navigationBarTextStyle": "black",
+		"navigationBarTitleText": "uni-app",
+		"navigationBarBackgroundColor": "#F8F8F8",
+		"backgroundColor": "#F8F8F8"
+	},
+	"uniIdRouter": {}
+}

Разница между файлами не показана из-за своего большого размера
+ 9 - 0
pages/index/sign.vue


Разница между файлами не показана из-за своего большого размера
+ 57 - 0
static/svg-icons-lib.js


+ 3 - 0
static/svg-icons/activeDot.svg

@@ -0,0 +1,3 @@
+<svg width="18" height="18" viewBox="0 0 18 18" fill="none" xmlns="http://www.w3.org/2000/svg">
+<circle cx="9" cy="9" r="7" fill="white" stroke="#007AFF" stroke-width="3"/>
+</svg>

+ 19 - 0
static/svg-icons/add.svg

@@ -0,0 +1,19 @@
+<svg width="30" height="30" viewBox="0 0 30 30" fill="none" xmlns="http://www.w3.org/2000/svg">
+<path d="M26.25 30H3.75C1.6875 30 0 28.3125 0 26.25V3.75C0 1.6875 1.6875 0 3.75 0H26.25C28.3125 0 30 1.6875 30 3.75V26.25C30 28.3125 28.3125 30 26.25 30ZM3.75 1.875C2.625 1.875 1.875 2.625 1.875 3.75V26.25C1.875 27.375 2.625 28.125 3.75 28.125H26.25C27.375 28.125 28.125 27.375 28.125 26.25V3.75C28.125 2.625 27.375 1.875 26.25 1.875H3.75Z" fill="url(#paint0_linear_1_6)"/>
+<path d="M22.5 15.9375H7.5C6.9375 15.9375 6.5625 15.5625 6.5625 15C6.5625 14.4375 6.9375 14.0625 7.5 14.0625H22.5C23.0625 14.0625 23.4375 14.4375 23.4375 15C23.4375 15.5625 23.0625 15.9375 22.5 15.9375Z" fill="url(#paint1_linear_1_6)"/>
+<path d="M15 23.4375C14.4375 23.4375 14.0625 23.0625 14.0625 22.5V7.5C14.0625 6.9375 14.4375 6.5625 15 6.5625C15.5625 6.5625 15.9375 6.9375 15.9375 7.5V22.5C15.9375 23.0625 15.5625 23.4375 15 23.4375Z" fill="url(#paint2_linear_1_6)"/>
+<defs>
+<linearGradient id="paint0_linear_1_6" x1="15" y1="0" x2="15" y2="30" gradientUnits="userSpaceOnUse">
+<stop stop-color="#7BDEFF"/>
+<stop offset="1" stop-color="#0192FF"/>
+</linearGradient>
+<linearGradient id="paint1_linear_1_6" x1="15" y1="14.0625" x2="15" y2="15.9375" gradientUnits="userSpaceOnUse">
+<stop stop-color="#7BDEFF"/>
+<stop offset="1" stop-color="#0192FF"/>
+</linearGradient>
+<linearGradient id="paint2_linear_1_6" x1="15" y1="6.5625" x2="15" y2="23.4375" gradientUnits="userSpaceOnUse">
+<stop stop-color="#7BDEFF"/>
+<stop offset="1" stop-color="#0192FF"/>
+</linearGradient>
+</defs>
+</svg>

+ 3 - 0
static/svg-icons/back.svg

@@ -0,0 +1,3 @@
+<svg width="12" height="25" viewBox="0 0 12 25" fill="none" xmlns="http://www.w3.org/2000/svg">
+<path fill-rule="evenodd" clip-rule="evenodd" d="M9.99994 20.238L8.95447 21.3005L1.28086 13.5019C0.897919 13.1127 0.89792 12.4883 1.28086 12.0992L8.95447 4.30054L9.99994 5.36304L2.68167 12.8005L9.99994 20.238Z" fill="white"/>
+</svg>

+ 3 - 0
static/svg-icons/checked.svg

@@ -0,0 +1,3 @@
+<svg width="22" height="22" viewBox="0 0 22 22" fill="none" xmlns="http://www.w3.org/2000/svg">
+<path d="M10.9998 0.912598C5.42815 0.912598 0.911621 5.42913 0.911621 11.0008C0.911621 16.5724 5.42815 21.0889 10.9998 21.0889C16.5714 21.0889 21.0879 16.5724 21.0879 11.0008C21.0879 5.42913 16.5714 0.912598 10.9998 0.912598ZM9.73809 15.1353L5.37601 11.4997L6.2099 10.4993L9.65801 13.3747L15.7464 7.28634L16.6667 8.20665L9.73809 15.1353Z" fill="#219EFF"/>
+</svg>

+ 3 - 0
static/svg-icons/copy.svg

@@ -0,0 +1,3 @@
+<svg width="21" height="20" viewBox="0 0 21 20" fill="none" xmlns="http://www.w3.org/2000/svg">
+<path d="M13.4702 3.125H5.97021C5.27959 3.125 4.72021 3.68437 4.72021 4.375V13.125H5.97021V4.375H13.4702V3.125ZM15.3452 5.625H8.47021C7.77959 5.625 7.22021 6.185 7.22021 6.875V15.625C7.22021 16.315 7.77959 16.875 8.47021 16.875H15.3452C16.0352 16.875 16.5952 16.315 16.5952 15.625V6.875C16.5952 6.185 16.0352 5.625 15.3452 5.625ZM8.47021 6.875H15.3452V15.625H8.47021V6.875Z" fill="white"/>
+</svg>

+ 4 - 0
static/svg-icons/delete.svg

@@ -0,0 +1,4 @@
+<svg width="22" height="22" viewBox="0 0 22 22" fill="none" xmlns="http://www.w3.org/2000/svg">
+<circle cx="11" cy="11" r="11" fill="#FE0C0C"/>
+<path d="M16.4313 6.70863L15.29 5.56738L11 9.85875L6.70863 5.56738L5.56738 6.70863L9.85875 11L5.56738 15.29L6.70863 16.4313L11 12.1413L15.29 16.4313L16.4313 15.29L12.1413 11L16.4313 6.70863Z" fill="white"/>
+</svg>

+ 3 - 0
static/svg-icons/editor.svg

@@ -0,0 +1,3 @@
+<svg width="17" height="17" viewBox="0 0 17 17" fill="none" xmlns="http://www.w3.org/2000/svg">
+<path d="M1.82143 14.9515H15.1786C15.5975 14.9515 15.9375 15.2563 15.9375 15.6339C15.9375 16.0104 15.5975 16.3176 15.1786 16.3176H1.82143C1.4025 16.3176 1.0625 16.0116 1.0625 15.6339C1.0625 15.2575 1.4025 14.9503 1.82143 14.9503V14.9515ZM9.02579 4.233L3.41579 9.843V12.2036H5.77636L11.3864 6.59357L9.02579 4.233ZM9.99114 3.26643L12.3529 5.62821L13.3183 4.66164L10.9577 2.30107L9.99114 3.26643ZM2.27193 9.05493L10.4186 0.905856C10.4891 0.835179 10.5728 0.779105 10.665 0.740846C10.7572 0.702586 10.8561 0.682892 10.9559 0.682892C11.0557 0.682892 11.1546 0.702586 11.2468 0.740846C11.339 0.779105 11.4227 0.835179 11.4932 0.905856L14.7123 4.12493C14.7828 4.1954 14.8387 4.27908 14.8769 4.37117C14.915 4.46326 14.9346 4.56196 14.9346 4.66164C14.9346 4.76132 14.915 4.86003 14.8769 4.95212C14.8387 5.04421 14.7828 5.12788 14.7123 5.19836L6.56443 13.3474C6.4938 13.418 6.40992 13.474 6.31761 13.5122C6.2253 13.5503 6.12638 13.5698 6.0265 13.5696H2.80743C2.60636 13.5693 2.41363 13.4892 2.27157 13.3469C2.12951 13.2046 2.04971 13.0118 2.04971 12.8107V9.59286C2.04971 9.39128 2.12864 9.19821 2.27193 9.05614V9.05493Z" fill="white"/>
+</svg>

+ 3 - 0
static/svg-icons/inactiveDot.svg

@@ -0,0 +1,3 @@
+<svg width="18" height="18" viewBox="0 0 18 18" fill="none" xmlns="http://www.w3.org/2000/svg">
+<circle cx="9" cy="9" r="7" fill="white" stroke="#979797" stroke-width="3"/>
+</svg>

Разница между файлами не показана из-за своего большого размера
+ 1 - 0
static/svg-icons/inmsg.svg


Разница между файлами не показана из-за своего большого размера
+ 4 - 0
static/svg-icons/language/America.svg


+ 4 - 0
static/svg-icons/language/China.svg

@@ -0,0 +1,4 @@
+<svg width="30" height="30" viewBox="0 0 30 30" fill="none" xmlns="http://www.w3.org/2000/svg">
+<path d="M30 15.0057C30 6.71591 23.2841 0 15 0C6.71591 0.00568182 0 6.72159 0 15.0057C0 23.2898 6.71591 30.0057 15.0057 30.0057C23.2841 30.0057 30 23.2898 30 15.0057Z" fill="#DE2910"/>
+<path d="M8.24143 7.06547L9.35864 10.5675H12.9892L10.056 12.7342L11.1732 16.2436L8.23996 14.0769L5.30674 16.2436L6.42394 12.7342L3.49072 10.5675H7.12128L8.24143 7.06547ZM17.6973 5.23633L17.6269 6.44789L18.7323 6.89302L17.574 7.19517L17.4962 8.40674L16.8576 7.37352L15.7051 7.67567L16.4685 6.74415L15.8299 5.71683L16.9354 6.16195L17.6973 5.23633ZM21.7712 9.16139L21.2266 10.2418L22.0722 11.1025L20.8948 10.9065L20.3443 11.9869L20.1608 10.7812L18.9834 10.5911L20.0477 10.0384L19.8671 8.84007L20.7069 9.70085L21.7712 9.16139ZM20.5527 14.0769L20.9139 15.234H22.1089L21.1444 15.9459L21.5055 17.097L20.541 16.3792L19.5765 17.0911L19.9435 15.9459L18.979 15.234H20.174L20.5527 14.0769ZM17.6915 17.775L17.6151 18.9866L18.7206 19.4317L17.5681 19.7339L17.4918 20.9454L16.8532 19.9181L15.6949 20.2202L16.4583 19.2887L15.8197 18.2614L16.931 18.7065L17.6915 17.775Z" fill="#FFDE00"/>
+</svg>

+ 12 - 0
static/svg-icons/language/Thailand.svg

@@ -0,0 +1,12 @@
+<svg width="30" height="30" viewBox="0 0 30 30" fill="none" xmlns="http://www.w3.org/2000/svg">
+<g clip-path="url(#clip0_473_5357)">
+<path d="M0 15C0 18.9782 1.58035 22.7936 4.3934 25.6066C7.20644 28.4196 11.0218 30 15 30C18.9782 30 22.7936 28.4196 25.6066 25.6066C28.4196 22.7936 30 18.9782 30 15C30 11.0218 28.4196 7.20644 25.6066 4.3934C22.7936 1.58035 18.9782 0 15 0C11.0218 0 7.20644 1.58035 4.3934 4.3934C1.58035 7.20644 0 11.0218 0 15Z" fill="#F0F0F0"/>
+<path d="M29.0669 9.78247H0.933133C0.314167 11.4523 -0.00182912 13.2191 7.96417e-06 15C7.96417e-06 16.835 0.330008 18.5925 0.933133 20.2175H29.0669C29.6858 18.5477 30.0018 16.7808 30 15C30 13.165 29.67 11.4075 29.0669 9.78247Z" fill="#0052B4"/>
+<path d="M15 0C10.4538 0 6.38002 2.02312 3.62939 5.2175H26.3706C23.62 2.02312 19.5463 0 15 0ZM26.3706 24.7825H3.62939C6.38002 27.9769 10.4538 30 15 30C19.5463 30 23.62 27.9769 26.3706 24.7825Z" fill="#D80027"/>
+</g>
+<defs>
+<clipPath id="clip0_473_5357">
+<rect width="30" height="30" fill="white"/>
+</clipPath>
+</defs>
+</svg>

+ 4 - 0
static/svg-icons/level/1.svg

@@ -0,0 +1,4 @@
+<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
+<circle cx="10" cy="10" r="10" fill="#219EFF"/>
+<path d="M7.96094 13V12.2793H9.96484V5.31836L7.96094 6.16211V5.44141L9.96484 4.59766H10.7207V12.2793H12.7246V13H7.96094Z" fill="white"/>
+</svg>

+ 4 - 0
static/svg-icons/level/10.svg

@@ -0,0 +1,4 @@
+<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
+<circle cx="10" cy="10" r="10" fill="#219EFF"/>
+<path d="M4.96094 14V13.2793H6.96484V6.31836L4.96094 7.16211V6.44141L6.96484 5.59766H7.7207V13.2793H9.72461V14H4.96094ZM15.5371 12.0547C15.5371 12.3398 15.4824 12.6074 15.373 12.8574C15.2676 13.1074 15.1211 13.3262 14.9336 13.5137C14.7461 13.7012 14.5273 13.8496 14.2773 13.959C14.0273 14.0645 13.7598 14.1172 13.4746 14.1172H13.1172C12.832 14.1172 12.5625 14.0645 12.3086 13.959C12.0586 13.8496 11.8398 13.7012 11.6523 13.5137C11.4648 13.3262 11.3164 13.1074 11.207 12.8574C11.1016 12.6074 11.0488 12.3398 11.0488 12.0547V7.54297C11.0488 7.25781 11.1016 6.99023 11.207 6.74023C11.3164 6.49023 11.4648 6.27148 11.6523 6.08398C11.8398 5.89648 12.0586 5.75 12.3086 5.64453C12.5625 5.53516 12.832 5.48047 13.1172 5.48047H13.4746C13.7598 5.48047 14.0273 5.53516 14.2773 5.64453C14.5273 5.75 14.7461 5.89648 14.9336 6.08398C15.1211 6.27148 15.2676 6.49023 15.373 6.74023C15.4824 6.99023 15.5371 7.25781 15.5371 7.54297V12.0547ZM14.7812 7.54297C14.7812 7.35547 14.7461 7.18164 14.6758 7.02148C14.6055 6.85742 14.5098 6.71484 14.3887 6.59375C14.2676 6.47266 14.125 6.37695 13.9609 6.30664C13.8008 6.23633 13.627 6.20117 13.4395 6.20117H13.1523C12.9648 6.20117 12.7891 6.23633 12.625 6.30664C12.4648 6.37695 12.3223 6.47266 12.1973 6.59375C12.0762 6.71484 11.9805 6.85742 11.9102 7.02148C11.8398 7.18164 11.8047 7.35547 11.8047 7.54297V12.0547C11.8047 12.2422 11.8398 12.418 11.9102 12.582C11.9805 12.7422 12.0762 12.8848 12.1973 13.0098C12.3223 13.1309 12.4648 13.2266 12.625 13.2969C12.7891 13.3672 12.9648 13.4023 13.1523 13.4023H13.4395C13.627 13.4023 13.8008 13.3672 13.9609 13.2969C14.125 13.2266 14.2676 13.1309 14.3887 13.0098C14.5098 12.8848 14.6055 12.7422 14.6758 12.582C14.7461 12.418 14.7812 12.2422 14.7812 12.0547V7.54297Z" fill="white"/>
+</svg>

+ 4 - 0
static/svg-icons/level/2.svg

@@ -0,0 +1,4 @@
+<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
+<circle cx="10" cy="10" r="10" fill="#219EFF"/>
+<path d="M9.75977 5.20117C9.57227 5.20117 9.39648 5.23633 9.23242 5.30664C9.07227 5.37695 8.93164 5.47266 8.81055 5.59375C8.68945 5.71484 8.59375 5.85742 8.52344 6.02148C8.45312 6.18164 8.41797 6.35547 8.41797 6.54297V6.88281L7.66211 6.75977V6.54297C7.66211 6.25781 7.71484 5.99023 7.82031 5.74023C7.92969 5.49023 8.07812 5.27148 8.26562 5.08398C8.45312 4.89648 8.67188 4.75 8.92188 4.64453C9.17188 4.53516 9.43945 4.48047 9.72461 4.48047H10.082C10.3672 4.48047 10.6348 4.53125 10.8848 4.63281C11.1387 4.73438 11.3594 4.88086 11.5469 5.07227C11.7344 5.26367 11.8809 5.49414 11.9863 5.76367C12.0957 6.0293 12.1504 6.33008 12.1504 6.66602C12.1504 6.99805 12.0996 7.33203 11.998 7.66797C11.9004 8.00391 11.7695 8.33398 11.6055 8.6582C11.4453 8.98242 11.2598 9.29688 11.0488 9.60156C10.8418 9.90625 10.6289 10.1934 10.4102 10.4629C9.89844 11.0918 9.31836 11.6973 8.66992 12.2793H12.209V13H7.48047V12.4023C8.21094 11.8008 8.86328 11.1777 9.4375 10.5332C9.68359 10.2559 9.92383 9.96094 10.1582 9.64844C10.3926 9.33594 10.6016 9.01562 10.7852 8.6875C10.9688 8.35547 11.1152 8.01953 11.2246 7.67969C11.3379 7.33594 11.3945 6.99805 11.3945 6.66602C11.3945 6.41992 11.3574 6.20508 11.2832 6.02148C11.209 5.83789 11.1094 5.68555 10.9844 5.56445C10.8594 5.44336 10.7148 5.35352 10.5508 5.29492C10.3906 5.23242 10.2227 5.20117 10.0469 5.20117H9.75977Z" fill="white"/>
+</svg>

Разница между файлами не показана из-за своего большого размера
+ 2 - 0
static/svg-icons/level/3.svg


+ 4 - 0
static/svg-icons/level/4.svg

@@ -0,0 +1,4 @@
+<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
+<circle cx="10" cy="10" r="10" fill="#219EFF"/>
+<path d="M11.4883 11.5469V13H10.7324V11.5469H7.35742V11.1895L11.0898 4.59766H11.4883V10.8262H12.209V11.5469H11.4883ZM10.7324 6.66602L8.41797 10.8262H10.7324V6.66602Z" fill="white"/>
+</svg>

+ 4 - 0
static/svg-icons/level/5.svg

@@ -0,0 +1,4 @@
+<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
+<circle cx="10" cy="10" r="10" fill="#219EFF"/>
+<path d="M12.3262 11.0547C12.3262 11.3398 12.2715 11.6074 12.1621 11.8574C12.0566 12.1074 11.9102 12.3262 11.7227 12.5137C11.5352 12.7012 11.3164 12.8496 11.0664 12.959C10.8164 13.0645 10.5488 13.1172 10.2637 13.1172H9.90625C9.62109 13.1172 9.35156 13.0645 9.09766 12.959C8.84766 12.8496 8.62891 12.7012 8.44141 12.5137C8.25391 12.3262 8.10547 12.1074 7.99609 11.8574C7.89062 11.6074 7.83789 11.3398 7.83789 11.0547V10.9258H8.59375V11.0547C8.59375 11.2422 8.62891 11.418 8.69922 11.582C8.76953 11.7422 8.86523 11.8848 8.98633 12.0098C9.11133 12.1309 9.25391 12.2266 9.41406 12.2969C9.57812 12.3672 9.75391 12.4023 9.94141 12.4023H10.2285C10.416 12.4023 10.5898 12.3672 10.75 12.2969C10.9141 12.2266 11.0566 12.1309 11.1777 12.0098C11.2988 11.8848 11.3945 11.7422 11.4648 11.582C11.5352 11.418 11.5703 11.2422 11.5703 11.0547V9.42578C11.5703 9.23828 11.5352 9.06445 11.4648 8.9043C11.3945 8.74023 11.2988 8.59766 11.1777 8.47656C11.0566 8.35156 10.9141 8.25391 10.75 8.18359C10.5898 8.11328 10.416 8.07812 10.2285 8.07812H9.94141C9.75391 8.07812 9.57812 8.11328 9.41406 8.18359C9.25391 8.25391 9.11133 8.35156 8.98633 8.47656C8.86523 8.59766 8.76953 8.74023 8.69922 8.9043C8.62891 9.06445 8.59375 9.23828 8.59375 9.42578H7.83789L8.31836 4.59766H11.9102V5.31836H9.02734L8.75195 7.90234C8.93164 7.73047 9.14062 7.59766 9.37891 7.50391C9.61719 7.40625 9.87305 7.35742 10.1465 7.35742H10.2637C10.5488 7.35742 10.8164 7.41211 11.0664 7.52148C11.3164 7.62695 11.5352 7.77344 11.7227 7.96094C11.9102 8.14844 12.0566 8.36914 12.1621 8.62305C12.2715 8.87305 12.3262 9.14062 12.3262 9.42578V11.0547Z" fill="white"/>
+</svg>

Разница между файлами не показана из-за своего большого размера
+ 2 - 0
static/svg-icons/level/6.svg


+ 4 - 0
static/svg-icons/level/7.svg

@@ -0,0 +1,4 @@
+<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
+<circle cx="10" cy="10" r="10" fill="#219EFF"/>
+<path d="M9.2793 13H8.48828L11.6348 5.31836H8.7168V6.4375H7.96094V4.59766H12.5664V4.96094L9.2793 13Z" fill="white"/>
+</svg>

Разница между файлами не показана из-за своего большого размера
+ 2 - 0
static/svg-icons/level/8.svg


Разница между файлами не показана из-за своего большого размера
+ 2 - 0
static/svg-icons/level/9.svg


Разница между файлами не показана из-за своего большого размера
+ 1 - 0
static/svg-icons/newmsg.svg


+ 10 - 0
static/svg-icons/question.svg

@@ -0,0 +1,10 @@
+<svg width="14" height="14" viewBox="0 0 14 14" fill="none" xmlns="http://www.w3.org/2000/svg">
+<g clip-path="url(#clip0_783_2646)">
+<path d="M7 0.22583C3.2587 0.22583 0.22583 3.25876 0.22583 7.00005C0.22583 10.7414 3.2587 13.7743 7 13.7743C10.7413 13.7743 13.7742 10.7414 13.7742 7.00008C13.7742 3.25879 10.7414 0.22583 7 0.22583ZM7.65742 10.9091C7.65742 11.0961 7.50582 11.2478 7.31872 11.2478H6.30258C6.11556 11.2478 5.9639 11.0961 5.9639 10.9091V9.89295C5.9639 9.70584 6.11556 9.55419 6.30258 9.55419H7.31872C7.5058 9.55419 7.65742 9.70583 7.65742 9.89295V10.9091ZM9.33643 6.24672C9.20028 6.44085 8.89126 6.6882 8.50438 6.98979L8.07565 7.28564C7.86742 7.44716 7.68274 7.63521 7.61445 7.8505C7.59112 7.92385 7.57363 8.04441 7.56186 8.1746C7.55592 8.24012 7.49731 8.37378 7.36032 8.37378C7.02466 8.37378 6.38496 8.37378 6.25767 8.37378C6.07845 8.37378 6.04643 8.23339 6.04942 8.16472C6.06926 7.71465 6.11051 7.31509 6.29387 7.09998C6.66513 6.66468 7.50989 6.12287 7.50989 6.12287C7.6385 6.02581 7.74263 5.9203 7.82138 5.80532C7.96454 5.60793 8.0833 5.39115 8.0833 5.15419C8.0833 4.88183 8.00368 4.63357 7.84391 4.40886C7.68469 4.18504 7.39302 4.0729 6.9704 4.0729C6.55436 4.0729 6.25945 4.21099 6.08561 4.48704C5.95719 4.691 5.87633 4.87852 5.84285 5.08256C5.83094 5.15477 5.78464 5.30687 5.63028 5.30687C5.30415 5.30687 4.70288 5.30687 4.55485 5.30687C4.32586 5.30687 4.27544 5.15848 4.28206 5.08695C4.36495 4.18542 4.71725 3.56946 5.34016 3.17395C5.76373 2.90163 6.28485 2.76498 6.903 2.76498C7.71524 2.76498 8.38948 2.95861 8.92702 3.34641C9.4636 3.73368 9.73267 4.30753 9.73267 5.06841C9.73272 5.53437 9.56918 5.9273 9.33645 6.24672H9.33643Z" fill="#FD5F28"/>
+</g>
+<defs>
+<clipPath id="clip0_783_2646">
+<rect width="14" height="14" fill="white"/>
+</clipPath>
+</defs>
+</svg>

+ 3 - 0
static/svg-icons/recharge/balance.svg

@@ -0,0 +1,3 @@
+<svg width="23" height="23" viewBox="0 0 23 23" fill="none" xmlns="http://www.w3.org/2000/svg">
+<path fill-rule="evenodd" clip-rule="evenodd" d="M22.1963 16.4222C22.3144 16.38 22.4438 16.4391 22.4859 16.5572C22.4944 16.5825 22.5 16.6078 22.5 16.6359V18.3122C22.5 18.405 22.4409 18.4894 22.3509 18.5231L11.5566 22.4466C11.3569 22.5197 11.1403 22.5197 10.9406 22.4466L0.149062 18.5203C0.0590625 18.4866 0 18.4022 0 18.3094V16.6331C0 16.5094 0.10125 16.4081 0.225 16.4081C0.250313 16.4081 0.275625 16.4137 0.300938 16.4222L2.025 17.0494V1.9125C2.025 0.855 2.88 0 3.9375 0H18.5625C19.62 0 20.475 0.855 20.475 1.9125V17.0494L22.1963 16.4222ZM12.7125 11.3428L15.6291 5.95406C15.6459 5.92031 15.6572 5.88375 15.6572 5.84719C15.6544 5.72625 15.5531 5.625 15.4294 5.625H13.8966C13.8122 5.625 13.7334 5.67281 13.6969 5.74875L11.3147 10.4963H11.2219L8.83969 5.74875C8.80031 5.67281 8.72437 5.625 8.64 5.625H7.07344C7.03688 5.625 7.00031 5.63344 6.96656 5.65312C6.85687 5.71219 6.8175 5.85 6.87656 5.95687L9.79875 11.3456H8.19563C8.07187 11.3456 7.97062 11.4469 7.97062 11.5706V12.3328C7.97062 12.4566 8.07187 12.5578 8.19563 12.5578H10.3331V13.6547H8.19563C8.07187 13.6547 7.97062 13.7559 7.97062 13.8797V14.6419C7.97062 14.7656 8.07187 14.8669 8.19563 14.8669H10.3331V16.65C10.3331 16.7738 10.4344 16.875 10.5581 16.875H11.9616C12.0853 16.875 12.1866 16.7738 12.1866 16.65V14.8641H14.3325C14.4563 14.8641 14.5575 14.7628 14.5575 14.6391V13.8769C14.5575 13.7531 14.4563 13.6519 14.3325 13.6519H12.1866V12.555H14.3325C14.4563 12.555 14.5575 12.4537 14.5575 12.33V11.5678C14.5575 11.4441 14.4563 11.3428 14.3325 11.3428H12.7125Z" fill="white"/>
+</svg>

+ 9 - 0
static/svg-icons/recharge/bankcard.svg

@@ -0,0 +1,9 @@
+<svg width="36" height="36" viewBox="0 0 36 36" fill="none" xmlns="http://www.w3.org/2000/svg">
+<path d="M30.7256 6.30005H4.34096C2.73655 6.30005 2.70001 7.16811 2.70001 9.22846V11.491H32.3732V9.22846C32.3765 8.24884 32.7353 6.30005 30.7256 6.30005ZM2.70333 27.0256C2.70333 28.0052 3.45405 28.8 4.38082 28.8H30.6957C31.6225 28.8 32.3732 28.0052 32.3732 27.0256V12.8262H2.70333V27.0256ZM15.884 18.4146H19.1825V20.1438H15.884V18.4146ZM4.34096 18.4146H14.2364V20.1438H4.34096V18.4146ZM4.34096 21.8764H14.2364V23.6056H4.34096V21.8764Z" fill="url(#paint0_linear_383_3580)"/>
+<defs>
+<linearGradient id="paint0_linear_383_3580" x1="17.55" y1="6.30005" x2="17.55" y2="28.8" gradientUnits="userSpaceOnUse">
+<stop stop-color="#7BDEFF"/>
+<stop offset="1" stop-color="#0192FF"/>
+</linearGradient>
+</defs>
+</svg>

+ 10 - 0
static/svg-icons/recharge/item.svg

@@ -0,0 +1,10 @@
+<svg width="30" height="30" viewBox="0 0 30 30" fill="none" xmlns="http://www.w3.org/2000/svg">
+<path d="M1.875 15C1.875 18.481 3.25781 21.8194 5.71922 24.2808C8.18064 26.7422 11.519 28.125 15 28.125C18.481 28.125 21.8194 26.7422 24.2808 24.2808C26.7422 21.8194 28.125 18.481 28.125 15C28.125 11.519 26.7422 8.18064 24.2808 5.71922C21.8194 3.25781 18.481 1.875 15 1.875C11.519 1.875 8.18064 3.25781 5.71922 5.71922C3.25781 8.18064 1.875 11.519 1.875 15Z" fill="url(#paint0_linear_394_4205)"/>
+<path d="M12.1223 8.18916L13.0673 9.41729H16.3739L17.3189 8.18916L17.4136 8.00025V7.90557C17.4136 7.71666 17.3189 7.62244 17.13 7.52775C17.13 7.52775 15.8072 7.24463 14.6738 7.24463C13.5394 7.24463 12.217 7.52775 12.217 7.52775C11.7445 7.71666 12.1223 8.18916 12.1223 8.18916ZM16.6575 10.2681H13.2563C10.6106 11.2126 8.4375 14.1418 8.4375 16.8821C8.4375 20.2829 10.327 21.8893 14.9569 21.8893C19.5867 21.8893 21.4763 20.2829 21.4763 16.8817C21.4763 14.1418 19.3031 11.2126 16.6575 10.2676V10.2681ZM17.3189 17.2595C17.5078 17.2595 17.6967 17.4484 17.6967 17.6378C17.6967 17.8267 17.5078 18.0156 17.3189 18.0156H15.4294V19.3384C15.4294 19.5273 15.2405 19.7162 15.0516 19.7162C14.8622 19.7162 14.6733 19.5273 14.6733 19.3384V18.1103H12.7838C12.5948 18.1103 12.4059 17.9209 12.4059 17.732C12.4059 17.5431 12.5948 17.3542 12.7838 17.3542H14.6733V16.3149H12.7838C12.5948 16.3149 12.4059 16.126 12.4059 15.9367C12.4059 15.7478 12.5948 15.5588 12.7838 15.5588H14.768V15.4646C14.768 15.4646 14.6733 15.4646 14.6733 15.3699L13.1616 13.5746C12.9727 13.4804 12.9727 13.1968 13.1616 13.0079C13.3505 12.819 13.6341 12.9132 13.7288 13.1026L15.0516 14.6143L16.3739 13.1026C16.5633 12.9132 16.7522 12.9132 16.9411 13.0079C17.13 13.1968 17.13 13.3857 17.0353 13.5751L15.5236 15.3704C15.5236 15.4642 15.4294 15.4642 15.3347 15.4642H17.3189C17.5078 15.4642 17.6967 15.6535 17.6967 15.8424C17.6967 16.0313 17.5078 16.2203 17.3189 16.2203H15.4294V17.2595H17.3189Z" fill="white"/>
+<defs>
+<linearGradient id="paint0_linear_394_4205" x1="15" y1="1.875" x2="15" y2="28.125" gradientUnits="userSpaceOnUse">
+<stop stop-color="#7BDEFF"/>
+<stop offset="1" stop-color="#0192FF"/>
+</linearGradient>
+</defs>
+</svg>

+ 24 - 0
static/svg-icons/recharge/upload.svg

@@ -0,0 +1,24 @@
+<svg width="30" height="30" viewBox="0 0 30 30" fill="none" xmlns="http://www.w3.org/2000/svg">
+<g clip-path="url(#clip0_783_2691)">
+<path d="M26.25 30H3.75C1.6875 30 0 28.3125 0 26.25V3.75C0 1.6875 1.6875 0 3.75 0H26.25C28.3125 0 30 1.6875 30 3.75V26.25C30 28.3125 28.3125 30 26.25 30ZM3.75 1.875C2.625 1.875 1.875 2.625 1.875 3.75V26.25C1.875 27.375 2.625 28.125 3.75 28.125H26.25C27.375 28.125 28.125 27.375 28.125 26.25V3.75C28.125 2.625 27.375 1.875 26.25 1.875H3.75Z" fill="url(#paint0_linear_783_2691)"/>
+<path d="M22.5 15.9375H7.5C6.9375 15.9375 6.5625 15.5625 6.5625 15C6.5625 14.4375 6.9375 14.0625 7.5 14.0625H22.5C23.0625 14.0625 23.4375 14.4375 23.4375 15C23.4375 15.5625 23.0625 15.9375 22.5 15.9375Z" fill="url(#paint1_linear_783_2691)"/>
+<path d="M15 23.4375C14.4375 23.4375 14.0625 23.0625 14.0625 22.5V7.5C14.0625 6.9375 14.4375 6.5625 15 6.5625C15.5625 6.5625 15.9375 6.9375 15.9375 7.5V22.5C15.9375 23.0625 15.5625 23.4375 15 23.4375Z" fill="url(#paint2_linear_783_2691)"/>
+</g>
+<defs>
+<linearGradient id="paint0_linear_783_2691" x1="15" y1="0" x2="15" y2="30" gradientUnits="userSpaceOnUse">
+<stop stop-color="#7BDEFF"/>
+<stop offset="1" stop-color="#0192FF"/>
+</linearGradient>
+<linearGradient id="paint1_linear_783_2691" x1="15" y1="14.0625" x2="15" y2="15.9375" gradientUnits="userSpaceOnUse">
+<stop stop-color="#7BDEFF"/>
+<stop offset="1" stop-color="#0192FF"/>
+</linearGradient>
+<linearGradient id="paint2_linear_783_2691" x1="15" y1="6.5625" x2="15" y2="23.4375" gradientUnits="userSpaceOnUse">
+<stop stop-color="#7BDEFF"/>
+<stop offset="1" stop-color="#0192FF"/>
+</linearGradient>
+<clipPath id="clip0_783_2691">
+<rect width="30" height="30" fill="white"/>
+</clipPath>
+</defs>
+</svg>

+ 3 - 0
static/svg-icons/refresh.svg

@@ -0,0 +1,3 @@
+<svg width="14" height="14" viewBox="0 0 14 14" fill="none" xmlns="http://www.w3.org/2000/svg">
+<path d="M6.99992 11.5324C6.2677 11.5307 5.5474 11.347 4.90385 10.9977C4.2603 10.6484 3.7137 10.1446 3.31325 9.53158H2.14659C2.5946 10.4358 3.28645 11.1968 4.14403 11.7287C5.00162 12.2605 5.99079 12.5421 6.99992 12.5416C8.36822 12.5298 9.68245 12.0058 10.6834 11.0728C11.6844 10.1398 12.2995 8.86568 12.4074 7.50159H13.4166L11.9349 5.48909L10.4533 7.50159H11.4158C11.3064 8.59979 10.7951 9.61884 9.97997 10.3629C9.16486 11.1069 8.10351 11.5235 6.99992 11.5324ZM6.99992 1.45825C5.72009 1.46837 4.48449 1.92777 3.50891 2.75621C2.53334 3.58465 1.87979 4.72948 1.66242 5.99075H0.583252L2.06492 8.00909L3.54659 5.99075H2.66575C2.88505 5.00275 3.43326 4.11846 4.22063 3.48263C5.008 2.8468 5.98789 2.49709 6.99992 2.49075C7.63705 2.4918 8.26637 2.63108 8.84445 2.89897C9.42252 3.16685 9.93559 3.55698 10.3483 4.04242L10.5408 3.99575H11.5441C11.0629 3.22318 10.3937 2.58521 9.59898 2.14145C8.8043 1.6977 7.91009 1.46264 6.99992 1.45825Z" fill="white"/>
+</svg>

Разница между файлами не показана из-за своего большого размера
+ 2 - 0
static/svg-icons/service.svg


+ 3 - 0
static/svg-icons/unchecked.svg

@@ -0,0 +1,3 @@
+<svg width="18" height="18" viewBox="0 0 18 18" fill="none" xmlns="http://www.w3.org/2000/svg">
+<path d="M8.99414 1.5C13.1311 1.5 16.4941 4.863 16.4941 9C16.4941 13.137 13.1311 16.5 8.99414 16.5C4.85714 16.5 1.49414 13.137 1.49414 9C1.49414 4.863 4.86014 1.5 8.99414 1.5ZM8.99414 0C4.02314 0 -0.00585938 4.029 -0.00585938 9C-0.00585938 13.971 4.02314 18 8.99414 18C13.9651 18 17.9941 13.971 17.9941 9C17.9941 4.029 13.9651 0 8.99414 0Z" fill="#B3B3B3"/>
+</svg>

+ 6 - 0
static/svg-icons/user/aboutus.svg

@@ -0,0 +1,6 @@
+<svg width="40" height="40" viewBox="0 0 40 40" fill="none" xmlns="http://www.w3.org/2000/svg">
+<path d="M3.03809 19.91C3.03809 24.389 4.81735 28.6845 7.98447 31.8516C11.1516 35.0187 15.4471 36.798 19.9261 36.798C24.4051 36.798 28.7006 35.0187 31.8677 31.8516C35.0348 28.6845 36.8141 24.389 36.8141 19.91C36.8141 15.431 35.0348 11.1355 31.8677 7.96835C28.7006 4.80124 24.4051 3.02197 19.9261 3.02197C15.4471 3.02197 11.1516 4.80124 7.98447 7.96835C4.81735 11.1355 3.03809 15.431 3.03809 19.91Z" fill="#FAD400"/>
+<path d="M11.14 16.234C7.81805 16.234 4.87405 17.85 3.05005 20.338C3.22805 27.476 7.83005 33.514 14.22 35.808C18.252 34.508 21.17 30.728 21.17 26.262C21.168 20.724 16.678 16.234 11.14 16.234Z" fill="#FFE771"/>
+<path d="M12.108 24.154L11.494 29.118C11.336 30.39 12.536 31.408 13.766 31.046L20 29.21L12.108 24.154Z" fill="#FFF4C5"/>
+<path d="M19.9261 9.52399C14.1901 9.52399 9.53809 14.174 9.53809 19.912C9.53809 25.65 14.1881 30.3 19.9261 30.3C25.6641 30.3 30.3141 25.65 30.3141 19.912C30.3141 14.174 25.6641 9.52399 19.9261 9.52399ZM14.4981 21.584C13.5741 21.584 12.8261 20.836 12.8261 19.912C12.8261 18.988 13.5741 18.24 14.4981 18.24C15.4221 18.24 16.1701 18.988 16.1701 19.912C16.1701 20.836 15.4201 21.584 14.4981 21.584ZM19.9021 21.584C18.9781 21.584 18.2301 20.836 18.2301 19.912C18.2301 18.988 18.9781 18.24 19.9021 18.24C20.8261 18.24 21.5741 18.988 21.5741 19.912C21.5741 20.836 20.8261 21.584 19.9021 21.584ZM25.3061 21.584C24.3821 21.584 23.6341 20.836 23.6341 19.912C23.6341 18.988 24.3821 18.24 25.3061 18.24C26.2301 18.24 26.9781 18.988 26.9781 19.912C26.9781 20.836 26.2301 21.584 25.3061 21.584Z" fill="white"/>
+</svg>

+ 3 - 0
static/svg-icons/user/account_info.svg

@@ -0,0 +1,3 @@
+<svg width="28" height="28" viewBox="0 0 28 28" fill="none" xmlns="http://www.w3.org/2000/svg">
+<path d="M24.6935 4H4.30646C3.6949 4.00048 3.10851 4.24698 2.67607 4.68537C2.24362 5.12377 2.00047 5.71823 2 6.33821V20.6618C2.00047 21.2818 2.24362 21.8762 2.67607 22.3146C3.10851 22.753 3.6949 22.9995 4.30646 23H24.6935C25.3051 22.9995 25.8915 22.753 26.3239 22.3146C26.7564 21.8762 26.9995 21.2818 27 20.6618V6.33821C26.9995 5.71823 26.7564 5.12377 26.3239 4.68537C25.8915 4.24698 25.3051 4.00048 24.6935 4ZM4.30646 5.70371H24.6935C25.0389 5.70371 25.3194 5.98811 25.3194 6.33821V8.38572H3.68146V6.33821C3.68146 5.98811 3.962 5.70371 4.30735 5.70371H4.30646ZM24.6935 21.2963H4.30646C4.14054 21.2961 3.98148 21.2291 3.86415 21.1102C3.74683 20.9912 3.68081 20.83 3.68058 20.6618V9.84103H25.3185V20.6618C25.3185 20.8301 25.2526 20.9915 25.1352 21.1105C25.0178 21.2294 24.8586 21.2963 24.6926 21.2963H24.6935ZM23.0813 13.2619H18.4808C18.2578 13.2615 18.044 13.1714 17.8862 13.0115C17.7285 12.8516 17.6397 12.6349 17.6392 12.4087C17.6397 12.1826 17.7285 11.9659 17.8862 11.806C18.044 11.6461 18.2578 11.556 18.4808 11.5555H23.0813C23.3044 11.556 23.5182 11.6461 23.6759 11.806C23.8337 11.9659 23.9225 12.1826 23.9229 12.4087C23.9225 12.6347 23.8338 12.8513 23.6762 13.0112C23.5187 13.1711 23.3051 13.2612 23.0822 13.2619H23.0813Z" fill="#222222"/>
+</svg>

Разница между файлами не показана из-за своего большого размера
+ 1 - 0
static/svg-icons/user/agreement.svg


Разница между файлами не показана из-за своего большого размера
+ 2 - 0
static/svg-icons/user/archive_info.svg


+ 9 - 0
static/svg-icons/user/bankcard.svg

@@ -0,0 +1,9 @@
+<svg width="30" height="30" viewBox="0 0 30 30" fill="none" xmlns="http://www.w3.org/2000/svg">
+<path d="M26.6191 5.5459H3.34863C1.93359 5.5459 1.90137 6.27539 1.90137 8.00684V9.9082H28.0723V8.00684C28.0752 7.18359 28.3916 5.5459 26.6191 5.5459ZM1.9043 22.9629C1.9043 23.7861 2.56641 24.4541 3.38379 24.4541H26.5928C27.4102 24.4541 28.0723 23.7861 28.0723 22.9629V11.0303H1.9043V22.9629ZM13.5293 15.7266H16.4385V17.1797H13.5293V15.7266ZM3.34863 15.7266H12.0762V17.1797H3.34863V15.7266ZM3.34863 18.6357H12.0762V20.0889H3.34863V18.6357Z" fill="url(#paint0_linear_1306_4207)"/>
+<defs>
+<linearGradient id="paint0_linear_1306_4207" x1="14.9986" y1="5.5459" x2="14.9986" y2="24.4541" gradientUnits="userSpaceOnUse">
+<stop stop-color="#7BDEFF"/>
+<stop offset="1" stop-color="#0192FF"/>
+</linearGradient>
+</defs>
+</svg>

+ 6 - 0
static/svg-icons/user/basic.svg

@@ -0,0 +1,6 @@
+<svg width="40" height="40" viewBox="0 0 40 40" fill="none" xmlns="http://www.w3.org/2000/svg">
+<path d="M3.20801 20.034C3.20801 24.513 4.98727 28.8085 8.15439 31.9756C11.3215 35.1427 15.617 36.922 20.096 36.922C24.575 36.922 28.8705 35.1427 32.0376 31.9756C35.2047 28.8085 36.984 24.513 36.984 20.034C36.984 15.555 35.2047 11.2595 32.0376 8.09238C28.8705 4.92526 24.575 3.146 20.096 3.146C15.617 3.146 11.3215 4.92526 8.15439 8.09238C4.98727 11.2595 3.20801 15.555 3.20801 20.034Z" fill="#4AEDCD"/>
+<path d="M11.308 16.356C7.98602 16.356 5.04202 17.972 3.21802 20.46C3.39602 27.598 7.99802 33.636 14.388 35.93C18.42 34.63 21.338 30.85 21.338 26.384C21.336 20.848 16.846 16.356 11.308 16.356Z" fill="#83FFE1"/>
+<path d="M14.9541 13.784C14.9541 15.24 15.5325 16.6364 16.5621 17.666C17.5917 18.6956 18.9881 19.274 20.4441 19.274C21.9001 19.274 23.2965 18.6956 24.3261 17.666C25.3557 16.6364 25.9341 15.24 25.9341 13.784C25.9341 12.328 25.3557 10.9316 24.3261 9.90199C23.2965 8.87242 21.9001 8.29401 20.4441 8.29401C18.9881 8.29401 17.5917 8.87242 16.5621 9.90199C15.5325 10.9316 14.9541 12.328 14.9541 13.784Z" fill="white"/>
+<path d="M9.5061 28.608C12.0561 31.47 15.8801 33.292 20.1561 33.292C24.7681 33.292 28.8521 31.174 31.3821 27.916C30.1141 23.38 25.7361 20.034 20.5261 20.034C15.0581 20.034 10.5021 23.724 9.5061 28.608Z" fill="#D7FFF7"/>
+</svg>

+ 9 - 0
static/svg-icons/user/language.svg

@@ -0,0 +1,9 @@
+<svg width="30" height="30" viewBox="0 0 30 30" fill="none" xmlns="http://www.w3.org/2000/svg">
+<path d="M25.3857 15.1084C25.3857 16.4912 26.4814 17.6162 27.8496 17.6689C27.4951 19.3887 26.8008 20.9854 25.8398 22.3887C24.832 21.4922 23.291 21.5273 22.3272 22.4912C21.375 23.4434 21.3281 24.958 22.1895 25.9658C20.7832 26.8857 19.1895 27.542 17.4785 27.8672C17.3613 26.5605 16.2656 25.5352 14.9268 25.5352C13.6025 25.5352 12.5127 26.54 12.3779 27.8291C10.7021 27.4834 9.14356 26.8184 7.76953 25.9014C8.55762 24.8965 8.48731 23.4375 7.56152 22.5117C6.63281 21.583 5.1709 21.5156 4.16602 22.3096C3.23438 20.9238 2.55762 19.3506 2.20898 17.6602C3.49805 17.5254 4.50293 16.4355 4.50293 15.1113C4.50293 13.7725 3.47754 12.6768 2.1709 12.5596C2.49316 10.8486 3.15234 9.25488 4.06934 7.85156C5.07715 8.72754 6.60352 8.68652 7.56152 7.72852C8.53125 6.75879 8.56055 5.20312 7.64941 4.19531C9.04981 3.2373 10.6465 2.54297 12.3662 2.18848C12.4189 3.55957 13.5439 4.65234 14.9268 4.65234C16.3213 4.65234 17.458 3.53613 17.4873 2.14746C19.248 2.48145 20.8828 3.16992 22.3154 4.13086C21.3252 5.13281 21.3281 6.74707 22.3242 7.74609C23.3203 8.74219 24.9287 8.74512 25.9307 7.76074C26.8799 9.18457 27.5566 10.8047 27.8877 12.5479C26.502 12.5771 25.3857 13.7109 25.3857 15.1084ZM14.9619 9.29004C11.9004 9.29004 9.42188 11.7715 9.42188 14.8301C9.42188 17.8916 11.9033 20.3701 14.9619 20.3701C18.0234 20.3701 20.502 17.8887 20.502 14.8301C20.502 11.7715 18.0234 9.29004 14.9619 9.29004Z" fill="url(#paint0_linear_1306_4209)"/>
+<defs>
+<linearGradient id="paint0_linear_1306_4209" x1="15.0293" y1="2.14746" x2="15.0293" y2="27.8672" gradientUnits="userSpaceOnUse">
+<stop stop-color="#7BDEFF"/>
+<stop offset="1" stop-color="#0192FF"/>
+</linearGradient>
+</defs>
+</svg>

+ 3 - 0
static/svg-icons/user/line.svg

@@ -0,0 +1,3 @@
+<svg width="5" height="20" viewBox="0 0 5 20" fill="none" xmlns="http://www.w3.org/2000/svg">
+<line x1="2.5" y1="1.09279e-07" x2="2.5" y2="20" stroke="#219EFF" stroke-width="5"/>
+</svg>

+ 6 - 0
static/svg-icons/user/loanagree.svg

@@ -0,0 +1,6 @@
+<svg width="40" height="40" viewBox="0 0 40 40" fill="none" xmlns="http://www.w3.org/2000/svg">
+<path d="M3.05396 20.034C3.05396 24.513 4.83322 28.8085 8.00034 31.9756C11.1674 35.1427 15.463 36.922 19.942 36.922C24.4209 36.922 28.7165 35.1427 31.8836 31.9756C35.0507 28.8085 36.83 24.513 36.83 20.034C36.83 15.555 35.0507 11.2595 31.8836 8.09238C28.7165 4.92526 24.4209 3.146 19.942 3.146C15.463 3.146 11.1674 4.92526 8.00034 8.09238C4.83322 11.2595 3.05396 15.555 3.05396 20.034Z" fill="#00DBFF"/>
+<path d="M11.154 16.356C7.83196 16.356 4.88796 17.972 3.06396 20.46C3.24196 27.598 7.84397 33.636 14.234 35.93C18.266 34.63 21.184 30.85 21.184 26.384C21.184 20.848 16.694 16.356 11.154 16.356Z" fill="#33ECFF"/>
+<path d="M21.3499 30.16L25.8579 24.414H14.0259L18.5339 30.16C19.2499 31.074 20.6339 31.074 21.3499 30.16Z" fill="#C2FFFF"/>
+<path d="M26.506 11.304H13.378C11.184 11.304 9.40601 13.082 9.40601 15.276V23.424C9.40601 25.618 11.184 27.396 13.378 27.396H26.508C28.702 27.396 30.48 25.618 30.48 23.424V15.276C30.48 13.082 28.7 11.304 26.506 11.304ZM21.464 23.068H14.056C13.7595 23.0624 13.477 22.9407 13.2692 22.729C13.0615 22.5174 12.9451 22.2326 12.9451 21.936C12.9451 21.6394 13.0615 21.3547 13.2692 21.143C13.477 20.9313 13.7595 20.8096 14.056 20.804H21.464C21.7605 20.8096 22.0431 20.9313 22.2508 21.143C22.4585 21.3547 22.5749 21.6394 22.5749 21.936C22.5749 22.2326 22.4585 22.5174 22.2508 22.729C22.0431 22.9407 21.7605 23.0624 21.464 23.068ZM25.828 17.804H14.056C13.7595 17.7984 13.477 17.6767 13.2692 17.465C13.0615 17.2534 12.9451 16.9686 12.9451 16.672C12.9451 16.3754 13.0615 16.0907 13.2692 15.879C13.477 15.6673 13.7595 15.5456 14.056 15.54H25.828C26.452 15.54 26.96 16.046 26.96 16.672C26.958 17.298 26.452 17.804 25.828 17.804Z" fill="white"/>
+</svg>

Разница между файлами не показана из-за своего большого размера
+ 2 - 0
static/svg-icons/user/logout.svg


+ 9 - 0
static/svg-icons/user/message.svg

@@ -0,0 +1,9 @@
+<svg width="29" height="29" viewBox="0 0 29 29" fill="none" xmlns="http://www.w3.org/2000/svg">
+<path d="M27.1733 14.5C27.1733 7.49288 21.493 1.8125 14.4858 1.8125C7.47871 1.8125 1.79834 7.49288 1.79834 14.5C1.79834 21.5071 7.47871 27.1875 14.4858 27.1875C14.4906 27.1875 14.4953 27.1874 14.5 27.1874V27.1875H27.1875V14.5H27.1733ZM14.6416 17.2471H8.69434C7.99049 17.2471 7.41992 16.6765 7.41992 15.9727C7.41992 15.2688 7.99049 14.6982 8.69434 14.6982H14.6416C15.3454 14.6982 15.916 15.2688 15.916 15.9727C15.916 16.6765 15.3454 17.2471 14.6416 17.2471ZM20.3057 12.7158H8.69434C7.99049 12.7158 7.41992 12.1453 7.41992 11.4414C7.41992 10.7376 7.99049 10.167 8.69434 10.167H20.3057C21.0095 10.167 21.5801 10.7376 21.5801 11.4414C21.5801 12.1453 21.0095 12.7158 20.3057 12.7158Z" fill="url(#paint0_linear_2086_1253)"/>
+<defs>
+<linearGradient id="paint0_linear_2086_1253" x1="14.4929" y1="1.8125" x2="14.4929" y2="27.1875" gradientUnits="userSpaceOnUse">
+<stop stop-color="#78DCFF"/>
+<stop offset="1" stop-color="#0997FF"/>
+</linearGradient>
+</defs>
+</svg>

+ 9 - 0
static/svg-icons/user/messages.svg

@@ -0,0 +1,9 @@
+<svg width="30" height="30" viewBox="0 0 30 30" fill="none" xmlns="http://www.w3.org/2000/svg">
+<path d="M16.863 20.1794L13.0579 20.2014C13.018 20.2015 12.9787 20.2107 12.9429 20.2282C12.9071 20.2458 12.8757 20.2712 12.8511 20.3026C12.8266 20.334 12.8094 20.3706 12.8011 20.4096C12.7927 20.4486 12.7933 20.489 12.8027 20.5277C12.9227 21.0112 13.2017 21.4403 13.595 21.7461C13.9882 22.0519 14.4729 22.2166 14.971 22.2138C15.4691 22.2109 15.9519 22.0407 16.3416 21.7305C16.7313 21.4202 17.0055 20.9879 17.1199 20.5031C17.129 20.4644 17.1292 20.4242 17.1205 20.3854C17.1118 20.3466 17.0944 20.3103 17.0697 20.2792C17.045 20.248 17.0136 20.2229 16.9778 20.2056C16.942 20.1883 16.9027 20.1794 16.863 20.1794ZM10.0195 16.7095C9.65028 16.9744 9.34286 17.3163 9.11845 17.7115C8.89404 18.1067 8.75797 18.5459 8.71963 18.9987C8.717 19.0317 8.72122 19.0648 8.73203 19.096C8.74284 19.1273 8.76 19.1559 8.78243 19.1802C8.80486 19.2045 8.83208 19.2239 8.86236 19.2371C8.89265 19.2503 8.92535 19.2572 8.9584 19.2571H20.9599C20.9929 19.2572 21.0256 19.2503 21.0559 19.2371C21.0862 19.2239 21.1134 19.2045 21.1358 19.1802C21.1583 19.1559 21.1754 19.1273 21.1862 19.096C21.197 19.0648 21.2013 19.0317 21.1986 18.9987C21.1603 18.5459 21.0242 18.1067 20.7998 17.7115C20.5754 17.3163 20.268 16.9744 19.8987 16.7095C19.8258 16.6569 19.7663 16.5878 19.7253 16.5078C19.6843 16.4278 19.6629 16.3391 19.6629 16.2492V13.362C19.6629 11.4788 18.2859 9.90234 16.4897 9.58887V9.4749C16.4897 8.62266 15.7925 7.91045 14.9405 7.92217C14.5392 7.92884 14.1566 8.09263 13.8747 8.37836C13.5929 8.66409 13.4344 9.04896 13.4332 9.45029V9.58828C11.6347 9.90029 10.2565 11.4776 10.2565 13.362V16.2492C10.2564 16.3392 10.2348 16.4279 10.1936 16.5079C10.1524 16.588 10.0927 16.6571 10.0195 16.7095ZM14.9587 27.8716C7.8624 27.8716 2.10938 22.1191 2.10938 15.0214C2.10938 7.97256 7.91016 2.1709 14.9596 2.1709C22.0564 2.1709 27.8098 7.92422 27.8098 15.0211C27.8098 22.0702 22.0084 27.8716 14.9596 27.8716H14.9587Z" fill="url(#paint0_linear_1306_4218)"/>
+<defs>
+<linearGradient id="paint0_linear_1306_4218" x1="14.9596" y1="2.1709" x2="14.9596" y2="27.8716" gradientUnits="userSpaceOnUse">
+<stop stop-color="#7BDEFF"/>
+<stop offset="1" stop-color="#0192FF"/>
+</linearGradient>
+</defs>
+</svg>

+ 24 - 0
static/svg-icons/user/newuser.svg

@@ -0,0 +1,24 @@
+<svg width="19" height="19" viewBox="0 0 19 19" fill="none" xmlns="http://www.w3.org/2000/svg">
+<mask id="mask0_0_12" style="mask-type:luminance" maskUnits="userSpaceOnUse" x="10" y="9" width="9" height="9">
+<path d="M13.0701 9.39C7.86513 10.71 9.90513 18.325 15.0001 17.12C20.1501 15.905 18.2501 8.075 13.0701 9.39ZM14.5901 13.86C14.5901 14.445 14.8201 15.83 13.9701 15.83C13.1751 15.835 13.3551 14.555 13.3551 13.86C12.5201 13.66 12.0551 14.04 11.4751 13.495L11.4501 12.885C12.3101 12.37 12.4251 12.71 13.3451 12.545C13.3801 11.975 13.1351 10.59 13.9651 10.595C14.8201 10.6 14.5551 11.96 14.5851 12.545C15.6801 12.74 16.7301 12.175 16.6651 13.52C15.9751 14.08 15.5001 13.64 14.5901 13.86Z" fill="white"/>
+</mask>
+<g mask="url(#mask0_0_12)">
+<mask id="mask1_0_12" style="mask-type:luminance" maskUnits="userSpaceOnUse" x="-42" y="-198" width="377" height="668">
+<path d="M334.41 -198H-41.0299V469.785H334.41V-198Z" fill="white"/>
+</mask>
+<g mask="url(#mask1_0_12)">
+<path d="M23.0451 4.24001H5.02513V22.26H23.0451V4.24001Z" fill="white"/>
+</g>
+</g>
+<mask id="mask2_0_12" style="mask-type:luminance" maskUnits="userSpaceOnUse" x="0" y="0" width="13" height="19">
+<path d="M11.6 17.92C11.335 17.675 10.63 17.27 10.32 17.03C8.565 15.67 8.265 12.86 9.815 10.695L11.355 7.83002C12.605 6.59002 11.76 5.98002 11.675 5.56502C11.63 5.34002 11.64 4.83501 11.615 4.56001C11.18 0.385014 7.64 -0.429982 5.405 0.705018C2.65 2.10002 3.385 4.86502 2.94 5.89502C2.305 7.36002 3.33 7.58501 3.58 8.10501C3.95 8.88001 3.71 8.96502 4.395 9.48502C5.57 10.375 5.11 11.69 3.975 12.33C2.335 13.25 0.419995 12.73 0.104995 14.96C-0.325005 18.065 0.879998 17.775 3.44 18.01C5.115 18.16 10.275 18.52 11.6 17.92Z" fill="white"/>
+</mask>
+<g mask="url(#mask2_0_12)">
+<mask id="mask3_0_12" style="mask-type:luminance" maskUnits="userSpaceOnUse" x="-42" y="-198" width="377" height="668">
+<path d="M334.41 -198H-41.03V469.785H334.41V-198Z" fill="white"/>
+</mask>
+<g mask="url(#mask3_0_12)">
+<path d="M17.035 -4.77498H-4.99V23.26H17.035V-4.77498Z" fill="white"/>
+</g>
+</g>
+</svg>

+ 9 - 0
static/svg-icons/user/privacy.svg

@@ -0,0 +1,9 @@
+<svg width="30" height="30" viewBox="0 0 30 30" fill="none" xmlns="http://www.w3.org/2000/svg">
+<path d="M24.7728 6.77882C24.4459 6.51076 24.0353 6.36588 23.6125 6.36943H23.491C23.4662 6.36943 23.1964 6.39047 22.7755 6.39047C21.638 6.39582 20.5031 6.28169 19.3895 6.04995C17.705 5.6903 15.7566 3.9963 15.1865 3.65865C14.8995 3.497 14.5753 3.41282 14.2462 3.41187C13.9172 3.41665 13.5948 3.50082 13.306 3.65865C13.2314 3.7036 11.2083 5.62621 9.22928 6.04995C8.10772 6.2807 6.96529 6.39481 5.82024 6.39047C5.37546 6.39047 5.10572 6.36943 5.08181 6.36943H4.98328C4.56011 6.36053 4.14812 6.50568 3.82398 6.77787C3.6595 6.90758 3.52642 7.07275 3.43467 7.26106C3.34292 7.44937 3.29486 7.65596 3.29407 7.86543V11.6207C3.29407 25.4578 13.5413 27.2407 13.9602 27.302C14.0578 27.3182 14.1563 27.3259 14.2548 27.323C14.3534 27.3278 14.4529 27.323 14.5514 27.3086C14.9952 27.2417 25.2941 25.4482 25.2941 11.6284V7.86543C25.2897 7.65746 25.241 7.45283 25.1511 7.26525C25.0612 7.07767 24.9322 6.91149 24.7728 6.77787V6.77882ZM20.4435 13.0555L14.2233 19.293C14.0589 19.4578 13.8381 19.554 13.6054 19.5621C13.3728 19.5703 13.1458 19.4898 12.9702 19.337L9.28763 16.1049C9.11203 15.9415 9.00687 15.7162 8.99437 15.4766C8.98188 15.2371 9.06303 15.0021 9.22068 14.8213C9.37776 14.6408 9.59949 14.5293 9.83802 14.5109C10.0766 14.4925 10.3128 14.5685 10.4957 14.7227L13.5336 17.38L19.1455 11.7566C19.257 11.6347 19.3994 11.5454 19.5577 11.4982C19.7159 11.4509 19.8839 11.4475 20.044 11.4882C20.204 11.5289 20.35 11.6123 20.4663 11.7295C20.5827 11.8467 20.665 11.9932 20.7047 12.1535C20.7455 12.3137 20.7426 12.4818 20.6964 12.6404C20.6501 12.7991 20.5621 12.9424 20.4416 13.0555H20.4435Z" fill="url(#paint0_linear_1306_4213)"/>
+<defs>
+<linearGradient id="paint0_linear_1306_4213" x1="14.2941" y1="3.41187" x2="14.2941" y2="27.3248" gradientUnits="userSpaceOnUse">
+<stop stop-color="#7BDEFF"/>
+<stop offset="1" stop-color="#0192FF"/>
+</linearGradient>
+</defs>
+</svg>

+ 9 - 0
static/svg-icons/user/purchase.svg

@@ -0,0 +1,9 @@
+<svg width="30" height="30" viewBox="0 0 30 30" fill="none" xmlns="http://www.w3.org/2000/svg">
+<path d="M25.3929 2.25H4.60714C3.62559 2.25 2.875 3.00059 2.875 3.98214V25.9226C2.875 26.9042 3.62559 27.6547 4.60714 27.6547H25.3929C26.3744 27.6547 27.125 26.9042 27.125 25.9226V3.98214C27.125 3.00059 26.3744 2.25 25.3929 2.25ZM21.9286 11.4881C21.6976 14.375 18.1179 16.6845 15 16.6845C11.8821 16.6845 8.30237 14.375 8.07143 11.4881C7.37857 11.3726 6.91666 10.7952 6.91666 10.0446C6.91666 9.2363 7.55179 8.60117 8.36013 8.60117C9.16847 8.60117 9.80357 9.2363 9.80357 10.0446C9.80357 10.5065 9.57263 10.9107 9.2262 11.1994C9.2262 13.5667 12.4595 15.5297 15 15.5297C17.5405 15.5297 20.7738 13.5667 20.7738 11.1994C20.4274 10.9107 20.1964 10.5065 20.1964 10.0446C20.1964 9.2363 20.8316 8.60117 21.6399 8.60117C22.4482 8.60117 23.0833 9.2363 23.0833 10.0446C23.0833 10.7375 22.5637 11.3149 21.9286 11.4881Z" fill="url(#paint0_linear_348_2051)"/>
+<defs>
+<linearGradient id="paint0_linear_348_2051" x1="15" y1="2.25" x2="15" y2="27.6547" gradientUnits="userSpaceOnUse">
+<stop stop-color="#7BDEFF"/>
+<stop offset="1" stop-color="#0192FF"/>
+</linearGradient>
+</defs>
+</svg>

+ 4 - 0
static/svg-icons/user/real_info.svg

@@ -0,0 +1,4 @@
+<svg width="28" height="28" viewBox="0 0 28 28" fill="none" xmlns="http://www.w3.org/2000/svg">
+<path d="M25.5993 15.1074C25.2356 15.1074 24.943 15.4 24.943 15.7637L24.9403 22.534C24.9403 23.0426 24.5247 23.4582 24.0161 23.4582H3.98403C3.47544 23.4582 3.05981 23.0426 3.05981 22.534L3.06255 15.7637C3.06255 15.4 2.76997 15.1074 2.4063 15.1074C2.04263 15.1074 1.75005 15.4 1.75005 15.7637L1.74731 22.534C1.74731 23.7672 2.75083 24.7707 3.98403 24.7707H24.0161C25.2493 24.7707 26.2528 23.7672 26.2528 22.534L26.2555 15.7637C26.2555 15.4027 25.9602 15.1074 25.5993 15.1074ZM2.40356 12.8789C2.76724 12.8789 3.05981 12.5863 3.05981 12.2227V5.46601C3.05981 4.95742 3.47544 4.54179 3.98403 4.54179H24.0161C24.5247 4.54179 24.9403 4.95742 24.9403 5.46601V12.2227C24.9403 12.5863 25.2329 12.8789 25.5965 12.8789C25.9602 12.8789 26.2528 12.5863 26.2528 12.2227V5.46601C26.2528 4.23281 25.2493 3.22929 24.0161 3.22929H3.98403C2.75083 3.22929 1.74731 4.23281 1.74731 5.46601V12.2227C1.74731 12.5836 2.03989 12.8789 2.40356 12.8789Z" fill="#222222"/>
+<path d="M11.334 19.2855H12.6465C12.6465 18.4488 13.1141 17.6449 13.9645 17.027C14.8805 16.3625 16.1055 15.9961 17.418 15.9961C18.7305 15.9961 19.9555 16.3625 20.8688 17.027C21.7192 17.6449 22.1868 18.4461 22.1868 19.2855H23.4993C23.4993 18.0168 22.8375 16.8383 21.6399 15.966C20.9918 15.493 20.2235 15.143 19.3868 14.9297C20.3985 14.2789 21.0711 13.1441 21.0711 11.8535C21.0711 9.83828 19.4333 8.20039 17.418 8.20039C15.4028 8.20039 13.7649 9.83828 13.7649 11.8535C13.7649 13.1441 14.4375 14.2789 15.4493 14.9297C14.6153 15.143 13.8469 15.493 13.1961 15.966C11.9958 16.8356 11.334 18.0168 11.334 19.2855ZM17.418 9.51016C18.7086 9.51016 19.7586 10.5602 19.7586 11.8508C19.7586 13.1414 18.7086 14.1914 17.418 14.1914C16.1274 14.1914 15.0774 13.1414 15.0774 11.8508C15.0774 10.5602 16.1247 9.51016 17.418 9.51016ZM4.11255 8.38086H9.95864V9.69336H4.11255V8.38086ZM4.11255 13.0703H9.95864V14.3828H4.11255V13.0703ZM4.11255 18.0934H9.95864V19.4059H4.11255V18.0934Z" fill="#222222"/>
+</svg>

Разница между файлами не показана из-за своего большого размера
+ 1 - 0
static/svg-icons/user/recharge.svg


+ 6 - 0
static/svg-icons/user/repaymentp.svg

@@ -0,0 +1,6 @@
+<svg width="40" height="40" viewBox="0 0 40 40" fill="none" xmlns="http://www.w3.org/2000/svg">
+<path d="M3.104 20C3.104 24.479 4.88327 28.7745 8.05038 31.9416C11.2175 35.1087 15.513 36.888 19.992 36.888C24.471 36.888 28.7665 35.1087 31.9336 31.9416C35.1007 28.7745 36.88 24.479 36.88 20C36.88 15.521 35.1007 11.2255 31.9336 8.05838C28.7665 4.89127 24.471 3.112 19.992 3.112C15.513 3.112 11.2175 4.89127 8.05038 8.05838C4.88327 11.2255 3.104 15.521 3.104 20Z" fill="#8D8DFF"/>
+<path d="M11.206 16.322C7.88397 16.322 4.93997 17.938 3.11597 20.426C3.29397 27.564 7.89597 33.602 14.286 35.896C18.318 34.596 21.236 30.816 21.236 26.35C21.234 20.812 16.744 16.322 11.206 16.322Z" fill="#A6A6FF"/>
+<path d="M28.6121 13.862L24.5261 10.076C24.2547 9.82416 23.8983 9.68415 23.5281 9.68399H14.9521C13.0601 9.68399 11.5281 11.218 11.5281 13.108V26.664C11.5281 28.556 13.0621 30.088 14.9521 30.088H25.6581C27.5501 30.088 29.0821 28.554 29.0821 26.664V14.94C29.0821 14.53 28.9121 14.14 28.6121 13.862ZM15.4661 16.698H21.0581C21.7201 16.698 22.2581 17.236 22.2581 17.898C22.2581 18.56 21.7201 19.098 21.0581 19.098H15.4661C14.8041 19.098 14.2661 18.56 14.2661 17.898C14.2661 17.236 14.8021 16.698 15.4661 16.698ZM25.1961 24.226H15.4661C14.8041 24.226 14.2661 23.688 14.2661 23.026C14.2661 22.364 14.8041 21.826 15.4661 21.826H25.1961C25.8581 21.826 26.3961 22.364 26.3961 23.026C26.3961 23.688 25.8581 24.226 25.1961 24.226Z" fill="white"/>
+<path d="M24.5259 10.076C24.2546 9.82416 23.8981 9.68415 23.5279 9.68399H23.3679V14.156C23.3679 14.81 23.8979 15.338 24.5499 15.338H29.0819V14.94C29.0819 14.532 28.9119 14.14 28.6119 13.862L24.5259 10.076Z" fill="#D7D7FF"/>
+</svg>

+ 14 - 0
static/svg-icons/user/team.svg

@@ -0,0 +1,14 @@
+<svg width="30" height="30" viewBox="0 0 30 30" fill="none" xmlns="http://www.w3.org/2000/svg">
+<path d="M17.3994 13.8692C20.6279 14.5664 24.3838 16.8369 24.3838 23.3848C24.3838 25.1309 22.2012 25.1309 15.1318 25.1309C7.97461 25.1309 5.87988 25.1309 5.87988 23.3848C5.87988 16.9248 9.63281 14.5693 12.8643 13.8692C10.333 12.4717 9.45996 9.24317 10.6816 6.62403C11.9033 4.00489 14.959 3.04396 17.3145 4.44142C19.6699 5.83888 20.6309 9.06739 19.3213 11.5986C18.8818 12.6475 18.1846 13.3447 17.3994 13.8692Z" fill="url(#paint0_linear_1306_4204)"/>
+<path d="M10.0957 13.7637C10.3711 13.6816 10.4414 13.3242 10.2129 13.1484C8.18555 11.5957 7.56445 8.70704 8.67481 6.3252C8.83887 5.97364 9.03516 5.65138 9.26074 5.36134C9.44824 5.1211 9.25488 4.77247 8.9502 4.79884C7.6377 4.91016 6.39844 5.71876 5.76562 7.0752C4.88086 8.97071 5.34961 11.2588 6.91992 12.5361C7.13672 12.7149 7.07227 13.0606 6.80273 13.1455C4.37988 13.9014 1.87207 15.9141 1.87207 20.669C1.87207 21.3984 2.32031 21.75 3.54785 21.9229C3.74414 21.9492 3.92578 21.8086 3.94629 21.6094C4.42969 16.7109 7.33008 14.5811 10.0957 13.7637ZM19.9072 13.7637C19.6318 13.6816 19.5615 13.3242 19.79 13.1484C21.8174 11.5957 22.4385 8.70704 21.3281 6.3252C21.1641 5.97364 20.9678 5.65138 20.7422 5.36134C20.5547 5.1211 20.748 4.77247 21.0527 4.79884C22.3652 4.91016 23.6045 5.71876 24.2373 7.0752C25.1221 8.97071 24.6533 11.2588 23.083 12.5361C22.8662 12.7149 22.9307 13.0606 23.2002 13.1455C25.623 13.9014 28.1309 15.9141 28.1309 20.669C28.1309 21.3984 27.6826 21.75 26.4551 21.9229C26.2588 21.9492 26.0771 21.8086 26.0566 21.6094C25.5732 16.7109 22.6729 14.5811 19.9072 13.7637Z" fill="url(#paint1_linear_1306_4204)"/>
+<defs>
+<linearGradient id="paint0_linear_1306_4204" x1="15.1318" y1="3.80084" x2="15.1318" y2="25.1309" gradientUnits="userSpaceOnUse">
+<stop stop-color="#7BDEFF"/>
+<stop offset="1" stop-color="#0192FF"/>
+</linearGradient>
+<linearGradient id="paint1_linear_1306_4204" x1="15.0015" y1="4.79742" x2="15.0015" y2="21.926" gradientUnits="userSpaceOnUse">
+<stop stop-color="#7BDEFF"/>
+<stop offset="1" stop-color="#0192FF"/>
+</linearGradient>
+</defs>
+</svg>

+ 7 - 0
static/svg-icons/user/transaction.svg

@@ -0,0 +1,7 @@
+<svg width="40" height="40" viewBox="0 0 40 40" fill="none" xmlns="http://www.w3.org/2000/svg">
+<path d="M3.29004 20.034C3.29004 24.513 5.06931 28.8085 8.23642 31.9756C11.4035 35.1427 15.6991 36.922 20.178 36.922C24.657 36.922 28.9525 35.1427 32.1197 31.9756C35.2868 28.8085 37.066 24.513 37.066 20.034C37.066 15.555 35.2868 11.2595 32.1197 8.09238C28.9525 4.92526 24.657 3.146 20.178 3.146C15.6991 3.146 11.4035 4.92526 8.23642 8.09238C5.06931 11.2595 3.29004 15.555 3.29004 20.034Z" fill="#ED5DF9"/>
+<path d="M11.39 16.356C8.06805 16.356 5.12405 17.972 3.30005 20.46C3.47805 27.598 8.08005 33.636 14.47 35.93C18.502 34.63 21.42 30.85 21.42 26.384C21.42 20.848 16.93 16.356 11.39 16.356Z" fill="#F27DFF"/>
+<path d="M13.77 18.866L11.786 26.592C11.434 27.962 12.26 29.356 13.628 29.708L23.028 32.122C24.396 32.474 25.792 31.648 26.144 30.28L29.216 18.318C26.44 18.422 19.544 18.678 13.77 18.866Z" fill="#F8CAFF"/>
+<path d="M29.6079 17.68L28.4279 11.998C28.3265 11.51 28.0846 11.0622 27.7322 10.7098C27.3797 10.3573 26.932 10.1155 26.4439 10.014L20.7619 8.83401C19.9179 8.65801 19.0419 8.92001 18.4319 9.53001L8.74194 19.218C7.74194 20.218 7.74194 21.838 8.74194 22.838L15.6039 29.7C16.6039 30.7 18.2239 30.7 19.2239 29.7L28.9119 20.012C29.5219 19.4 29.7839 18.524 29.6079 17.68Z" fill="white"/>
+<path d="M22.1699 14.47C22.1699 14.7064 22.2165 14.9405 22.3069 15.1588C22.3974 15.3772 22.53 15.5757 22.6971 15.7428C22.8643 15.91 23.0627 16.0425 23.2811 16.133C23.4995 16.2235 23.7335 16.27 23.9699 16.27C24.2063 16.27 24.4404 16.2235 24.6588 16.133C24.8771 16.0425 25.0756 15.91 25.2427 15.7428C25.4099 15.5757 25.5424 15.3772 25.6329 15.1588C25.7234 14.9405 25.7699 14.7064 25.7699 14.47C25.7699 14.2336 25.7234 13.9996 25.6329 13.7812C25.5424 13.5628 25.4099 13.3644 25.2427 13.1972C25.0756 13.0301 24.8771 12.8975 24.6588 12.807C24.4404 12.7166 24.2063 12.67 23.9699 12.67C23.7335 12.67 23.4995 12.7166 23.2811 12.807C23.0627 12.8975 22.8643 13.0301 22.6971 13.1972C22.53 13.3644 22.3974 13.5628 22.3069 13.7812C22.2165 13.9996 22.1699 14.2336 22.1699 14.47Z" fill="#F27DFF"/>
+</svg>

+ 9 - 0
static/svg-icons/user/wallet.svg

@@ -0,0 +1,9 @@
+<svg width="30" height="30" viewBox="0 0 30 30" fill="none" xmlns="http://www.w3.org/2000/svg">
+<path d="M26.4 18.9H21.675C20.625 18.9 19.8 18 19.8 16.95C19.8 15.9 20.625 15 21.675 15H26.4C26.925 15 27.375 15.45 27.375 15.975V17.925C27.375 18.45 26.925 18.9 26.4 18.9ZM21.675 15.975C21.15 15.975 20.7 16.425 20.7 16.95C20.7 17.475 21.15 17.925 21.675 17.925C22.2 17.925 22.65 17.475 22.65 16.95C22.575 16.425 22.2 15.975 21.675 15.975ZM18.825 15.975V17.925C18.825 18.975 19.65 19.875 20.7 19.875H25.5V23.775C25.5 24.825 24.675 25.725 23.625 25.725H4.57495C3.52495 25.725 2.69995 24.825 2.69995 23.775V7.27498C2.69995 5.69998 3.97495 4.34998 5.54995 4.34998H24.6C25.125 4.34998 25.575 4.79998 25.575 5.32498C25.575 5.84998 25.125 6.29998 24.6 6.29998H5.47495C4.94995 6.29998 4.49995 6.74998 4.49995 7.27498C4.49995 7.79998 4.94995 8.24998 5.47495 8.24998H23.55C24.6 8.24998 25.425 9.14998 25.425 10.2V14.1H20.7C19.65 14.025 18.825 14.925 18.825 15.975Z" fill="url(#paint0_linear_1306_4202)"/>
+<defs>
+<linearGradient id="paint0_linear_1306_4202" x1="15.0375" y1="4.34998" x2="15.0375" y2="25.725" gradientUnits="userSpaceOnUse">
+<stop stop-color="#7BDEFF"/>
+<stop offset="1" stop-color="#0192FF"/>
+</linearGradient>
+</defs>
+</svg>

Разница между файлами не показана из-за своего большого размера
+ 1 - 0
static/svg-icons/user/withdraw.svg


+ 3 - 0
static/svg-icons/vector.svg

@@ -0,0 +1,3 @@
+<svg width="26" height="26" viewBox="0 0 26 26" fill="none" xmlns="http://www.w3.org/2000/svg">
+<path d="M13 6.41016C8.56812 6.41016 4.75686 9.15847 3.24924 13.0587C4.75686 16.9589 8.56809 19.7072 13 19.7072C17.432 19.7072 21.2445 16.9589 22.7507 13.0587C21.2444 9.15844 17.432 6.41016 13 6.41016ZM13 17.4906C10.5185 17.4906 8.56812 15.5415 8.56812 13.0587C8.56812 10.5759 10.5185 8.62671 13 8.62671C15.4828 8.62671 17.432 10.5759 17.432 13.0587C17.432 15.5415 15.4828 17.4906 13 17.4906ZM13 10.3993C11.4937 10.3993 10.3406 11.5524 10.3406 13.0587C10.3406 14.5651 11.4937 15.7181 13 15.7181C14.5076 15.7181 15.6594 14.565 15.6594 13.0587C15.6594 11.5524 14.5076 10.3993 13 10.3993Z" fill="#B3B3B3"/>
+</svg>

+ 3 - 0
static/svg-icons/withdraw/arrow.svg

@@ -0,0 +1,3 @@
+<svg width="24" height="22" viewBox="0 0 24 22" fill="none" xmlns="http://www.w3.org/2000/svg">
+<path d="M8.94323 7.20825C8.87506 7.29645 8.83508 7.40368 8.83508 7.5185C8.83508 7.63333 8.87506 7.74056 8.94323 7.8294L12.7604 11.238C13.0023 11.4531 13.0023 11.8014 12.7604 12.0167L9.04317 15.3317C8.91716 15.4326 8.83758 15.5779 8.83758 15.7403C8.83758 16.0445 9.1149 16.291 9.45713 16.291C9.59666 16.291 9.72478 16.2498 9.82827 16.1806L9.95251 16.0702L14.0744 12.4059C14.5584 11.9758 14.5584 11.2786 14.0744 10.8484L9.91289 7.1486L9.87044 7.11121C9.7605 7.02237 9.61489 6.96777 9.45466 6.96777C9.24233 6.96777 9.05494 7.06298 8.94323 7.20825Z" fill="#CCCCCC"/>
+</svg>

Разница между файлами не показана из-за своего большого размера
+ 4 - 0
static/svg-icons/withdraw/constructionBank.svg


BIN
static/temp/background.png


BIN
static/temp/commit.png


BIN
static/temp/logo.png


BIN
static/temp/sign.png


+ 1 - 0
store/index.js

@@ -0,0 +1 @@
+export * from './module'

+ 22 - 0
store/module/color.js

@@ -0,0 +1,22 @@
+import {
+	defineStore
+} from 'pinia';
+import storage from "@/utils/storage.js"
+
+export const useColortore = defineStore('color', {
+	state: () => {
+		return {
+			mainRed: '#EC0000'
+		};
+	},
+	// 也可以这样定义
+	// state: () => ({ count: 0 })
+	// actions: {
+	// 	setlang(lang) {
+	// 		this.lang = lang
+	// 		storage.setCache('lang', lang)
+	// 	},
+	// },
+	// 开始数据持久化
+	persist: true,
+})

+ 5 - 0
store/module/index.js

@@ -0,0 +1,5 @@
+export * from './user'
+export * from './lang'
+export * from './project'
+export * from './weather'
+export * from './color'

+ 22 - 0
store/module/lang.js

@@ -0,0 +1,22 @@
+import {
+	defineStore
+} from 'pinia';
+import storage from "@/utils/storage.js"
+
+export const useLangStore = defineStore('language', {
+	state: () => {
+		return {
+			lang: storage.getCache('lang') || "zh_cn",
+		};
+	},
+	// 也可以这样定义
+	// state: () => ({ count: 0 })
+	actions: {
+		setlang(lang) {
+			this.lang = lang
+			storage.setCache('lang', lang)
+		},
+	},
+	// 开始数据持久化
+	persist: true,
+})

+ 36 - 0
store/module/project.js

@@ -0,0 +1,36 @@
+import {
+	defineStore
+} from 'pinia';
+import {
+	useLangStore
+} from '@/store/index.js';
+import {
+	t
+} from '@/locale'
+import storage from "@/utils/storage.js"
+
+export const useProjectStore = defineStore('project', {
+	state: () => {
+		return {
+			project: {
+				"loan_min_money": 100000,
+				"loan_max_money": 3000000,
+				"cash_min_money": 10,
+				"cash_max_money": 5000000,
+				"loan_amount": 200000,
+				"loan_person": 180121,
+				"loan_lend": 20963237,
+				"loan_trans": 710984238,
+				"loan_period":{},
+				"loan_repayment":16750,
+				"loan_sign":""
+			},
+		};
+	},
+	actions: {
+		
+
+	},
+	// 开始数据持久化
+	persist: true,
+})

+ 41 - 0
store/module/user.js

@@ -0,0 +1,41 @@
+import {
+	defineStore
+} from 'pinia';
+import storage from "@/utils/storage.js"
+
+export const useUserStore = defineStore('user', {
+	state: () => {
+		return {
+			token: storage.getCache('token') || '',
+			status: 'init',
+			userInfo: {},
+			bankcard: {},
+			notice: null
+		};
+	},
+	actions: {
+		setToken(token) {
+			storage.setCache('token', token)
+			this.token = token
+			this.status = 'logined'
+		},
+		setLogout() {
+			this.status = 'logout';
+			this.userInfo = {}
+			this.token = ''
+			storage.removeCache('token')
+		},
+		setUserInfo(data) {
+			this.userInfo = data
+		},
+		setBankcard(data) {
+			this.bankcard = data
+		},
+
+		setNotice(data) {
+			this.notice = data
+		},
+	},
+	// 开始数据持久化
+	persist: true,
+});

+ 73 - 0
store/module/weather.js

@@ -0,0 +1,73 @@
+import {
+	defineStore
+} from 'pinia';
+import storage from "@/utils/storage.js"
+
+export const useWeatherStore = defineStore('weather', {
+	state: () => {
+		return {
+			location: storage.getCache('location') || {},
+			weather: {
+				current: {},
+				after: [],
+				daily: {},
+			},
+			city:""
+		};
+	},
+	actions: {
+		setlocation(location) {
+			storage.setCache('location', location)
+			this.location = location
+		},
+		setWeather(data) {
+			const combinedData = data.hourly.time.map((time, index) => ({
+				time,
+				temperature: fixed(data.hourly.temperature_2m[index]),
+				weathercode: data.hourly.weather_code[index]
+			}))
+
+			// 当前天气
+			this.weather.current = {
+				time: data.current.time,
+				temperature: fixed(data.current.temperature_2m),
+				weathercode: data.current.weather_code
+			}
+
+			// 接下来的天气
+			const givenTime = data.current.time
+			const filteredArray = combinedData.filter(obj => obj.time > givenTime).slice(0, 4);
+			const formattedArray = filteredArray.map(obj => ({
+				...obj,
+				time: formatTime(obj.time)
+			}));
+			this.weather.after = formattedArray
+
+			// 整日天气
+			const tempDaily = combinedData.slice(0, 24).sort((a, b) => a.temperature - b.temperature)
+			this.weather.daily = {
+				des: data.daily.weather_code[0],
+				lowTemp: tempDaily[0].temperature,
+				highTemp: tempDaily[23].temperature
+			}
+		},
+	},
+	// 开始数据持久化
+	persist: true,
+})
+
+export function getLocalState() {
+	const localSetting = storage.getCache('location')
+	return localSetting
+}
+
+export function fixed(num) {
+	return num.toFixed()
+}
+
+export function formatTime(time) {
+	const date = new Date(time);
+	const hours = String(date.getHours()).padStart(2, '0');
+	const minutes = String(date.getMinutes()).padStart(2, '0');
+	return `${hours}:${minutes}`;
+};

+ 24 - 0
svgo.config.js

@@ -0,0 +1,24 @@
+// svgo.config.js
+module.exports = {
+  multipass: true, // boolean. false by default
+  datauri: 'enc', // 'base64' (default), 'enc' or 'unenc'.
+  js2svg: {
+    indent: 2, // string with spaces or number of spaces. 4 by default
+    pretty: true, // boolean, false by default
+  },
+  plugins: [
+    // set of built-in plugins enabled by default
+    'preset-default',
+
+    // enable built-in plugins by name
+    'prefixIds',
+
+    // or by expanded notation which allows to configure plugin
+    {
+      name: 'sortAttrs',
+      params: {
+        xmlnsOrder: 'alphabetical',
+      },
+    },
+  ],
+}

+ 10 - 0
uni.promisify.adaptor.js

@@ -0,0 +1,10 @@
+uni.addInterceptor({
+  returnValue (res) {
+    if (!(!!res && (typeof res === "object" || typeof res === "function") && typeof res.then === "function")) {
+      return res;
+    }
+    return new Promise((resolve, reject) => {
+      res.then((res) => res[0] ? reject(res[0]) : resolve(res[1]));
+    });
+  },
+});

+ 78 - 0
uni.scss

@@ -0,0 +1,78 @@
+/**
+ * 这里是uni-app内置的常用样式变量
+ *
+ * uni-app 官方扩展插件及插件市场(https://ext.dcloud.net.cn)上很多三方插件均使用了这些样式变量
+ * 如果你是插件开发者,建议你使用scss预处理,并在插件代码中直接使用这些变量(无需 import 这个文件),方便用户通过搭积木的方式开发整体风格一致的App
+ *
+ */
+
+/**
+ * 如果你是App开发者(插件使用者),你可以通过修改这些变量来定制自己的插件主题,实现自定义主题功能
+ *
+ * 如果你的项目同样使用了scss预处理,你也可以直接在你的 scss 代码中使用如下变量,同时无需 import 这个文件
+ */
+
+/* 颜色变量 */
+
+$mainRed: #EC0000;
+
+/* 行为相关颜色 */
+$uni-color-primary: #007aff;
+$uni-color-success: #4cd964;
+$uni-color-warning: #f0ad4e;
+$uni-color-error: #dd524d;
+
+/* 文字基本颜色 */
+$uni-text-color:#333;//基本色
+$uni-text-color-inverse:#fff;//反色
+$uni-text-color-grey:#999;//辅助灰色,如加载更多的提示信息
+$uni-text-color-placeholder: #808080;
+$uni-text-color-disable:#c0c0c0;
+
+/* 背景颜色 */
+$uni-bg-color:#ffffff;
+$uni-bg-color-grey:#f8f8f8;
+$uni-bg-color-hover:#f1f1f1;//点击状态颜色
+$uni-bg-color-mask:rgba(0, 0, 0, 0.4);//遮罩颜色
+
+/* 边框颜色 */
+$uni-border-color:#c8c7cc;
+
+/* 尺寸变量 */
+
+/* 文字尺寸 */
+$uni-font-size-sm:12px;
+$uni-font-size-base:14px;
+$uni-font-size-lg:16;
+
+/* 图片尺寸 */
+$uni-img-size-sm:20px;
+$uni-img-size-base:26px;
+$uni-img-size-lg:40px;
+
+/* Border Radius */
+$uni-border-radius-sm: 2px;
+$uni-border-radius-base: 3px;
+$uni-border-radius-lg: 6px;
+$uni-border-radius-circle: 50%;
+
+/* 水平间距 */
+$uni-spacing-row-sm: 5px;
+$uni-spacing-row-base: 10px;
+$uni-spacing-row-lg: 15px;
+
+/* 垂直间距 */
+$uni-spacing-col-sm: 4px;
+$uni-spacing-col-base: 8px;
+$uni-spacing-col-lg: 12px;
+
+/* 透明度 */
+$uni-opacity-disabled: 0.3; // 组件禁用态的透明度
+
+/* 文章场景相关 */
+$uni-color-title: #2C405A; // 文章标题颜色
+$uni-font-size-title:20px;
+$uni-color-subtitle: #555555; // 二级标题颜色
+$uni-font-size-subtitle:26px;
+$uni-color-paragraph: #3F536E; // 文章段落颜色
+$uni-font-size-paragraph:15px;

+ 8 - 0
uni_modules/cc-defineKeyboard/changelog.md

@@ -0,0 +1,8 @@
+## 2.0(2023-08-03)
+修复小程序bug
+## 1.0.2(2023-06-21)
+组件优化 增加键盘高度
+## 1.0.1(2023-06-21)
+组件优化
+## 1.0.0(2023-06-21)
+组件初始化

+ 54 - 0
uni_modules/cc-defineKeyboard/components/cc-defineKeyboard/cc-defineKeyboard.scss

@@ -0,0 +1,54 @@
+.page-total{
+	position: fixed;
+	left: 0;
+	bottom: 0;
+	width: 100%;
+	background-color: #f6f6f6;
+}
+    .hint {
+        display: flex;
+        align-items: center;
+        justify-content: center;
+        width: 100%;
+        height: 100rpx;
+
+        text {
+            font-size: 28rpx;
+            color: #222222;
+        }
+    }
+.key-list{
+	display: flex;
+	flex-wrap: wrap;
+	align-items: center;
+	padding: 1% 3%;
+	height: 90%;
+	margin-top: 20rpx;
+	.list{
+		display: flex;
+		align-items: center;
+		justify-content: center;
+		width: 32%;
+		height: 92rpx;
+		background-color: #FFFFFF;
+		border-radius: 10rpx;
+		box-shadow: 0 0 10rpx rgba(0,0,0,0.1);
+		margin-right: 1.7%;
+		margin-bottom: 16rpx;
+		text{
+			font-size: 38rpx;
+			font-weight: bold;
+			color: #222222;
+		}
+	}
+	.list:nth-child(3n){
+		margin-right: 0;
+	}
+	.special{
+		background-color: #f6f6f6;
+		box-shadow: none;
+		text{
+			color: #959595;
+		}
+	}
+}

+ 117 - 0
uni_modules/cc-defineKeyboard/components/cc-defineKeyboard/cc-defineKeyboard.vue

@@ -0,0 +1,117 @@
+<template>
+	<view class="page-total">
+		<view class="key-list">
+			<view class="list" v-for="(item,index) in keyList" 
+			:class="{'special':item.keyCode==190||item.keyCode==8}"
+			@click="onKeyList(item,index)"
+			:key="item.keyCode">
+				<text>{{item.key}}</text>
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+	export default {
+		data() {
+			return {
+				isShow: false,
+				keyList: [
+					{
+						key: 1,
+						en: '',
+						keyCode: 49,
+					},{
+						key: 2,
+						en: 'ABC',
+						keyCode: 50,
+					},{
+						key: 3,
+						en: 'ABC',
+						keyCode: 51,
+					},{
+						key: 4,
+						en: 'ABC',
+						keyCode: 52,
+					},{
+						key: 5,
+						en: 'ABC',
+						keyCode: 53,
+					},{
+						key: 6,
+						en: 'ABC',
+						keyCode: 54,
+					},{
+						key: 7,
+						en: 'ABC',
+						keyCode: 55,
+					},{
+						key: 8,
+						en: 'ABC',
+						keyCode: 56,
+					},{
+						key: 9,
+						en: 'ABC',
+						keyCode: 57,
+					},{
+						key: '.',
+						en: 'ABC',
+						keyCode: 190,
+					},{
+						key: 0,
+						en: 'ABC',
+						keyCode: 48,
+					},{
+						key: 'del',
+						en: 'DEL',
+						keyCode: 8,
+					},
+				],
+				keyIndex: -1,
+			};
+		},
+		props:{
+			passwrdType: {
+				type: String,
+				default: 'pay'
+			}
+		},
+		methods:{
+			show(){
+				this.isShow = true;
+				this.keyIndex = -1;
+			},
+			hide(){
+				this.isShow = false;
+				this.keyIndex = -1
+			},
+			/**
+			 * 密码键盘按下
+			 * @param {Object} item
+			 * @param {Number} index
+			 */
+			onKeyList(item,index){
+				let KeyInfo = item;	
+				// 删除键
+				if(KeyInfo.keyCode === 8 && this.keyIndex > -1){
+					this.keyIndex--;
+				}
+				// 不是删除键
+				if(KeyInfo.keyCode != 8){
+					if(this.passwrdType == 'pay' && this.keyIndex >= 5){
+						console.log('支付键盘');
+						this.keyIndex = -1;
+						return;
+					}
+					this.keyIndex++;
+				}
+				KeyInfo.index = this.keyIndex;
+				this.$emit('KeyInfo',KeyInfo);
+			}
+		}
+	}
+</script>
+
+<style scoped lang="scss">
+	@import 'cc-defineKeyboard.scss';
+</style>

+ 87 - 0
uni_modules/cc-defineKeyboard/package.json

@@ -0,0 +1,87 @@
+{
+  "id": "cc-defineKeyboard",
+  "displayName": "自定义支付密码输入键盘Keyboard和支付设置输入框Input",
+  "version": "2.0",
+  "description": "自定义支付密码输入键盘Keyboard和支付设置输入框Input",
+  "keywords": [
+    "支付密码",
+    "键盘",
+    "",
+    "支付密码输入键盘",
+    "Keyboard",
+    "",
+    "自定义键盘"
+],
+  "repository": "",
+  "engines": {
+    "HBuilderX": "^3.7.0"
+  },
+  "dcloudext": {
+    "type": "component-vue",
+    "sale": {
+      "regular": {
+        "price": "0.00"
+      },
+      "sourcecode": {
+        "price": "0.00"
+      }
+    },
+    "contact": {
+      "qq": ""
+    },
+    "declaration": {
+      "ads": "无",
+      "data": "无",
+      "permissions": "无"
+    },
+    "npmurl": ""
+  },
+  "uni_modules": {
+    "dependencies": [],
+    "encrypt": [],
+    "platforms": {
+      "cloud": {
+        "tcb": "y",
+        "aliyun": "y"
+      },
+      "client": {
+        "Vue": {
+          "vue2": "y",
+          "vue3": "y"
+        },
+        "App": {
+          "app-vue": "y",
+          "app-nvue": "y"
+        },
+        "H5-mobile": {
+          "Safari": "y",
+          "Android Browser": "y",
+          "微信浏览器(Android)": "y",
+          "QQ浏览器(Android)": "y"
+        },
+        "H5-pc": {
+          "Chrome": "y",
+          "IE": "y",
+          "Edge": "y",
+          "Firefox": "y",
+          "Safari": "y"
+        },
+        "小程序": {
+          "微信": "y",
+          "阿里": "y",
+          "百度": "y",
+          "字节跳动": "y",
+          "QQ": "y",
+          "钉钉": "y",
+          "快手": "y",
+          "飞书": "y",
+          "京东": "y"
+        },
+        "快应用": {
+          "华为": "y",
+          "联盟": "y"
+        }
+      }
+    }
+  }
+}

+ 232 - 0
uni_modules/cc-defineKeyboard/readme.md

@@ -0,0 +1,232 @@
+# cc-defineKeyboard
+
+
+#### 使用方法 
+```使用方法	
+<!-- ref:唯一ref  passwrdType:密码样式pay keyInfo:密码输入监测事件 -->
+<cc-defineKeyboard ref="CodeKeyboard" passwrdType="pay" @KeyInfo="KeyInfo"></cc-defineKeyboard>
+						
+/** * 唤起键盘 */
+onPayUp() {
+	this.$refs.CodeKeyboard.show();
+},
+
+/*** 支付键盘回调* @param {Object} val */
+
+KeyInfo(val) {
+
+				if (val.index >= 6) {
+					return;
+				}
+				// 判断是否输入的是删除键
+				if (val.keyCode === 8) {
+					// 删除最后一位
+					this.passwordArr.splice(val.index + 1, 1)
+				}
+				// 判断是否输入的是.
+				else if (val.keyCode == 190) {
+					// 输入.无效
+				} else {
+					this.passwordArr.push(val.key);
+				}
+
+				uni.showModal({
+					title: '温馨提示',
+					content: '输入密码是 = ' + JSON.stringify(this.passwordArr)
+				})
+}
+
+
+```
+
+#### HTML代码实现部分
+```html
+
+<template>
+	<view class="page">
+		<view>
+			<view class="pay-title">
+				<text v-show="AffirmStatus === 1">请输入6位支付密码</text>
+				<text v-show="AffirmStatus === 2">请设置6位支付密码</text>
+				<text v-show="AffirmStatus === 3">请确认6位支付密码</text>
+			</view>
+			<view class="pay-password" @click="onPayUp">
+				<view class="list">
+					<text v-show="passwordArr.length >= 1">●</text>
+				</view>
+				<view class="list">
+					<text v-show="passwordArr.length >= 2">●</text>
+				</view>
+				<view class="list">
+					<text v-show="passwordArr.length >= 3">●</text>
+				</view>
+				<view class="list">
+					<text v-show="passwordArr.length >= 4">●</text>
+				</view>
+				<view class="list">
+					<text v-show="passwordArr.length >= 5">●</text>
+				</view>
+				<view class="list">
+					<text v-show="passwordArr.length >= 6">●</text>
+				</view>
+			</view>
+			<view class="hint">
+				<text>忘记支付密码?</text>
+			</view>
+		</view>
+		<!-- ref:唯一ref  passwrdType:密码样式pay keyInfo:密码输入返回事件 -->
+		<cc-defineKeyboard ref="CodeKeyboard" passwrdType="pay" @KeyInfo="KeyInfo"></cc-defineKeyboard>
+	
+	</view>
+</template>
+
+<script>
+	export default {
+		components: {
+
+		},
+		data() {
+			return {
+				AffirmStatus: 1,
+				passwordArr: [],
+				oldPasswordArr: [],
+				newPasswordArr: [],
+				afPasswordArr: [],
+			};
+		},
+		onLoad() {
+
+		},
+		methods: {
+			/**
+			 * 唤起键盘
+			 */
+			onPayUp() {
+				this.$refs.CodeKeyboard.show();
+			},
+			/**
+			 * 支付键盘回调
+			 * @param {Object} val
+			 */
+			KeyInfo(val) {
+
+
+				if (val.index >= 6) {
+					return;
+				}
+				// 判断是否输入的是删除键
+				if (val.keyCode === 8) {
+					// 删除最后一位
+					this.passwordArr.splice(val.index + 1, 1)
+				}
+				// 判断是否输入的是.
+				else if (val.keyCode == 190) {
+					// 输入.无效
+				} else {
+					this.passwordArr.push(val.key);
+				}
+
+				uni.showModal({
+					title: '温馨提示',
+					content: '输入密码是 = ' + JSON.stringify(this.passwordArr)
+				})
+
+
+				// 判断是否等于6
+				if (this.passwordArr.length === 6) {
+					this.passwordArr = [];
+					this.AffirmStatus = this.AffirmStatus + 1;
+				}
+				// 判断到哪一步了
+				if (this.AffirmStatus === 1) {
+					this.oldPasswordArr = this.passwordArr;
+				} else if (this.AffirmStatus === 2) {
+					this.newPasswordArr = this.passwordArr;
+				} else if (this.AffirmStatus === 3) {
+					this.afPasswordArr = this.passwordArr;
+				} else if (this.AffirmStatus === 4) {
+					console.log(this.oldPasswordArr.join(''));
+					console.log(this.newPasswordArr.join(''));
+					console.log(this.afPasswordArr.join(''));
+					uni.showToast({
+						title: '修改成功',
+						icon: 'none'
+					})
+					setTimeout(() => {
+						uni.navigateBack();
+					}, 2000)
+				}
+				this.$forceUpdate();
+			}
+
+		}
+	}
+</script>
+
+<style scoped lang="scss">
+	$base: orangered; // 基础颜色
+
+	.page {
+		position: absolute;
+		left: 0;
+		top: 0;
+		width: 100%;
+		height: 100%;
+		background-color: #FFFFFF;
+	}
+
+	.pay-title {
+		display: flex;
+		align-items: center;
+		justify-content: center;
+		width: 100%;
+		height: 200rpx;
+
+		text {
+			font-size: 28rpx;
+			color: #555555;
+		}
+	}
+
+	.pay-password {
+		display: flex;
+		align-items: center;
+		width: 90%;
+		height: 80rpx;
+		margin: 20rpx auto;
+		border: 2rpx solid $base;
+
+		.list {
+			display: flex;
+			align-items: center;
+			justify-content: center;
+			width: 16.666%;
+			height: 100%;
+			border-right: 2rpx solid #EEEEEE;
+
+			text {
+				font-size: 32rpx;
+			}
+		}
+
+		.list:nth-child(6) {
+			border-right: none;
+		}
+	}
+
+	.hint {
+		display: flex;
+		align-items: center;
+		justify-content: center;
+		width: 100%;
+		height: 100rpx;
+
+		text {
+			font-size: 28rpx;
+			color: $base;
+		}
+	}
+</style>
+
+
+```

+ 7 - 0
uni_modules/uv-action-sheet/changelog.md

@@ -0,0 +1,7 @@
+## 1.0.2(2023-07-02)
+uv-action-sheet  由于弹出层uv-popup的修改,打开和关闭方法更改,详情参考文档:https://www.uvui.cn/components/actionSheet.html
+## 1.0.1(2023-05-16)
+1. 优化组件依赖,修改后无需全局引入,组件导入即可使用
+2. 优化部分功能
+## 1.0.0(2023-05-10)
+uv-action-sheet 底部操作菜单

+ 50 - 0
uni_modules/uv-action-sheet/components/uv-action-sheet/props.js

@@ -0,0 +1,50 @@
+export default {
+	props: {
+		// 标题,有值则显示,同时会显示关闭按钮
+		title: {
+			type: String,
+			default: ''
+		},
+		// 选项上方的描述信息
+		description: {
+			type: String,
+			default: ''
+		},
+		// 数据
+		actions: {
+			type: Array,
+			default: () => []
+		},
+		// 取消按钮的文字,不为空时显示按钮
+		cancelText: {
+			type: String,
+			default: ''
+		},
+		// 点击某个菜单项时是否关闭弹窗
+		closeOnClickAction: {
+			type: Boolean,
+			default: true
+		},
+		// 处理底部安全区(默认true)
+		safeAreaInsetBottom: {
+			type: Boolean,
+			default: true
+		},
+		// 小程序的打开方式
+		openType: {
+			type: String,
+			default: ''
+		},
+		// 点击遮罩是否允许关闭 (默认true)
+		closeOnClickOverlay: {
+			type: Boolean,
+			default: true
+		},
+		// 圆角值
+		round: {
+			type: [Boolean, String, Number],
+			default: 0
+		},
+		...uni.$uv?.props?.actionSheet
+	}
+}

+ 280 - 0
uni_modules/uv-action-sheet/components/uv-action-sheet/uv-action-sheet.vue

@@ -0,0 +1,280 @@
+
+<template>
+	<uv-popup
+	  ref="popup"
+	  mode="bottom"
+	  :safeAreaInsetBottom="safeAreaInsetBottom"
+	  :round="round"
+		:close-on-click-overlay="closeOnClickOverlay"
+		@change="popupChange"
+	>
+		<view class="uv-action-sheet">
+			<view
+			  class="uv-action-sheet__header"
+			  v-if="title"
+			>
+				<text class="uv-action-sheet__header__title uv-line-1">{{title}}</text>
+				<view
+				  class="uv-action-sheet__header__icon-wrap"
+				  @tap.stop="cancel"
+				>
+					<uv-icon
+					  name="close"
+					  size="17"
+					  color="#c8c9cc"
+					  bold
+					></uv-icon>
+				</view>
+			</view>
+			<text
+			  class="uv-action-sheet__description"
+				:style="[{
+					marginTop: `${title && description ? 0 : '18px'}`
+				}]"
+			  v-if="description"
+			>{{description}}</text>
+			<slot>
+				<uv-line v-if="description"></uv-line>
+				<view class="uv-action-sheet__item-wrap">
+					<view v-for="(item, index) in actions" :key="index">
+						<!-- #ifdef MP -->
+						<button
+						  class="uv-reset-button"
+						  :openType="item.openType"
+						  @getuserinfo="onGetUserInfo"
+						  @contact="onContact"
+						  @getphonenumber="onGetPhoneNumber"
+						  @error="onError"
+						  @launchapp="onLaunchApp"
+						  @opensetting="onOpenSetting"
+						  :lang="lang"
+						  :session-from="sessionFrom"
+						  :send-message-title="sendMessageTitle"
+						  :send-message-path="sendMessagePath"
+						  :send-message-img="sendMessageImg"
+						  :show-message-card="showMessageCard"
+						  :app-parameter="appParameter"
+						  @tap="selectHandler(index)"
+						  :hover-class="!item.disabled && !item.loading ? 'uv-action-sheet--hover' : ''"
+						>
+							<!-- #endif -->
+							<view
+							  class="uv-action-sheet__item-wrap__item"
+							  @tap.stop="selectHandler(index)"
+							  :hover-class="!item.disabled && !item.loading ? 'uv-action-sheet--hover' : ''"
+							  :hover-stay-time="150"
+							>
+								<template v-if="!item.loading">
+									<text
+									  class="uv-action-sheet__item-wrap__item__name"
+									  :style="[itemStyle(index)]"
+									>{{ item.name }}</text>
+									<text
+									  v-if="item.subname"
+									  class="uv-action-sheet__item-wrap__item__subname"
+									>{{ item.subname }}</text>
+								</template>
+								<uv-loading-icon
+								  v-else
+								  custom-class="van-action-sheet__loading"
+								  size="18"
+								  mode="circle"
+								/>
+							</view>
+							<!-- #ifdef MP -->
+						</button>
+						<!-- #endif -->
+						<uv-line v-if="index !== actions.length - 1"></uv-line>
+					</view>
+				</view>
+			</slot>
+			<uv-gap
+			  bgColor="#eaeaec"
+			  height="6"
+			  v-if="cancelText"
+			></uv-gap>
+			<view hover-class="uv-action-sheet--hover">
+				<text
+				  @touchmove.stop.prevent
+				  :hover-stay-time="150"
+				  v-if="cancelText"
+				  class="uv-action-sheet__cancel-text"
+				  @tap="cancel"
+				>{{cancelText}}</text>
+			</view>
+		</view>
+	</uv-popup>
+</template>
+
+<script>
+	import mpMixin from '@/uni_modules/uv-ui-tools/libs/mixin/mpMixin.js'
+	import mixin from '@/uni_modules/uv-ui-tools/libs/mixin/mixin.js'
+	import button from '@/uni_modules/uv-ui-tools/libs/mixin/button.js'
+	import openType from '@/uni_modules/uv-ui-tools/libs/mixin/openType.js'
+	import props from './props.js';
+	/**
+	 * ActionSheet 操作菜单
+	 * @description 本组件用于从底部弹出一个操作菜单,供用户选择并返回结果。本组件功能类似于uni的uni.showActionSheetAPI,配置更加灵活,所有平台都表现一致。
+	 * @tutorial https://www.uvui.cn/components/actionSheet.html
+	 * @property {Boolean}			show				操作菜单是否展示 (默认 false )
+	 * @property {String}			title				操作菜单标题
+	 * @property {String}			description			选项上方的描述信息
+	 * @property {Array<Object>}	actions				按钮的文字数组,见官方文档示例
+	 * @property {String}			cancelText			取消按钮的提示文字,不为空时显示按钮
+	 * @property {Boolean}			closeOnClickAction	点击某个菜单项时是否关闭弹窗 (默认 true )
+	 * @property {Boolean}			safeAreaInsetBottom	处理底部安全区 (默认 true )
+	 * @property {String}			openType			小程序的打开方式 (contact | launchApp | getUserInfo | openSetting |getPhoneNumber |error )
+	 * @property {Boolean}			closeOnClickOverlay	点击遮罩是否允许关闭  (默认 true )
+	 * @property {String}			lang				指定返回用户信息的语言,zh_CN 简体中文,zh_TW 繁体中文,en 英文
+	 * @property {String}			sessionFrom			会话来源,openType="contact"时有效
+	 * @property {String}			sendMessageTitle	会话内消息卡片标题,openType="contact"时有效
+	 * @property {String}			sendMessagePath		会话内消息卡片点击跳转小程序路径,openType="contact"时有效
+	 * @property {String}			sendMessageImg		会话内消息卡片图片,openType="contact"时有效
+	 * @property {Boolean}			showMessageCard		是否显示会话内消息卡片,设置此参数为 true,用户进入客服会话会在右下角显示"可能要发送的小程序"提示,用户点击后可以快速发送小程序消息,openType="contact"时有效 (默认 false )
+	 * @property {String}			appParameter		打开 APP 时,向 APP 传递的参数,openType=launchApp 时有效
+	 * 
+	 * @event {Function} select			点击ActionSheet列表项时触发 
+	 * @event {Function} close			点击取消按钮时触发
+	 * @event {Function} getuserinfo	用户点击该按钮时,会返回获取到的用户信息,回调的 detail 数据与 wx.getUserInfo 返回的一致,openType="getUserInfo"时有效
+	 * @event {Function} contact		客服消息回调,openType="contact"时有效
+	 * @event {Function} getphonenumber	获取用户手机号回调,openType="getPhoneNumber"时有效
+	 * @event {Function} error			当使用开放能力时,发生错误的回调,openType="error"时有效
+	 * @event {Function} launchapp		打开 APP 成功的回调,openType="launchApp"时有效
+	 * @event {Function} opensetting	在打开授权设置页后回调,openType="openSetting"时有效
+	 * @example <uv-action-sheet ref="actionSheet" :actions="list" :title="title" ></uv-action-sheet>
+	 */
+	export default {
+		name: "uv-action-sheet",
+		mixins: [openType, button, mpMixin , mixin, props],
+		emits: ['close', 'select'],
+		computed: {
+			// 操作项目的样式
+			itemStyle() {
+				return (index) => {
+					let style = {};
+					if (this.actions[index].color) style.color = this.actions[index].color
+					if (this.actions[index].fontSize) style.fontSize = this.$uv.addUnit(this.actions[index].fontSize)
+					// 选项被禁用的样式
+					if (this.actions[index].disabled) style.color = '#c0c4cc'
+					return style;
+				}
+			},
+		},
+		methods: {
+			open() {
+				this.$refs.popup.open();
+			},
+			close() {
+				this.$refs.popup.close();
+			},
+			popupChange(e) {
+				if(!e.show) this.$emit('close');
+			},
+			// 点击取消按钮
+			cancel() {
+				this.close();
+			},
+			selectHandler(index) {
+				const item = this.actions[index]
+				if (item && !item.disabled && !item.loading) {
+					this.$emit('select', item)
+					if (this.closeOnClickAction) {
+						this.close();
+					}
+				}
+			},
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+	$show-lines: 1;
+	$show-reset-button: 1;
+	@import '@/uni_modules/uv-ui-tools/libs/css/variable.scss';
+	@import '@/uni_modules/uv-ui-tools/libs/css/components.scss';
+	@import '@/uni_modules/uv-ui-tools/libs/css/color.scss';
+	$uv-action-sheet-reset-button-width:100% !default;
+	$uv-action-sheet-title-font-size: 16px !default;
+	$uv-action-sheet-title-padding: 12px 30px !default;
+	$uv-action-sheet-title-color: $uv-main-color !default;
+	$uv-action-sheet-header-icon-wrap-right:15px !default;
+	$uv-action-sheet-header-icon-wrap-top:15px !default;
+	$uv-action-sheet-description-font-size:13px !default;
+	$uv-action-sheet-description-color:14px !default;
+	$uv-action-sheet-description-margin: 18px 15px !default;
+	$uv-action-sheet-item-wrap-item-padding:15px !default;
+	$uv-action-sheet-item-wrap-name-font-size:16px !default;
+	$uv-action-sheet-item-wrap-subname-font-size:13px !default;
+	$uv-action-sheet-item-wrap-subname-color: #c0c4cc !default;
+	$uv-action-sheet-item-wrap-subname-margin-top:10px !default;
+	$uv-action-sheet-cancel-text-font-size:16px !default;
+	$uv-action-sheet-cancel-text-color:$uv-content-color !default;
+	$uv-action-sheet-cancel-text-font-size:15px !default;
+	$uv-action-sheet-cancel-text-hover-background-color:rgb(242, 243, 245) !default;
+
+	.uv-reset-button {
+		width: $uv-action-sheet-reset-button-width;
+	}
+
+	.uv-action-sheet {
+		text-align: center;
+		&__header {
+			position: relative;
+			padding: $uv-action-sheet-title-padding;
+			&__title {
+				font-size: $uv-action-sheet-title-font-size;
+				color: $uv-action-sheet-title-color;
+				font-weight: bold;
+				text-align: center;
+			}
+
+			&__icon-wrap {
+				position: absolute;
+				right: $uv-action-sheet-header-icon-wrap-right;
+				top: $uv-action-sheet-header-icon-wrap-top;
+			}
+		}
+
+		&__description {
+			font-size: $uv-action-sheet-description-font-size;
+			color: $uv-tips-color;
+			margin: $uv-action-sheet-description-margin;
+			text-align: center;
+		}
+
+		&__item-wrap {
+
+			&__item {
+				padding: $uv-action-sheet-item-wrap-item-padding;
+				@include flex;
+				align-items: center;
+				justify-content: center;
+				flex-direction: column;
+
+				&__name {
+					font-size: $uv-action-sheet-item-wrap-name-font-size;
+					color: $uv-main-color;
+					text-align: center;
+				}
+
+				&__subname {
+					font-size: $uv-action-sheet-item-wrap-subname-font-size;
+					color: $uv-action-sheet-item-wrap-subname-color;
+					margin-top: $uv-action-sheet-item-wrap-subname-margin-top;
+					text-align: center;
+				}
+			}
+		}
+
+		&__cancel-text {
+			font-size: $uv-action-sheet-cancel-text-font-size;
+			color: $uv-action-sheet-cancel-text-color;
+			text-align: center;
+			padding: $uv-action-sheet-cancel-text-font-size;
+		}
+
+		&--hover {
+			background-color: $uv-action-sheet-cancel-text-hover-background-color;
+		}
+	}
+</style>

+ 92 - 0
uni_modules/uv-action-sheet/package.json

@@ -0,0 +1,92 @@
+{
+  "id": "uv-action-sheet",
+  "displayName": "uv-action-sheet 底部操作菜单 全面兼容小程序、nvue、vue2、vue3等多端",
+  "version": "1.0.2",
+  "description": "该组件用于从底部弹出一个操作菜单,供用户选择并返回结果。本组件功能类似于uni的uni.showActionSheet API,配置更加灵活,所有平台都表现一致。",
+  "keywords": [
+    "action-sheet",
+    "uvui",
+    "uv-ui",
+    "操作菜单",
+    "菜单选择"
+],
+  "repository": "",
+  "engines": {
+    "HBuilderX": "^3.1.0"
+  },
+  "dcloudext": {
+    "type": "component-vue",
+    "sale": {
+      "regular": {
+        "price": "0.00"
+      },
+      "sourcecode": {
+        "price": "0.00"
+      }
+    },
+    "contact": {
+      "qq": ""
+    },
+    "declaration": {
+      "ads": "无",
+      "data": "插件不采集任何数据",
+      "permissions": "无"
+    },
+    "npmurl": ""
+  },
+  "uni_modules": {
+    "dependencies": [
+			"uv-ui-tools",
+			"uv-popup",
+			"uv-icon",
+			"uv-line",
+			"uv-loading-icon",
+			"uv-gap"
+		],
+    "encrypt": [],
+    "platforms": {
+      "cloud": {
+        "tcb": "y",
+        "aliyun": "y"
+      },
+      "client": {
+        "Vue": {
+          "vue2": "y",
+          "vue3": "y"
+        },
+        "App": {
+          "app-vue": "y",
+          "app-nvue": "y"
+        },
+        "H5-mobile": {
+          "Safari": "y",
+          "Android Browser": "y",
+          "微信浏览器(Android)": "y",
+          "QQ浏览器(Android)": "y"
+        },
+        "H5-pc": {
+          "Chrome": "y",
+          "IE": "y",
+          "Edge": "y",
+          "Firefox": "y",
+          "Safari": "y"
+        },
+        "小程序": {
+          "微信": "y",
+          "阿里": "y",
+          "百度": "y",
+          "字节跳动": "y",
+          "QQ": "y",
+          "钉钉": "u",
+          "快手": "u",
+          "飞书": "u",
+          "京东": "u"
+        },
+        "快应用": {
+          "华为": "u",
+          "联盟": "u"
+        }
+      }
+    }
+  }
+}

Некоторые файлы не были показаны из-за большого количества измененных файлов