Compare commits
13 Commits
master
...
feature-sa
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
e7d8474d0f | ||
|
|
347bb325ca | ||
|
|
dd79e7d8f3 | ||
|
|
a63af86c8a | ||
|
|
c4d08818e3 | ||
|
|
3546ef9958 | ||
|
|
5b3bc02a6e | ||
|
|
e38a67e782 | ||
|
|
bfbec3a56e | ||
|
|
70a3efb430 | ||
|
|
98756790af | ||
|
|
55f495f930 | ||
|
|
956e402ad3 |
@@ -117,6 +117,7 @@
|
|||||||
<div class="loading-wrap">
|
<div class="loading-wrap">
|
||||||
<span class="dot dot-spin"><i></i><i></i><i></i><i></i></span>
|
<span class="dot dot-spin"><i></i><i></i><i></i><i></i></span>
|
||||||
</div>
|
</div>
|
||||||
|
网络检测中...
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<script type="module" src="/src/main.ts"></script>
|
<script type="module" src="/src/main.ts"></script>
|
||||||
|
|||||||
16109
package-lock.json
generated
16109
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
29
package.json
29
package.json
@@ -39,25 +39,14 @@
|
|||||||
"weixin-js-sdk": "^1.6.0"
|
"weixin-js-sdk": "^1.6.0"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@types/node": "^18.15.5",
|
|
||||||
"@vitejs/plugin-vue": "^4.1.0",
|
|
||||||
"fs-extra": "^11.0.0",
|
|
||||||
"postcss": "^8.3.8",
|
|
||||||
"postcss-loader": "^6.1.1",
|
|
||||||
"postcss-px-to-viewport-8-plugin": "^1.2.1",
|
|
||||||
"sass": "^1.59.3",
|
|
||||||
"typescript": "^4.9.3",
|
|
||||||
"unplugin-vue-components": "^0.24.1",
|
|
||||||
"vite": "^4.2.3",
|
|
||||||
"vue-router": "^4.1.6",
|
|
||||||
"vue-tsc": "^1.2.0",
|
|
||||||
"vue-types": "^4.2.1",
|
|
||||||
"@commitlint/cli": "^17.3.0",
|
"@commitlint/cli": "^17.3.0",
|
||||||
"@commitlint/config-conventional": "^17.3.0",
|
"@commitlint/config-conventional": "^17.3.0",
|
||||||
"@eslint/create-config": "^0.4.1",
|
"@eslint/create-config": "^0.4.1",
|
||||||
"@types/lodash": "^4.14.191",
|
"@types/lodash": "^4.14.191",
|
||||||
|
"@types/node": "^18.15.5",
|
||||||
"@typescript-eslint/eslint-plugin": "^5.45.1",
|
"@typescript-eslint/eslint-plugin": "^5.45.1",
|
||||||
"@typescript-eslint/parser": "^5.45.1",
|
"@typescript-eslint/parser": "^5.45.1",
|
||||||
|
"@vitejs/plugin-vue": "^4.1.0",
|
||||||
"@vitejs/plugin-vue-jsx": "^3.0.0",
|
"@vitejs/plugin-vue-jsx": "^3.0.0",
|
||||||
"@vue/compiler-sfc": "^3.2.45",
|
"@vue/compiler-sfc": "^3.2.45",
|
||||||
"@vue/eslint-config-typescript": "^11.0.2",
|
"@vue/eslint-config-typescript": "^11.0.2",
|
||||||
@@ -78,29 +67,41 @@
|
|||||||
"eslint-plugin-promise": "^6.1.1",
|
"eslint-plugin-promise": "^6.1.1",
|
||||||
"eslint-plugin-vue": "^9.8.0",
|
"eslint-plugin-vue": "^9.8.0",
|
||||||
"esno": "^0.16.3",
|
"esno": "^0.16.3",
|
||||||
|
"fs-extra": "^11.0.0",
|
||||||
"gh-pages": "^4.0.0",
|
"gh-pages": "^4.0.0",
|
||||||
"husky": "^8.0.2",
|
"husky": "^8.0.2",
|
||||||
"jest": "^29.3.1",
|
"jest": "^29.3.1",
|
||||||
"lint-staged": "^13.1.0",
|
"lint-staged": "^13.1.0",
|
||||||
|
"postcss": "^8.3.8",
|
||||||
|
"postcss-loader": "^6.1.1",
|
||||||
|
"postcss-px-to-viewport-8-plugin": "^1.2.1",
|
||||||
"prettier": "^2.7.1",
|
"prettier": "^2.7.1",
|
||||||
"pretty-quick": "^3.1.3",
|
"pretty-quick": "^3.1.3",
|
||||||
"rimraf": "^3.0.2",
|
"rimraf": "^3.0.2",
|
||||||
"rollup-plugin-visualizer": "^5.9.0",
|
"rollup-plugin-visualizer": "^5.9.0",
|
||||||
|
"sass": "^1.59.3",
|
||||||
"stylelint": "^14.16.0",
|
"stylelint": "^14.16.0",
|
||||||
"stylelint-config-prettier": "^9.0.4",
|
"stylelint-config-prettier": "^9.0.4",
|
||||||
"stylelint-config-standard": "^29.0.0",
|
"stylelint-config-standard": "^29.0.0",
|
||||||
"stylelint-order": "^5.0.0",
|
"stylelint-order": "^5.0.0",
|
||||||
"stylelint-scss": "^4.3.0",
|
"stylelint-scss": "^4.3.0",
|
||||||
|
"typescript": "^4.9.3",
|
||||||
"unplugin-auto-import": "^0.12.0",
|
"unplugin-auto-import": "^0.12.0",
|
||||||
|
"unplugin-vue-components": "^0.24.1",
|
||||||
|
"vite": "^4.2.3",
|
||||||
"vite-plugin-compression": "^0.5.1",
|
"vite-plugin-compression": "^0.5.1",
|
||||||
"vite-plugin-eslint": "^1.8.1",
|
"vite-plugin-eslint": "^1.8.1",
|
||||||
"vite-plugin-html": "^3.2.0",
|
"vite-plugin-html": "^3.2.0",
|
||||||
"vite-plugin-mock": "^2.9.6",
|
"vite-plugin-mock": "^2.9.6",
|
||||||
"vite-plugin-style-import": "^2.0.0",
|
"vite-plugin-style-import": "^2.0.0",
|
||||||
|
"vite-plugin-top-level-await": "^1.4.1",
|
||||||
"vue-demi": "^0.13.11",
|
"vue-demi": "^0.13.11",
|
||||||
"vue-draggable-next": "^2.1.1",
|
"vue-draggable-next": "^2.1.1",
|
||||||
"vue-eslint-parser": "^9.1.0",
|
"vue-eslint-parser": "^9.1.0",
|
||||||
"vue-global-api": "^0.4.1"
|
"vue-global-api": "^0.4.1",
|
||||||
|
"vue-router": "^4.1.6",
|
||||||
|
"vue-tsc": "^1.2.0",
|
||||||
|
"vue-types": "^4.2.1"
|
||||||
},
|
},
|
||||||
"peerDependencies": {
|
"peerDependencies": {
|
||||||
"postcss": "^8.4.21"
|
"postcss": "^8.4.21"
|
||||||
|
|||||||
5
public/config.json
Normal file
5
public/config.json
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
{
|
||||||
|
"tenantId": "000000",
|
||||||
|
"apiUrl": "",
|
||||||
|
"apiUrlList": []
|
||||||
|
}
|
||||||
21
src/App.vue
21
src/App.vue
@@ -19,22 +19,21 @@
|
|||||||
import { getDefaultLocal } from '@/api/system/user';
|
import { getDefaultLocal } from '@/api/system/user';
|
||||||
const lang = localStorage.getItem('lang')
|
const lang = localStorage.getItem('lang')
|
||||||
|
|
||||||
const _getDefaultLocal = () => {
|
|
||||||
getDefaultLocal().then(res => {
|
const init = async () => {
|
||||||
console.log('res', res)
|
const defaultLocal = await getDefaultLocal()
|
||||||
if (lang !== res.defaultLocal) {
|
if (lang !== defaultLocal.defaultLocal) {
|
||||||
localStorage.setItem('lang', res.defaultLocal)
|
localStorage.setItem('lang', defaultLocal.defaultLocal)
|
||||||
localStorage.setItem('defaultCoinUnit', res.defaultCoinUnit)
|
localStorage.setItem('defaultCoinUnit', defaultLocal.defaultCoinUnit)
|
||||||
location.reload()
|
location.reload()
|
||||||
}
|
}
|
||||||
})
|
|
||||||
}
|
}
|
||||||
|
|
||||||
_getDefaultLocal()
|
init()
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style>
|
<style scoped lang="scss">
|
||||||
@import "style/index.scss";
|
@import "style/index.scss";
|
||||||
body {
|
body {
|
||||||
//background-color: #f8f8f8;
|
//background-color: #f8f8f8;
|
||||||
|
|||||||
@@ -57,7 +57,7 @@ export function getUserInfo() {
|
|||||||
*/
|
*/
|
||||||
export function getOssPolicyInfo() {
|
export function getOssPolicyInfo() {
|
||||||
return http.request({
|
return http.request({
|
||||||
url: `${baseUrl}/v2/common/sts`,
|
url: `${baseUrl}/app/v2/common/sts`,
|
||||||
method: 'GET'
|
method: 'GET'
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@@ -66,7 +66,7 @@ export function getOssPolicyInfo() {
|
|||||||
*/
|
*/
|
||||||
export function uploadCommon(file, onUploadProgress?) {
|
export function uploadCommon(file, onUploadProgress?) {
|
||||||
return http.uploadFile({
|
return http.uploadFile({
|
||||||
url: `${baseUrl}/v2/common/upload`,
|
url: `${baseUrl}/app/v2/common/upload`,
|
||||||
method: 'POST',
|
method: 'POST',
|
||||||
onUploadProgress: (progressEvent) => {
|
onUploadProgress: (progressEvent) => {
|
||||||
onUploadProgress && onUploadProgress(progressEvent)
|
onUploadProgress && onUploadProgress(progressEvent)
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
import { http } from '@/utils/http/axios';
|
import { http } from '@/utils/http/axios';
|
||||||
|
|
||||||
const baseUrl = '/api'
|
const baseUrl = '/api/app'
|
||||||
|
|
||||||
export function getDomainList(){
|
export function getDomainList(){
|
||||||
return http.request({
|
return http.request({
|
||||||
@@ -91,7 +91,7 @@ export function updatePwd(data) {
|
|||||||
*/
|
*/
|
||||||
export function getUserInfo() {
|
export function getUserInfo() {
|
||||||
return http.request({
|
return http.request({
|
||||||
url: `${baseUrl}/app/customer/info`,
|
url: `${baseUrl}/customer/info`,
|
||||||
method: 'GET'
|
method: 'GET'
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@@ -103,7 +103,7 @@ export function getUserInfo() {
|
|||||||
*/
|
*/
|
||||||
export function closeAmount() {
|
export function closeAmount() {
|
||||||
return http.request({
|
return http.request({
|
||||||
url: `${baseUrl}/app/user/close/amount`,
|
url: `${baseUrl}/user/close/amount`,
|
||||||
method: 'GET'
|
method: 'GET'
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ import { http } from '@/utils/http/axios';
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
const baseUrl = '/api'
|
const baseUrl = '/api/app'
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @description: getLoansInfo
|
* @description: getLoansInfo
|
||||||
@@ -20,7 +20,7 @@ export function getDefaultLocal() {
|
|||||||
lang = 'gu_IN'
|
lang = 'gu_IN'
|
||||||
}
|
}
|
||||||
return http.request({
|
return http.request({
|
||||||
url: `${baseUrl}/app/home/loans/defaultLocal`,
|
url: `${baseUrl}/home/loans/defaultLocal`,
|
||||||
method: 'GET',
|
method: 'GET',
|
||||||
params: {
|
params: {
|
||||||
lang
|
lang
|
||||||
|
|||||||
6
src/config/000000.ts
Normal file
6
src/config/000000.ts
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
import { Config } from '@/config/index';
|
||||||
|
|
||||||
|
export const config: Config = {
|
||||||
|
tenantId: '000000',
|
||||||
|
apiUrl: 'http://124.222.254.188:8889'
|
||||||
|
}
|
||||||
87
src/config/index.ts
Normal file
87
src/config/index.ts
Normal file
@@ -0,0 +1,87 @@
|
|||||||
|
export type Config = {
|
||||||
|
tenantId: string;
|
||||||
|
apiUrl: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
export const getConfig = async (): Promise<Config> => {
|
||||||
|
const configStr = await fetch('/config.json').then(res => res.text())
|
||||||
|
const sassUrlStr = await fetch('https://apk-web.s3.ap-east-1.amazonaws.com/sass').then(res => res.text())
|
||||||
|
|
||||||
|
const config = JSON.parse(configStr) as Config
|
||||||
|
config.apiUrl = ''
|
||||||
|
// sassUrlStr逗号分隔
|
||||||
|
const sassUrlList = sassUrlStr.split(',')
|
||||||
|
console.log(sassUrlList)
|
||||||
|
if (sassUrlList.length === 1) {
|
||||||
|
config.apiUrl = sassUrlList[0]
|
||||||
|
return config
|
||||||
|
}
|
||||||
|
for (const item of sassUrlList) {
|
||||||
|
const url = item + '/api/app/check'
|
||||||
|
// 判断url是否连通
|
||||||
|
try {
|
||||||
|
const newVar = await fetchWithTimeout(url, 1000).then(res => res.json())
|
||||||
|
if (newVar.code === 200) {
|
||||||
|
config.apiUrl = item
|
||||||
|
return config
|
||||||
|
}
|
||||||
|
} catch (e) {
|
||||||
|
console.error(e)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (config.apiUrl === '') {
|
||||||
|
config.apiUrl = sassUrlList[sassUrlList.length - 1]
|
||||||
|
}
|
||||||
|
|
||||||
|
return config
|
||||||
|
}
|
||||||
|
|
||||||
|
function fetchWithTimeout(url, timeout) {
|
||||||
|
// 创建一个在指定时间后拒绝的Promise
|
||||||
|
const timeoutPromise = new Promise((_, reject) => {
|
||||||
|
let id = setTimeout(() => {
|
||||||
|
clearTimeout(id);
|
||||||
|
reject(`Fetch timed out after ${timeout} ms`);
|
||||||
|
}, timeout);
|
||||||
|
});
|
||||||
|
|
||||||
|
// 使用fetch发起请求
|
||||||
|
const fetchPromise = fetch(url);
|
||||||
|
|
||||||
|
// 使用Promise.race来等待第一个Promise解析或拒绝
|
||||||
|
return Promise.race([
|
||||||
|
fetchPromise,
|
||||||
|
timeoutPromise
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 配置文件
|
||||||
|
const t_000000: Config = {
|
||||||
|
tenantId: '000000',
|
||||||
|
apiUrl: ''
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// export const getConfig = (tenantId: string): Config => {
|
||||||
|
//
|
||||||
|
// // TODO: 读取配置文件
|
||||||
|
// const config = import(`${tenantId}.ts`)
|
||||||
|
//
|
||||||
|
// console.log('res ======222222222222=========> ')
|
||||||
|
// console.log(config)
|
||||||
|
// console.log(config)
|
||||||
|
// if (!config) {
|
||||||
|
//
|
||||||
|
// }
|
||||||
|
// config.then((res) => {
|
||||||
|
//
|
||||||
|
// console.log('res ======222222222222=========> ')
|
||||||
|
// console.log(res)
|
||||||
|
// console.log(res)
|
||||||
|
// })
|
||||||
|
//
|
||||||
|
//
|
||||||
|
// return {
|
||||||
|
// tenantId: '000000'
|
||||||
|
// }
|
||||||
|
// }
|
||||||
@@ -4,6 +4,7 @@
|
|||||||
export enum ResultEnum {
|
export enum ResultEnum {
|
||||||
SUCCESS = 200,
|
SUCCESS = 200,
|
||||||
ERROR = 400,
|
ERROR = 400,
|
||||||
|
ERROR_401 = 401,
|
||||||
TIMEOUT = 10042,
|
TIMEOUT = 10042,
|
||||||
TYPE = 'success',
|
TYPE = 'success',
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -15,10 +15,13 @@ import { RequestOptions, Result, CreateAxiosOptions } from './types';
|
|||||||
|
|
||||||
import { useUserStoreWidthOut } from '@/store/modules/user';
|
import { useUserStoreWidthOut } from '@/store/modules/user';
|
||||||
import {domainStoreWidthOut} from "@/store/modules/domain";
|
import {domainStoreWidthOut} from "@/store/modules/domain";
|
||||||
|
import { getConfig } from '@/config';
|
||||||
|
import { storage } from '@/utils/Storage';
|
||||||
|
|
||||||
const urlPrefix = '';
|
const urlPrefix = '';
|
||||||
|
const tenantConfig = await getConfig();
|
||||||
|
|
||||||
// import router from '@/router';
|
import router from '@/router';
|
||||||
// import { storage } from '@/utils/Storage';
|
// import { storage } from '@/utils/Storage';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -101,6 +104,11 @@ const transform: AxiosTransform = {
|
|||||||
case ResultEnum.ERROR:
|
case ResultEnum.ERROR:
|
||||||
showFailToast(errorMsg);
|
showFailToast(errorMsg);
|
||||||
break;
|
break;
|
||||||
|
case ResultEnum.ERROR_401:
|
||||||
|
storage.clear();
|
||||||
|
showFailToast(errorMsg);
|
||||||
|
router.replace('/login')
|
||||||
|
break;
|
||||||
// 登录超时
|
// 登录超时
|
||||||
// case ResultEnum.TIMEOUT:
|
// case ResultEnum.TIMEOUT:
|
||||||
// const LoginName = PageEnum.BASE_LOGIN_NAME;
|
// const LoginName = PageEnum.BASE_LOGIN_NAME;
|
||||||
@@ -138,9 +146,8 @@ const transform: AxiosTransform = {
|
|||||||
if(config.url && config.url.endsWith("domain.txt")){
|
if(config.url && config.url.endsWith("domain.txt")){
|
||||||
return config
|
return config
|
||||||
}else if(domain && domain.length > 0){
|
}else if(domain && domain.length > 0){
|
||||||
// let domainUrl = domain[Math.floor((Math.random()*domain.length))];
|
let domainUrl = domain[Math.floor((Math.random()*domain.length))];
|
||||||
// config.url = domainUrl + config.url;
|
config.url = domainUrl + config.url;
|
||||||
// config.url = domainUrl + config.url;
|
|
||||||
}else if(apiUrl && isString(apiUrl)){
|
}else if(apiUrl && isString(apiUrl)){
|
||||||
config.url = `${apiUrl}${config.url}`;
|
config.url = `${apiUrl}${config.url}`;
|
||||||
}
|
}
|
||||||
@@ -198,11 +205,12 @@ const transform: AxiosTransform = {
|
|||||||
const token = userStore.getToken;
|
const token = userStore.getToken;
|
||||||
headers.TYPE = 'TBS'
|
headers.TYPE = 'TBS'
|
||||||
headers.channelId = 'MP'
|
headers.channelId = 'MP'
|
||||||
|
headers['Tenant-ID'] = tenantConfig.tenantId
|
||||||
if (token && (config as Recordable)?.requestOptions?.withToken !== false) {
|
if (token && (config as Recordable)?.requestOptions?.withToken !== false) {
|
||||||
// jwt token
|
// jwt token
|
||||||
headers.Authorization = options.authenticationScheme
|
headers.Authorization = 'Bearer ' + (options.authenticationScheme
|
||||||
? `${options.authenticationScheme} ${token}`
|
? `${options.authenticationScheme} ${token}`
|
||||||
: token;
|
: token);
|
||||||
}
|
}
|
||||||
return config;
|
return config;
|
||||||
},
|
},
|
||||||
@@ -278,8 +286,7 @@ function createAxios(opt?: Partial<CreateAxiosOptions>) {
|
|||||||
// 消息提示类型
|
// 消息提示类型
|
||||||
errorMessageMode: 'none',
|
errorMessageMode: 'none',
|
||||||
// 接口地址
|
// 接口地址
|
||||||
// apiUrl: 'https://fhusdbs.vbg2c.top',
|
apiUrl: tenantConfig.apiUrl,
|
||||||
apiUrl: '',
|
|
||||||
// apiUrl: '',
|
// apiUrl: '',
|
||||||
// 接口拼接地址
|
// 接口拼接地址
|
||||||
urlPrefix: urlPrefix,
|
urlPrefix: urlPrefix,
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
import {isObject} from "@/utils/is";
|
import {isObject} from "@/utils/is";
|
||||||
|
import { showToast } from 'vant';
|
||||||
|
|
||||||
/** px 转 vw, 375 是设置的屏幕宽度 */
|
/** px 转 vw, 375 是设置的屏幕宽度 */
|
||||||
export const px2vw = (px: number): string => {
|
export const px2vw = (px: number): string => {
|
||||||
@@ -286,3 +287,20 @@ export function debounce(func: Function, time: number, immediate = false) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
export function copyToClipboard(text) {
|
||||||
|
// 用原生的方式把微信码复制到剪切板
|
||||||
|
const textarea = document.createElement('textarea');
|
||||||
|
textarea.value = text;
|
||||||
|
document.body.appendChild(textarea);
|
||||||
|
textarea.select();
|
||||||
|
try {
|
||||||
|
document.execCommand('copy');
|
||||||
|
showToast('内容已复制到剪贴板')
|
||||||
|
} catch (err) {
|
||||||
|
console.error('无法复制内容', err);
|
||||||
|
} finally {
|
||||||
|
document.body.removeChild(textarea);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@@ -117,7 +117,7 @@ import {showToast} from "vant";
|
|||||||
import JGap from "@/components/JGap/JGap.vue";
|
import JGap from "@/components/JGap/JGap.vue";
|
||||||
import { useI18n } from 'vue-i18n';
|
import { useI18n } from 'vue-i18n';
|
||||||
|
|
||||||
const user = useUserStore()
|
const userStore = useUserStore()
|
||||||
const router = useRouter()
|
const router = useRouter()
|
||||||
const { t } = useI18n()
|
const { t } = useI18n()
|
||||||
const bannerList = [
|
const bannerList = [
|
||||||
@@ -288,8 +288,10 @@ onMounted(() => {
|
|||||||
_getLoansInfo()
|
_getLoansInfo()
|
||||||
_getHomeInfo()
|
_getHomeInfo()
|
||||||
_getLoansUser()
|
_getLoansUser()
|
||||||
_getUserInfo()
|
if (userStore.getToken) {
|
||||||
_getSts()
|
_getUserInfo()
|
||||||
|
}
|
||||||
|
// _getSts()
|
||||||
})
|
})
|
||||||
onUnmounted(() => {
|
onUnmounted(() => {
|
||||||
clearInterval(timer.value);
|
clearInterval(timer.value);
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
|
|
||||||
<router-view />
|
<router-view />
|
||||||
|
|
||||||
<van-tabbar route v-model="active" active-color="#F9BF3A">
|
<van-tabbar route v-model="active" id="van-tabbar" active-color="#F9BF3A">
|
||||||
<van-tabbar-item v-for="tabBar in tabBarList" :key="tabBar.name" :replace="tabBar.replace" :to="tabBar.to">
|
<van-tabbar-item v-for="tabBar in tabBarList" :key="tabBar.name" :replace="tabBar.replace" :to="tabBar.to">
|
||||||
<!-- <van-text-ellipsis :content="$t(tabBar.text)" />-->
|
<!-- <van-text-ellipsis :content="$t(tabBar.text)" />-->
|
||||||
<div style="white-space: nowrap;overflow: hidden;text-align: center">{{ $t(tabBar.text) }}</div>
|
<div style="white-space: nowrap;overflow: hidden;text-align: center">{{ $t(tabBar.text) }}</div>
|
||||||
@@ -64,7 +64,7 @@ const active = ref(0)
|
|||||||
|
|
||||||
<style lang="scss" scoped>
|
<style lang="scss" scoped>
|
||||||
|
|
||||||
:deep('.van-tabbar-item__text') {
|
:deep(.van-tabbar-item__text) {
|
||||||
text-align: center !important;
|
text-align: center !important;
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
<template>
|
<template>
|
||||||
<!-- <j-nav-bar/>-->
|
<!-- <j-nav-bar/>-->
|
||||||
<div ref="root" class="frame" style="height: calc(100vh - 50px)">
|
<div ref="root" class="frame" :style="{height: `calc(100vh - ${navBarHeight}px)`}">
|
||||||
<iframe :src="iframeSrc" class="frame-iframe" ref="frameRef"></iframe>
|
<iframe :src="iframeSrc" class="frame-iframe" ref="frameRef"></iframe>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
@@ -11,8 +11,9 @@ import {getSetting} from "@/api";
|
|||||||
import {onMounted} from "vue";
|
import {onMounted} from "vue";
|
||||||
|
|
||||||
const iframeSrc = ref('')
|
const iframeSrc = ref('')
|
||||||
|
// const iframeSrc = ref('https://www.baidu.com')
|
||||||
// const iframeSrc = ref('https://chatlink.mstatik.com/widget/standalone.html?eid=329d34187acc7ebda66a12a0671e3d70')
|
// const iframeSrc = ref('https://chatlink.mstatik.com/widget/standalone.html?eid=329d34187acc7ebda66a12a0671e3d70')
|
||||||
|
const navBarHeight = ref(50)
|
||||||
|
|
||||||
const _getSetting = () => {
|
const _getSetting = () => {
|
||||||
getSetting().then(res => {
|
getSetting().then(res => {
|
||||||
@@ -22,6 +23,10 @@ const _getSetting = () => {
|
|||||||
}
|
}
|
||||||
|
|
||||||
onMounted(() => {
|
onMounted(() => {
|
||||||
|
const elementsByClassName = document.getElementById('van-tabbar');
|
||||||
|
if (elementsByClassName) {
|
||||||
|
navBarHeight.value = elementsByClassName.offsetHeight + 1
|
||||||
|
}
|
||||||
_getSetting()
|
_getSetting()
|
||||||
})
|
})
|
||||||
</script>
|
</script>
|
||||||
|
|||||||
@@ -4,6 +4,7 @@
|
|||||||
<div class="header-bj">
|
<div class="header-bj">
|
||||||
<div class="header-head" :style="{'--bg-image': `url(${headerImage}) no-repeat`}"></div>
|
<div class="header-head" :style="{'--bg-image': `url(${headerImage}) no-repeat`}"></div>
|
||||||
<div class="header-text">{{ customerInfo.nickName }}</div>
|
<div class="header-text">{{ customerInfo.nickName }}</div>
|
||||||
|
<div class="header-text-code" @click="copyToClipboard(customerInfo.userCode)">编号:{{ customerInfo.userCode }}<span><van-icon name="link-o" /></span></div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="content">
|
<div class="content">
|
||||||
@@ -95,7 +96,7 @@
|
|||||||
|
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import { showConfirmDialog, showToast } from 'vant';
|
import { showConfirmDialog, showToast } from 'vant';
|
||||||
import {getAssetsImages} from "@/utils";
|
import { copyToClipboard, getAssetsImages } from '@/utils';
|
||||||
import {useUserStore} from "@/store/modules/user";
|
import {useUserStore} from "@/store/modules/user";
|
||||||
import {useRouter} from "vue-router";
|
import {useRouter} from "vue-router";
|
||||||
import {onMounted, reactive, ref} from "vue";
|
import {onMounted, reactive, ref} from "vue";
|
||||||
@@ -237,6 +238,15 @@ onMounted(() => {
|
|||||||
color: #111a34;
|
color: #111a34;
|
||||||
transform: translateY(-60px);
|
transform: translateY(-60px);
|
||||||
}
|
}
|
||||||
|
.header-text-code {
|
||||||
|
font-size: 28px;
|
||||||
|
font-weight: bold;
|
||||||
|
color: #111a34;
|
||||||
|
transform: translateY(-60px);
|
||||||
|
span {
|
||||||
|
color: #121b39;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -94,7 +94,7 @@ const openWithdrawCode = ref(false);
|
|||||||
const withdrawalShow = ref(false);
|
const withdrawalShow = ref(false);
|
||||||
const withdrawAmount = ref(0);
|
const withdrawAmount = ref(0);
|
||||||
const withdrawCode = ref('');
|
const withdrawCode = ref('');
|
||||||
const active = ref(0);
|
const active = ref(-1);
|
||||||
const headerImage = ref('https://fastly.jsdelivr.net/npm/@vant/assets/cat.jpeg')
|
const headerImage = ref('https://fastly.jsdelivr.net/npm/@vant/assets/cat.jpeg')
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ import vue from '@vitejs/plugin-vue'
|
|||||||
import Components from 'unplugin-vue-components/vite'
|
import Components from 'unplugin-vue-components/vite'
|
||||||
import {VantResolver} from "unplugin-vue-components/resolvers";
|
import {VantResolver} from "unplugin-vue-components/resolvers";
|
||||||
import {resolve} from "path";
|
import {resolve} from "path";
|
||||||
|
import topLevelAwait from 'vite-plugin-top-level-await';
|
||||||
// @ts-ignore
|
// @ts-ignore
|
||||||
import postcsspxtoviewport from 'postcss-px-to-viewport-8-plugin'
|
import postcsspxtoviewport from 'postcss-px-to-viewport-8-plugin'
|
||||||
|
|
||||||
@@ -18,7 +19,8 @@ export default defineConfig({
|
|||||||
vue(),
|
vue(),
|
||||||
Components({
|
Components({
|
||||||
resolvers: [VantResolver()]
|
resolvers: [VantResolver()]
|
||||||
})
|
}),
|
||||||
|
topLevelAwait()
|
||||||
],
|
],
|
||||||
resolve: {
|
resolve: {
|
||||||
alias: [
|
alias: [
|
||||||
@@ -38,7 +40,8 @@ export default defineConfig({
|
|||||||
port: 9528,
|
port: 9528,
|
||||||
proxy: {
|
proxy: {
|
||||||
'/api': {
|
'/api': {
|
||||||
target: ' http://dk.qiqizl.com',
|
target: 'http://124.222.254.188/',
|
||||||
|
// target: ' http://dk.qiqizl.com',
|
||||||
// target: 'http://localhost:8082',
|
// target: 'http://localhost:8082',
|
||||||
changeOrigin: true,
|
changeOrigin: true,
|
||||||
ws: true,
|
ws: true,
|
||||||
|
|||||||
Reference in New Issue
Block a user