10 files modified
3 files added
| | |
| | | export function queryStockConfig(options) { |
| | | return post("/api/user/queryStockConfig.do", options); |
| | | } |
| | | export function queryStockConfigTwo(options) { |
| | | return post("/api/user/queryStockConfigTwo.do", options); |
| | | } |
| | | export function getchicang(options) { |
| | | return post("user/position/list.do", options); |
| | | } |
| | |
| | | <slot></slot> |
| | | </div> |
| | | <!-- 搜索弹窗 --> |
| | | <van-popup v-model="searchShow" round position="bottom" :style="{ height: '80%' }"> |
| | | <van-popup |
| | | v-model="searchShow" |
| | | round |
| | | position="bottom" |
| | | :style="{ height: '80%' }" |
| | | > |
| | | <div class="popup_head"> |
| | | <van-icon name="arrow-left" size=".5em" @click="searchShow = false" /> |
| | | <div class="popup_input"> |
| | | <van-field v-model="searchValue" :placeholder="$t('hj37')" left-icon="search" clearable /> |
| | | <van-field |
| | | v-model="searchValue" |
| | | :placeholder="$t('hj37')" |
| | | left-icon="search" |
| | | clearable |
| | | /> |
| | | </div> |
| | | <van-button type="primary" round @click="submit">{{ |
| | | $t("Search") |
| | | }}</van-button> |
| | | </div> |
| | | |
| | | <van-list v-model="loading" :finished="finished" :finished-text="$t('hj43')" @load="onLoad" |
| | | v-if="(lists && lists.length > 0) || !finished"> |
| | | <van-list |
| | | v-model="loading" |
| | | :finished="finished" |
| | | :finished-text="$t('hj43')" |
| | | @load="onLoad" |
| | | v-if="(lists && lists.length > 0) || !finished" |
| | | > |
| | | <van-cell v-for="item in lists" :key="item.id" @click="toDetails(item)"> |
| | | <div class="search_item"> |
| | | <div class="search_item_left"> |
| | |
| | | <script> |
| | | import * as api from "@/axios/api"; |
| | | import handleDt from "@/utils/deTh"; |
| | | import { Toast } from "vant"; |
| | | export default { |
| | | name: "tabHead", |
| | | data() { |
| | |
| | | methods: { |
| | | // 跳转客服页面 |
| | | aRouter1() { |
| | | window.open(this.onlineService); |
| | | // window.open(this.onlineService); |
| | | Toast(this.$t("kf1")); |
| | | }, |
| | | // 获取客服地址 |
| | | async getInfoSite() { |
| | |
| | | // 跳转设置页面 |
| | | this.$router.push("/setting"); |
| | | }, |
| | | onLoad: handleDt.throttle(async function (a, b) { |
| | | onLoad: handleDt.throttle(async function(a, b) { |
| | | // 搜索列表加载 |
| | | this.finished = false; |
| | | let opt = { |
| | |
| | | type: item.stock_type |
| | | } |
| | | }); |
| | | }, |
| | | } |
| | | } |
| | | }; |
| | | </script> |
| | |
| | | "ni":"印度股票指數", |
| | | "hk1":"香港", |
| | | "tw":"臺灣", |
| | | "id1":"印度" |
| | | "id1":"印度", |
| | | "kf1": "需要任何幫助請聯繫您的專屬交易助理或開戶專員", |
| | | "划转": "劃轉", |
| | | "汇率": "匯率" |
| | | } |
| | |
| | | "信用分": "Credit Score", |
| | | "剩余贷款额度": "Remaining Loan Amount", |
| | | "贷款申请": "Loan Application", |
| | | "还款":"Repayment", |
| | | "确认还款吗":"Confirm repayment", |
| | | "日内":"In the meantime", |
| | | "建仓成本":"Position-building cost", |
| | | "已申购":"Already purchased", |
| | | "还款": "Repayment", |
| | | "确认还款吗": "Confirm repayment", |
| | | "日内": "In the meantime", |
| | | "建仓成本": "Position-building cost", |
| | | "已申购": "Already purchased", |
| | | "hj316": "Please enter bank cardholder name", |
| | | "Password": "Password", |
| | | "rnv":"Real Name Verification", |
| | | "it1":"ID Type", |
| | | "dl1":"Driver License", |
| | | "pa1":"Passport", |
| | | "ot1":"Other", |
| | | "in1":"Identification Number", |
| | | "fsi1":"Front Side of ID Photo", |
| | | "bsi1":"Back Side of ID Photo", |
| | | "uv1":"Under Verification", |
| | | "sc":"Stock Code", |
| | | "abc":"Add bank card", |
| | | "hksi":"Hong Kong Stock Index", |
| | | "tsi":"Taiwan Stock Index", |
| | | "ni":"Indian stock index", |
| | | "hk1":"Hong Kong", |
| | | "tw":"Taiwan", |
| | | "id1":"India" |
| | | } |
| | | "rnv": "Real Name Verification", |
| | | "it1": "ID Type", |
| | | "dl1": "Driver License", |
| | | "pa1": "Passport", |
| | | "ot1": "Other", |
| | | "in1": "Identification Number", |
| | | "fsi1": "Front Side of ID Photo", |
| | | "bsi1": "Back Side of ID Photo", |
| | | "uv1": "Under Verification", |
| | | "sc": "Stock Code", |
| | | "abc": "Add bank card", |
| | | "hksi": "Hong Kong Stock Index", |
| | | "tsi": "Taiwan Stock Index", |
| | | "ni": "Indian stock index", |
| | | "hk1": "Hong Kong", |
| | | "tw": "Taiwan", |
| | | "id1": "India", |
| | | "kf1": "If you need any assistance, please contact your dedicated trading assistant or account opening specialist.", |
| | | "划转": "Transfer", |
| | | "汇率": "Exchange rate" |
| | | } |
| | |
| | | "ni": "भारतीय स्टॉक इंडेक्स", |
| | | "hk1": "हांगकांग", |
| | | "tw": "ताइवान", |
| | | "id1": "भारत" |
| | | "id1": "भारत", |
| | | "kf1": "यदि आपको कोई सहायता चाहिए, तो कृपया अपने समर्पित व्यापार सहायक या खाता खोलने विशेषज्ञ से संपर्क करें।", |
| | | "划转": "स्थानांतरण", |
| | | "汇率": "विनिमय दर" |
| | | } |
| | |
| | | </div> |
| | | <div class="swiper"> |
| | | <div class="swiper-wrapper flex-between"> |
| | | <div class="swiper-slide"> |
| | | <!-- <div class="swiper-slide"> |
| | | <div class="nav_item flex-start" @click="toPage('/aiTrading')"> |
| | | <img src="../../assets/img/home_1.png" alt="" /> |
| | | <span>{{ $t("量化交易") }}</span> |
| | |
| | | <img src="../../assets/img/home_2.png" alt="" /> |
| | | <span>{{ $t("hj621") }}</span> |
| | | </div> |
| | | </div> |
| | | </div> --> |
| | | <div class="swiper-slide"> |
| | | <div class="nav_item flex-start" @click="toPage('/ipo')"> |
| | | <img src="../../assets/img/home_3.png" alt="" /> |
| | | <span>IPO</span> |
| | | </div> |
| | | </div> |
| | | <div class="swiper-slide"> |
| | | <!-- <div class="swiper-slide"> |
| | | <div class="nav_item flex-start" @click="toPage('/fund')"> |
| | | <img src="../../assets/img/home_4.png" alt="" /> |
| | | <span>{{ $t("理财基金") }}</span> |
| | | </div> |
| | | </div> --> |
| | | <div class="swiper-slide"> |
| | | <div class="nav_item flex-start" @click="toPage('/recharge')"> |
| | | <img src="@/assets/img/充值缴费.png" alt="" /> |
| | | <span>{{ $t("hj172") }}</span> |
| | | </div> |
| | | </div> |
| | | <div class="swiper-slide"> |
| | | <div class="nav_item flex-start" @click="toPage('/banklist')"> |
| | | <img src="@/assets/img/充值缴费.png" alt="" /> |
| | | <span>{{ $t("hj147") }}</span> |
| | | </div> |
| | | </div> |
| | | </div> |
| | |
| | | padding: 0 0.25em 0 0.25em; |
| | | |
| | | .swiper-slide { |
| | | width: 2.1875em; |
| | | height: 2.5em; |
| | | width: 3em; |
| | | height: 2.8em; |
| | | |
| | | .nav_item { |
| | | background-color: #fff; |
| | |
| | | width: 100%; |
| | | height: 100%; |
| | | flex-direction: column; |
| | | padding-top: 0.25em; |
| | | padding: 0.25em 0.15em 0; |
| | | padding: 0.45em 0.15em 0; |
| | | |
| | | img { |
| | | width: 0.75em; |
| | | width: 0.95em; |
| | | margin-bottom: 0.25em; |
| | | } |
| | | |
| | |
| | | <div class="order_tabs"> |
| | | <van-tabs v-model="active" swipe-threshold="1"> |
| | | <van-tab :title="$t('hj160')" name=""></van-tab> |
| | | <van-tab title="AI" name="4"></van-tab> |
| | | <van-tab :title="$t('hj621')" name="3"></van-tab> |
| | | <van-tab title="IPO" name="2"></van-tab> |
| | | <van-tab :title="$t('日内')" name="0"></van-tab> |
| | | <van-tab :title="$t('美股指数')" name="US"></van-tab> |
| | | <van-tab :title="$t('hksi')" name="HK"></van-tab> |
| | | <van-tab :title="$t('tsi')" name="TW"></van-tab> |
| | | <van-tab :title="$t('ni')" name="IN"></van-tab> |
| | | </van-tabs> |
| | | </div> |
| | | |
| | |
| | | async getList() { |
| | | let data = await api.getchicang({ |
| | | state: 0, |
| | | positionType: this.active, |
| | | stockType: this.active, |
| | | pageNum: this.pageNum, |
| | | pageSize: this.pageSize |
| | | }); |
| | |
| | | (nowPrice * selectCycle.replace("X", "") * num) |
| | | | _toLocaleString |
| | | }} |
| | | <span v-if="bayType != 'US'"> |
| | | ≈ $ |
| | | {{ |
| | | (nowPrice * selectCycle.replace("X", "") * num * rate) |
| | | | _toLocaleString |
| | | }} |
| | | </span> |
| | | </span> |
| | | <span style="white-space: nowarp"> |
| | | $ {{ moneyData.availableBalance | _toLocaleString }} |
| | | {{ bayType | currencySymbol }} |
| | | {{ moneyData.availableBalance | _toLocaleString }} |
| | | </span> |
| | | </div> |
| | | </div> |
| | |
| | | 2 |
| | | ) |
| | | }} |
| | | <span v-if="bayType != 'US'"> |
| | | ≈ $ |
| | | {{ |
| | | (nowPrice * |
| | | selectCycle.replace("X", "") * |
| | | num * |
| | | sxf * |
| | | rate) |
| | | | _toLocaleString |
| | | }} |
| | | </span> |
| | | </span> |
| | | <span style="white-space: nowarp"> </span> |
| | | </div> |
| | |
| | | let data = await api.getMoney(); |
| | | // let type = this.bayType === "SZHB" ? "US" : this.bayType; |
| | | if (data.status === 0) { |
| | | // const newArr = data.data.filter(item => item.accectType === type); |
| | | // this.moneyData = newArr[0] || {}; |
| | | |
| | | this.moneyData = data.data[0]; |
| | | |
| | | // console.log(this.bayType, newArr); |
| | | // 判断是否登录 |
| | | // this.moneyList = data.data; |
| | | data.data.forEach(i => { |
| | | if (i.accectType == this.bayType) this.moneyData = i; |
| | | }); |
| | | } |
| | | }, |
| | | handleBack() { |
| | |
| | | <span>{{ $t("hj244") }}</span> |
| | | </div> |
| | | |
| | | <div class="wallet_price flex-between"> |
| | | <span>{{ moneyData.symbol }} {{ moneyData.totalMoney }}</span> |
| | | <span>{{ moneyData.symbol }} {{ moneyData.availableBalance }}</span> |
| | | <div class="wallet_price flex-between" v-for="i in moneyData" :key="i.id"> |
| | | <span>{{ i.symbol }} {{ i.totalMoney }}</span> |
| | | <span>{{ i.symbol }} {{ i.availableBalance }}</span> |
| | | </div> |
| | | |
| | | <div class="wallet_price_name flex-between"> |
| | |
| | | <div class="tab flex-center" @click="toPage('/rechargelist')"> |
| | | <img src="@/assets/img/jl.png" alt="" /> |
| | | <span>{{ $t("jl") }}</span> |
| | | </div> |
| | | <div class="tab flex-center" @click="toPage('/transferNew')"> |
| | | <img src="@/assets/img/jl.png" alt="" /> |
| | | <span>{{ $t("划转") }}</span> |
| | | </div> |
| | | </div> |
| | | |
| | |
| | | data() { |
| | | return { |
| | | userInfo: {}, // 用户信息 |
| | | moneyData: {}, // 账户金额 |
| | | moneyData: [], // 账户金额, 包含可用余额数组 |
| | | positionData: {} // 账户持仓数据 |
| | | }; |
| | | }, |
| | |
| | | async getMoney() { |
| | | let data = await api.getMoney(); |
| | | if (data.status === 0) { |
| | | this.moneyData = data.data[0]; |
| | | this.moneyData = data.data; |
| | | } |
| | | }, |
| | | // 获取账户持仓数据 |
| New file |
| | |
| | | <template> |
| | | <div class="transfer_new"> |
| | | <van-nav-bar |
| | | :placeholder="true" |
| | | :safe-area-inset-top="true" |
| | | :title="$t('划转')" |
| | | left-arrow |
| | | @click-left="$router.go(-1)" |
| | | > |
| | | </van-nav-bar> |
| | | |
| | | <div style="position: relative;"> |
| | | <div class="card"> |
| | | <div class="flex-center"> |
| | | <span style="margin-right: 1em;">{{ $t("从") }}</span> |
| | | <van-field |
| | | v-model="moneyRevise" |
| | | type="number" |
| | | :placeholder="$t('请输入')" |
| | | > |
| | | <template #button> |
| | | <van-button |
| | | size="small" |
| | | class="butn2" |
| | | type="primary" |
| | | @click="onMax" |
| | | > |
| | | {{ $t("全部") }} |
| | | </van-button> |
| | | </template> |
| | | </van-field> |
| | | <span style="margin-left: 1em;">{{ cValue.currency }}</span> |
| | | </div> |
| | | <div class="mt-1"> |
| | | <van-popover |
| | | v-model="showPopover" |
| | | trigger="click" |
| | | :actions="actions" |
| | | @select="onSelect" |
| | | placement="bottom-start" |
| | | > |
| | | <template #reference> |
| | | <div class="lv">{{ cValue.text }}</div> |
| | | </template> |
| | | </van-popover> |
| | | </div> |
| | | </div> |
| | | |
| | | <div class="card mt-1"> |
| | | <div class="flex-center"> |
| | | <span style="margin-right: 1em;">{{ $t("到") }}</span> |
| | | <div style="flex:1"> |
| | | ≈ {{ this.moneyReviseTo || 0 }} {{ dValue.currency }} |
| | | </div> |
| | | </div> |
| | | <div class="mt-1"> |
| | | <van-popover |
| | | v-model="showPopover1" |
| | | trigger="click" |
| | | :actions="actions" |
| | | @select="onSelect1" |
| | | placement="bottom-start" |
| | | > |
| | | <template #reference> |
| | | <div class="lv">{{ dValue.text }}</div> |
| | | </template> |
| | | </van-popover> |
| | | </div> |
| | | </div> |
| | | |
| | | <img src="@/assets/img/transfer.png" class="swap" @click="onSwap" /> |
| | | </div> |
| | | |
| | | <div class="flex-between transfer_a"> |
| | | <span>{{ $t("汇率") }}</span> |
| | | <span> |
| | | 1 {{ cValue.currency }} <van-icon name="exchange" /> {{ exRate }} |
| | | {{ dValue.currency }}</span |
| | | > |
| | | </div> |
| | | |
| | | <div class="flex-between transfer_a"> |
| | | <span>{{ $t("hj44") }}</span> |
| | | <span> |
| | | {{ Math.ceil(sxf * moneyRevise * 1000) / 1000 }} {{ cValue.currency }} |
| | | </span> |
| | | </div> |
| | | |
| | | <van-button type="info" class="butn" @click="submit"> |
| | | {{ $t("qr") }} |
| | | </van-button> |
| | | </div> |
| | | </template> |
| | | |
| | | <script> |
| | | import * as api from "@/axios/api"; |
| | | import { Toast } from "vant"; |
| | | export default { |
| | | data() { |
| | | return { |
| | | moneyRevise: 0, // 划转金额 |
| | | showPopover: false, |
| | | showPopover1: false, |
| | | actions: [ |
| | | { text: this.$t("美国"), value: "US", currency: "USD" }, |
| | | { text: this.$t("hk1"), value: "HK", currency: "HKD" }, |
| | | { text: this.$t("tw"), value: "TW", currency: "TWD" }, |
| | | { text: this.$t("id1"), value: "IN", currency: "INR" } |
| | | ], |
| | | cValue: {}, |
| | | dValue: {}, |
| | | usM: {}, // 账户金额 us |
| | | twM: {}, // 账户金额 tw |
| | | inM: {}, // 账户金额 in |
| | | hkM: {}, // 账户金额 hk |
| | | arrRate: [], // 汇率 |
| | | sxf: 0.01 // 手续费比例 |
| | | }; |
| | | }, |
| | | computed: { |
| | | moneyReviseTo() { |
| | | return Math.floor(this.moneyRevise * this.exRate * 100) / 100; |
| | | }, |
| | | exRate() { |
| | | let rate = 1; |
| | | this.arrRate.forEach(item => { |
| | | if ( |
| | | item.currency == this.cValue.currency && |
| | | item.conversionCurrency == this.dValue.currency |
| | | ) |
| | | rate = item.rata; |
| | | }); |
| | | return rate; |
| | | } |
| | | }, |
| | | created() { |
| | | this.cValue = this.actions[0]; // 默认值 |
| | | this.dValue = this.actions[1]; // 默认值 |
| | | this.getMoney(); |
| | | this.getExchangeRate(); |
| | | this.queryStockConfig(); |
| | | }, |
| | | methods: { |
| | | // 获取汇率 |
| | | async getExchangeRate() { |
| | | let data = await api.getRateInfo(); |
| | | if (data.status === 0) { |
| | | this.arrRate = data.data; |
| | | } |
| | | }, |
| | | onMax() { |
| | | switch (this.cValue.currency) { |
| | | case "USD": |
| | | this.moneyRevise = this.usM.availableBalance; |
| | | break; |
| | | case "HKD": |
| | | this.moneyRevise = this.hkM.availableBalance; |
| | | break; |
| | | case "TWD": |
| | | this.moneyRevise = this.twM.availableBalance; |
| | | break; |
| | | case "INR": |
| | | this.moneyRevise = this.inM.availableBalance; |
| | | break; |
| | | default: |
| | | break; |
| | | } |
| | | }, |
| | | // 获取手续比例 |
| | | async queryStockConfig() { |
| | | let data = await api.queryStockConfigTwo(); |
| | | if (data.status === 0) { |
| | | this.sxf = data.data.cValue; |
| | | } |
| | | }, |
| | | // 获取账户金额 |
| | | async getMoney() { |
| | | let data = await api.getMoney(); |
| | | if (data.status === 0) { |
| | | data.data.forEach(item => { |
| | | if (item.accectType == "US") this.usM = item; |
| | | else if (item.accectType == "TW") this.twM = item; |
| | | else if (item.accectType == "IN") this.inM = item; |
| | | else if (item.accectType == "HK") this.hkM = item; |
| | | }); |
| | | } |
| | | }, |
| | | // 划转上下调换 |
| | | onSwap() { |
| | | let a = this.cValue, |
| | | b = this.dValue; |
| | | this.cValue = b; |
| | | this.dValue = a; |
| | | }, |
| | | // 选择 |
| | | onSelect(action) { |
| | | this.cValue = action; |
| | | }, |
| | | // 选择 |
| | | onSelect1(action) { |
| | | this.dValue = action; |
| | | }, |
| | | async submit() { |
| | | let opt = { |
| | | fromType: this.cValue.value, |
| | | toType: this.dValue.value, |
| | | amt: this.moneyRevise |
| | | }; |
| | | let data = await api.transfer(opt); |
| | | if (data.status === 0) { |
| | | Toast.success(this.$t(data.msg)); |
| | | this.getMoney(); |
| | | } |
| | | } |
| | | } |
| | | }; |
| | | </script> |
| | | |
| | | <style lang="less" scoped> |
| | | /deep/ .van-nav-bar__content { |
| | | height: 65px; |
| | | } |
| | | |
| | | /deep/ .van-nav-bar__title { |
| | | font-family: "DINPro"; |
| | | width: 100%; |
| | | height: 1.17333em; |
| | | display: flex; |
| | | justify-content: center; |
| | | align-items: center; |
| | | font-style: normal; |
| | | font-weight: 700; |
| | | font-size: 0.48em; |
| | | color: #14181f; |
| | | } |
| | | .transfer_new { |
| | | padding: 0rem 0.25em 0.5em 0.25em; |
| | | width: 100%; |
| | | min-height: 100vh; |
| | | background: #fff; |
| | | font-size: 10vw; |
| | | .transfer_a { |
| | | font-size: 0.4em; |
| | | padding-top: 1em; |
| | | } |
| | | .butn { |
| | | width: 100%; |
| | | margin-top: 40px; |
| | | height: 60px; |
| | | border-radius: 8px; |
| | | background: #c4d600; |
| | | border: none; |
| | | } |
| | | .butn2 { |
| | | border-radius: 8px; |
| | | background: #c4d600; |
| | | border: none; |
| | | } |
| | | |
| | | .card { |
| | | background: #f7f7f7; |
| | | padding: 2em 1.2em; |
| | | border-radius: 0.5em; |
| | | font-size: 0.4em; |
| | | border: none; |
| | | |
| | | .lv { |
| | | color: #c4d600; |
| | | } |
| | | } |
| | | |
| | | .swap { |
| | | position: absolute; |
| | | top: 55%; |
| | | left: 50%; |
| | | transform: translate(-50%, -50%); |
| | | width: 1em; |
| | | } |
| | | |
| | | .hint { |
| | | font-size: 0.35em; |
| | | margin-bottom: 150px; |
| | | |
| | | span { |
| | | color: #333; |
| | | } |
| | | } |
| | | |
| | | .label_but { |
| | | color: #333; |
| | | } |
| | | |
| | | .transfer_label { |
| | | font-size: 0.4em; |
| | | } |
| | | } |
| | | </style> |
| | |
| | | }, |
| | | component: () => import("@/page/markets/markets.vue") |
| | | }, |
| | | { |
| | | path: "/transferNew", |
| | | name: "transferNew", |
| | | meta: { |
| | | title: i18n.t("划转"), |
| | | requireAuth: true, |
| | | index: 1 |
| | | }, |
| | | component: () => import("@/page/user/transferNew.vue") |
| | | }, |
| | | // AI量化交易 |
| | | { |
| | | path: "/aiTrading", |