22 files modified
2 files added
| | |
| | | export function getIndexOrderList(options) { |
| | | return post("/user/index/position/list.do", options); |
| | | } |
| | | // 获取我的持仓单 - 指数 |
| | | // 获取我的持仓单 - 股票 |
| | | export function findByPostionSn(options) { |
| | | return post("/user/position/findByPostionSn.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"> |
| | |
| | | this.getInfoSite(); |
| | | }, |
| | | methods: { |
| | | // 跳转客服页面 |
| | | aRouter1() { |
| | | // 跳转客服页面 |
| | | window.open(this.onlineService); |
| | | }, |
| | | // 获取客服地址 |
| | | async getInfoSite() { |
| | | // 获取客服地址 |
| | | let data = await api.getInfoSite(); |
| | | if (data.status === 0) { |
| | | this.onlineService = data.data.onlineService; |
| | |
| | | // 跳转设置页面 |
| | | this.$router.push("/setting"); |
| | | }, |
| | | onLoad: handleDt.throttle(async function(a, b) { |
| | | onLoad: handleDt.throttle(async function (a, b) { |
| | | // 搜索列表加载 |
| | | this.finished = false; |
| | | let opt = { |
| | |
| | | "yszc": "Privacy Policy", |
| | | "zgzs": "Qualification certificate", |
| | | "ysmrz": "Real-name authenticated", |
| | | "dlan": "Log in", |
| | | "dlan": "Login", |
| | | "dltips": "After logging in, you can start real/simulated trading.", |
| | | "usertop": "Total account assets (USD)", |
| | | "pcje": "Closing amount", |
| | |
| | | "aym": "Accumulated P/L(INR)", |
| | | "disana": "Frozen assets (INR)", |
| | | "disan": "Available Assets (INR)", |
| | | "setting": "Set up", |
| | | "setting": "Setting", |
| | | "caidan": "Qualification", |
| | | "bz": "Help", |
| | | "kf": "Customer Service", |
| | |
| | | "wjs": "Unsettlement", |
| | | "wei": "Not yet", |
| | | "yi": "Already", |
| | | "sqz": "Applying", |
| | | "sqz": "Pending Approval", |
| | | "sptg": "Approved", |
| | | "sqsb": "Approval Failed", |
| | | "shjj": "Review rejected", |
| | | "dkffcg": "The loan was issued successfully", |
| | | "dkjg": "Lending institution", |
| | |
| | | "hj61": "Optional", |
| | | "hj62": "Market", |
| | | "hj620": "Limit Down", |
| | | "hj621": "Cap discount stock", |
| | | "hj621": "Block Trading", |
| | | "hj63": "Shanghai, Shenzhen and Beijing", |
| | | "hj64": "Science and technology innovation", |
| | | "hj65": "US stocks", |
| | |
| | | "hj140": "Failed to close position, not within trading hours", |
| | | "hj142": "Switch index account", |
| | | "hj143": "Switch between Shanghai and Shenzhen accounts", |
| | | "hj144": "Change Password", |
| | | "hj144": "Login password", |
| | | "hj145": "Funds transfer", |
| | | "hj146": "Verify", |
| | | "hj1461": "Download App", |
| | | "hj147": "Bind Bank Card", |
| | | "hj147": "Bank Cards", |
| | | "hj148": "Sign out", |
| | | "hj149": "Are you sure you want to log out?", |
| | | "hj150": "Old Password", |
| | |
| | | "当前充值渠道已关闭请选择在线客服进行充值。": "The current recharge channel has been closed Please choose online customer service to recharge.", |
| | | "删除": "Delete", |
| | | "快捷方式": "Quick Access", |
| | | "量化交易": "Quantitative trading", |
| | | "理财基金": "Wealth management fund", |
| | | "量化交易": "AI Quantitative trading", |
| | | "理财基金": "Fund Investment", |
| | | "美股指数": "Us stock index", |
| | | "墨西哥指数": "Mexican Index", |
| | | "更多新闻": "More news", |
| | |
| | | "日内":"In the meantime", |
| | | "建仓成本":"Position-building cost", |
| | | "已申购":"Already purchased", |
| | | "hj316": "Please enter bank cardholder name" |
| | | "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" |
| | | } |
| | |
| | | "yjs": "Liquidado", |
| | | "wei": "No", |
| | | "yi": "Sí", |
| | | "sqz": "En Solicitud", |
| | | "sqz": "Pendiente de aprobación", |
| | | "sptg": "Aprobado", |
| | | "sqsb": "Aprobación fallida", |
| | | "shjj": "Rechazado", |
| | | "dkffcg": "Desembolso de Préstamo Exitoso", |
| | | "dkjg": "Institución Crediticia", |
| | |
| | | "hj141": "Tasa de Ganancia/Pérdida", |
| | | "hj142": "Cambiar a Cuenta de Índices", |
| | | "hj143": "Cambiar a Cuenta SH/SZ/BJ", |
| | | "hj144": "Cambiar Contraseña", |
| | | "hj144": "Cambiar contraseña de acceso", |
| | | "hj145": "Transferencia de Fondos", |
| | | "hj146": "Verificar", |
| | | "hj1461": "Descargar App", |
| | | "hj147": "Vincular Tarjeta Bancaria", |
| | | "hj147": "Agregar cuenta bancaria", |
| | | "hj148": "Cerrar Sesión", |
| | | "hj149": "¿Confirmar cierre de sesión?", |
| | | "hj150": "Contraseña Anterior", |
| | |
| | | "hj192": "Ingrese el monto a transferir", |
| | | "hj193": "Confirmar transferencia a cuenta de índices", |
| | | "hj194": "Confirmar transferencia a cuenta de financiamiento", |
| | | "hj195": "Nombre Real", |
| | | "hj195": "Nombre real", |
| | | "hj196": "Número de Identificación", |
| | | "hj197": "Frente de Identificación", |
| | | "hj198": "Subiendo...", |
| | |
| | | "当前充值渠道已关闭请选择在线客服进行充值。": "Canal de recarga cerrado, contacte servicio al cliente.", |
| | | "删除": "Eliminar", |
| | | "快捷方式": "Accesos Rápidos", |
| | | "量化交易": "Trading Cuantitativo", |
| | | "量化交易": "Negociación cuantitativa de IA", |
| | | "理财基金": "Fondos de Inversión", |
| | | "美股指数": "Índices EE.UU.", |
| | | "墨西哥指数": "Índices México", |
| | |
| | | "日内": "Intradía", |
| | | "建仓成本": "Costo de Apertura", |
| | | "已申购": "Suscrito", |
| | | "hj316": "Introduzca el nombre del titular de la tarjeta bancaria" |
| | | "hj316": "Introduzca el nombre del titular de la tarjeta bancaria", |
| | | "Password": "contraseña", |
| | | "rnv":"Verificación de identidad", |
| | | "it1":"Tipo de identificación", |
| | | "dl1":"Licencia de conducir", |
| | | "pa1":"Pasaporte", |
| | | "ot1":"Otro", |
| | | "in1":"Número de identificación", |
| | | "fsi1":"Foto frontal del ID", |
| | | "bsi1":"Foto trasera del ID", |
| | | "uv1":"En verificación", |
| | | "sc":"Código de existencias", |
| | | "abc":"Añadir tarjeta bancaria" |
| | | } |
| New file |
| | |
| | | <template> |
| | | <div class="bank_card_page"> |
| | | <van-nav-bar :placeholder="true" :safe-area-inset-top="true" :title="$t('rnv')" left-arrow |
| | | @click-left="$router.go(-1)"> |
| | | </van-nav-bar> |
| | | <div class="content"> |
| | | <!-- <div class="top_back"> |
| | | <div class="left_back_icon" @click="$router.go(-1)"> |
| | | <img src="../../assets/img/zuojiantou.png" alt /> |
| | | </div> |
| | | </div> --> |
| | | <!-- <div class="titles"> |
| | | <span>{{ $t("hj146") }}</span> |
| | | </div> --> |
| | | <div class="bank_name"> |
| | | <div class="lefts"> |
| | | <span>{{ $t("hj195") + ":" }}</span> |
| | | </div> |
| | | <div class="rights"> |
| | | <input v-if="showBtn" type="text" placeholder="Please enter your Name" v-model="form.name" /> |
| | | |
| | | <input v-if="!showBtn" type="text" v-model="form.name" readonly /> |
| | | </div> |
| | | </div> |
| | | <div class="bank_name"> |
| | | <div class="lefts"> |
| | | <span>{{ $t("hj196") + ":" }}</span> |
| | | </div> |
| | | <div class="rights"> |
| | | <input v-if="showBtn" type="text" placeholder="Please enter your Aadhaar card" v-model="form.idCard" /> |
| | | <input v-if="!showBtn" type="text" v-model="form.idCard" readonly /> |
| | | </div> |
| | | </div> |
| | | <div class="bank_name"> |
| | | <div class="lefts"> |
| | | <span>{{ $t("电话号码") + ":" }}</span> |
| | | </div> |
| | | <div class="rights"> |
| | | <input v-if="showBtn" type="text" placeholder="Please enter your telephone number" |
| | | v-model="form.vaildNumber" /> |
| | | <input v-if="!showBtn" type="text" v-model="form.vaildNumber" readonly /> |
| | | </div> |
| | | </div> |
| | | <div class="uploads"> |
| | | <div class="lefts"> |
| | | <el-upload :with-credentials="true" class="avatar-uploader" :action="admin + 'user/upload.do'" |
| | | list-type="picture-card" name="upload_file" :show-file-list="false" :on-success="handleAvatarSuccess" |
| | | :on-error="handleError" :before-upload="beforeAvatarUpload" :disabled="!showBtn"> |
| | | <img v-if="form.img1key" :src="form.img1key" class="id-img avatar" style="width: 100%; height: 100%" /> |
| | | <i v-else class="iconfont icon-zhaopian"></i> |
| | | <span v-if="!form.img1key && !imgStatus" class="btn-title">{{ |
| | | $t("hj197") |
| | | }}</span> |
| | | <span v-if="imgStatus" class="btn-title">{{ $t("hj198") }}</span> |
| | | </el-upload> |
| | | </div> |
| | | <div class="rights"> |
| | | <el-upload :with-credentials="true" class="avatar-uploader" :action="admin + 'user/upload.do'" |
| | | list-type="picture-card" name="upload_file" :show-file-list="false" :on-success="handleAvatarSuccess2" |
| | | :on-error="handleError2" :before-upload="beforeAvatarUpload2" :disabled="!showBtn"> |
| | | <img v-if="form.img2key" :src="form.img2key" class="id-img avatar" style="width: 100%; height: 100%" /> |
| | | <i v-else class="iconfont icon-zhaopian"></i> |
| | | <span v-if="!form.img2key && !imgStatus2" class="btn-title">{{ |
| | | $t("hj199") |
| | | }}</span> |
| | | <span v-if="imgStatus2" class="btn-title">{{ $t("hj198") }}</span> |
| | | </el-upload> |
| | | </div> |
| | | </div> |
| | | <div class="bank_name bind" @click="toSure" v-if="showBtn"> |
| | | <span>{{ $t("hj161") }}</span> |
| | | </div> |
| | | <van-notify v-model="messFlag" type="primary"> |
| | | <div> |
| | | <div class="eft"> |
| | | <span>{{ $t("hj200") }}</span> |
| | | </div> |
| | | <div class="bft"> |
| | | <span>{{ $t("hj201") }}:{{ this.$store.state.userInfo.authMsg }}</span> |
| | | </div> |
| | | </div> |
| | | </van-notify> |
| | | <div class="pass"> |
| | | <div class="top_t"> |
| | | <img v-if="this.$store.state.userInfo.isActive == 1" src="../../../static/img/bd_shz.png" /> |
| | | <span v-if="this.$store.state.userInfo.isActive == 1" class="ise_pass">{{ $t("hj202") }}</span> |
| | | <img v-if="!showBtn && this.$store.state.userInfo.isActive != 1" src="../../../static/img/bd_suessce.png" /> |
| | | <span v-if="!showBtn && this.$store.state.userInfo.isActive != 1">{{ |
| | | $t("hj203") |
| | | }}</span> |
| | | <img v-if="showBtn" src="../../../static/img/bd_fail.png" /> |
| | | <span v-if="showBtn" class="ise_pass">{{ $t("hj204") }}</span> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </template> |
| | | |
| | | <script> |
| | | import * as api from "@/axios/api"; |
| | | import { Toast } from "mint-ui"; |
| | | import { isNull, idCardReg, isName } from "@/utils/utils"; |
| | | import { compress } from "@/utils/imgupload"; |
| | | import apiUrl from "@/axios/api.url.js"; |
| | | export default { |
| | | name: "bankCard", |
| | | data() { |
| | | return { |
| | | form: { |
| | | phone: "", |
| | | name: "", |
| | | idCard: "", |
| | | vaildNumber: "", |
| | | img1key: "", |
| | | img2key: "", |
| | | img3key: "", |
| | | }, |
| | | img1Key: "", |
| | | img2Key: "", |
| | | img3Key: "", |
| | | showBtn: true, |
| | | admin: apiUrl.baseURL, |
| | | imgStatus: false, |
| | | imgStatus2: false, |
| | | messFlag: this.$store.state.userInfo.isActive == 3 ? true : false, |
| | | }; |
| | | }, |
| | | created() { |
| | | this.getUserInfo(); |
| | | }, |
| | | |
| | | beforeDestroy() { |
| | | if (this.$state.theme == "red") { |
| | | document.body.classList.remove("red-bg"); |
| | | document.body.classList.add("black-bg"); |
| | | } |
| | | }, |
| | | mounted() { |
| | | if (this.$state.theme == "red") { |
| | | document.body.classList.remove("black-bg"); |
| | | document.body.classList.add("red-bg"); |
| | | } |
| | | }, |
| | | methods: { |
| | | handleAvatarSuccess(res, file) { |
| | | this.imgStatus = false; |
| | | this.form.img1key = res.data.url; |
| | | }, |
| | | beforeAvatarUpload(file) { |
| | | this.imgStatus = true; |
| | | }, |
| | | handleError() { |
| | | this.imgStatus = false; |
| | | }, |
| | | handleAvatarSuccess2(res, file) { |
| | | this.imgStatus2 = false; |
| | | this.form.img2key = res.data.url; // URL.createObjectURL(file.raw); |
| | | }, |
| | | beforeAvatarUpload2(file) { |
| | | this.imgStatus2 = true; |
| | | const isLt10M = file.size / 1024 / 1024 < 10; |
| | | if (!isLt10M) { |
| | | this.$message.error(this.$t("hj205")); |
| | | return false; |
| | | } else { |
| | | this.form.img2key = URL.createObjectURL(file); |
| | | compress(file, function (val) { }); |
| | | } |
| | | }, |
| | | handleError2() { |
| | | this.imgStatus2 = false; |
| | | }, |
| | | handleAvatarSuccess3(res, file) { |
| | | this.form.img3key = res.data.url; // URL.createObjectURL(file.raw); |
| | | }, |
| | | async getUserInfo() { |
| | | // 获取用户信息 |
| | | let data = await api.getUserInfodata(); |
| | | if (data.status === 0) { |
| | | // 判断是否登录 |
| | | this.$store.commit("dialogVisible", false); |
| | | this.$store.state.userInfo = data.data; |
| | | this.userInfo = data.data; |
| | | if ( |
| | | this.$store.state.userInfo.isActive === 1 || |
| | | this.$store.state.userInfo.isActive === 2 |
| | | ) { |
| | | this.form.idCard = this.$store.state.userInfo.idCard; |
| | | this.form.vaildNumber = this.$store.state.userInfo.vaildNumber; |
| | | this.form.name = this.$store.state.userInfo.realName; |
| | | this.form.img1key = this.$store.state.userInfo.img1Key; |
| | | this.form.img2key = this.$store.state.userInfo.img2Key; |
| | | this.showBtn = false; |
| | | } |
| | | } else { |
| | | //this.$store.commit('dialogVisible',true); |
| | | //跳转到login |
| | | this.$router.push({ path: "/login" }); |
| | | } |
| | | }, |
| | | beforeAvatarUpload3(file) { }, |
| | | // 上传 |
| | | handleFile: function (e) { |
| | | // var that = this |
| | | let $target = e.target || e.srcElement; |
| | | let file = $target.files[0]; |
| | | // if(file.size > 1024 * 1024 *20){ |
| | | console.log(file, "file"); |
| | | let i = false; |
| | | if (i) { |
| | | Toast(this.$t("hj206")); |
| | | } else { |
| | | this.img1Key = file; |
| | | var reader = new FileReader(); |
| | | reader.onload = (data) => { |
| | | let res = data.target || data.srcElement; |
| | | this.form.img1Key = res.result; |
| | | // Indicator.close() |
| | | }; |
| | | |
| | | reader.readAsDataURL(file); |
| | | } |
| | | }, |
| | | toSure() { |
| | | // 实名认证弹框 |
| | | if (isNull(this.form.name)) { |
| | | Toast(this.$t("hj207")); |
| | | } else if (isNull(this.form.idCard)) { |
| | | Toast(this.$t("hj208")); |
| | | } else if (!this.form.img1key) { |
| | | Toast(this.$t("hj209")); |
| | | } else if (!this.form.img2key) { |
| | | Toast(this.$t("hj209")); |
| | | } else { |
| | | // 显示确认弹窗 |
| | | this.toAuthentication(); |
| | | } |
| | | }, |
| | | async toAuthentication() { |
| | | let opts = { |
| | | realName: this.form.name, |
| | | idCard: this.form.idCard, |
| | | vaildNumber: this.form.vaildNumber, |
| | | img1key: this.form.img1key, |
| | | img2key: this.form.img2key, |
| | | img3key: this.form.img3key, |
| | | }; |
| | | let data = await api.userAuth(opts); |
| | | if (data.status === 0) { |
| | | Toast(this.$t("hj210")); |
| | | this.goBack(); |
| | | } else { |
| | | Toast(data.msg); |
| | | } |
| | | }, |
| | | goBack() { |
| | | this.$router.back(-1); |
| | | }, |
| | | }, |
| | | }; |
| | | </script> |
| | | |
| | | <style scoped lang="less"> |
| | | @green: #c4d600; |
| | | |
| | | /deep/ .van-nav-bar__content { |
| | | height: 65px; |
| | | } |
| | | |
| | | /deep/ .van-nav-bar__title { |
| | | font-family: "DINPro"; |
| | | width: 100%; |
| | | height: 1.17333rem; |
| | | display: flex; |
| | | justify-content: center; |
| | | align-items: center; |
| | | font-style: normal; |
| | | font-weight: 500; |
| | | font-size: 0.48rem; |
| | | color: #14181f; |
| | | } |
| | | |
| | | .bank_card_page { |
| | | width: 100%; |
| | | height: 100%; |
| | | background: #fff; |
| | | position: relative; |
| | | |
| | | .content { |
| | | width: 100%; |
| | | height: 100vh; |
| | | padding: 0 0.6rem; |
| | | |
| | | .top_back { |
| | | width: 100%; |
| | | height: 2rem; |
| | | |
| | | >div { |
| | | width: 10%; |
| | | height: 100%; |
| | | display: flex; |
| | | align-items: center; |
| | | } |
| | | |
| | | img { |
| | | width: 0.6rem; |
| | | height: 0.6rem; |
| | | } |
| | | } |
| | | |
| | | .titles { |
| | | width: 100%; |
| | | height: 1.5rem; |
| | | font-size: 0.641rem; |
| | | margin-top: 1rem; |
| | | |
| | | span { |
| | | font-weight: 600; |
| | | } |
| | | } |
| | | } |
| | | |
| | | .bank_name { |
| | | width: 100%; |
| | | height: 1.5rem; |
| | | display: flex; |
| | | padding: 0 0.2rem; |
| | | background: rgb(247, 247, 247); |
| | | border-radius: 0.2rem; |
| | | margin-top: 0.3rem; |
| | | |
| | | .lefts { |
| | | width: 36%; |
| | | height: 100%; |
| | | display: flex; |
| | | align-items: center; |
| | | font-size: 0.3846rem; |
| | | |
| | | span { |
| | | font-weight: 600; |
| | | } |
| | | } |
| | | |
| | | .rights { |
| | | width: 75%; |
| | | height: 100%; |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: center; |
| | | |
| | | input { |
| | | width: 100%; |
| | | height: 100%; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | .bank_name.bind { |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: center; |
| | | background: @green; |
| | | font-size: 0.4103rem; |
| | | color: #fff; |
| | | |
| | | span { |
| | | font-weight: 600; |
| | | } |
| | | } |
| | | |
| | | .uploads { |
| | | width: 100%; |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: space-between; |
| | | margin-top: 0.3rem; |
| | | |
| | | >div { |
| | | width: 48%; |
| | | background: rgb(247, 247, 247); |
| | | } |
| | | } |
| | | |
| | | /deep/ .el-upload--picture-card { |
| | | background: none; |
| | | width: 100%; |
| | | height: 100PX; |
| | | line-height: 1.6rem; |
| | | } |
| | | |
| | | /deep/ .el-upload__input { |
| | | display: none; |
| | | } |
| | | |
| | | .pass { |
| | | width: 100%; |
| | | display: flex; |
| | | justify-content: center; |
| | | align-items: center; |
| | | height: auto; |
| | | // position: absolute; |
| | | // top: 1.72rem; |
| | | // right: .2rem; |
| | | // opacity: 0.2; |
| | | |
| | | .top_t { |
| | | width: 100%; |
| | | height: auto; |
| | | display: flex; |
| | | flex-direction: column; |
| | | justify-content: center; |
| | | font-size: 80px; |
| | | color: #3ac23e; |
| | | align-items: center; |
| | | |
| | | img { |
| | | width: 64px; |
| | | height: 64px; |
| | | margin-top: 200px; |
| | | margin-bottom: 20px; |
| | | } |
| | | |
| | | span { |
| | | font-size: 30px; |
| | | } |
| | | } |
| | | |
| | | .ise_pass { |
| | | font-size: 80px; |
| | | } |
| | | } |
| | | </style> |
| | |
| | | <template> |
| | | <div class="bank_card_page"> |
| | | <van-nav-bar |
| | | :placeholder="true" |
| | | :safe-area-inset-top="true" |
| | | title="KYC" |
| | | left-arrow |
| | | @click-left="$router.go(-1)" |
| | | > |
| | | <div class="authentication-container"> |
| | | <van-nav-bar :placeholder="true" :safe-area-inset-top="true" :title="$t('rnv')" left-arrow |
| | | @click-left="$router.go(-1)"> |
| | | </van-nav-bar> |
| | | <div class="content"> |
| | | <!-- <div class="top_back"> |
| | | <div class="left_back_icon" @click="$router.go(-1)"> |
| | | <img src="../../assets/img/zuojiantou.png" alt /> |
| | | </div> |
| | | </div> --> |
| | | <!-- <div class="titles"> |
| | | <span>{{ $t("hj146") }}</span> |
| | | </div> --> |
| | | <div class="bank_name"> |
| | | <div class="lefts"> |
| | | <span>{{ $t("hj195") + ":" }}</span> |
| | | </div> |
| | | <div class="rights"> |
| | | <input |
| | | v-if="showBtn" |
| | | type="text" |
| | | placeholder="Please enter your Name" |
| | | v-model="form.name" |
| | | /> |
| | | |
| | | <input v-if="!showBtn" type="text" v-model="form.name" readonly /> |
| | | </div> |
| | | </div> |
| | | <div class="bank_name"> |
| | | <div class="lefts"> |
| | | <span>{{ $t("hj196") + ":" }}</span> |
| | | </div> |
| | | <div class="rights"> |
| | | <input |
| | | v-if="showBtn" |
| | | type="text" |
| | | placeholder="Please enter your Aadhaar card" |
| | | v-model="form.idCard" |
| | | /> |
| | | <input v-if="!showBtn" type="text" v-model="form.idCard" readonly /> |
| | | </div> |
| | | </div> |
| | | <div class="bank_name"> |
| | | <div class="lefts"> |
| | | <span>{{ $t("电话号码") + ":" }}</span> |
| | | </div> |
| | | <div class="rights"> |
| | | <input |
| | | v-if="showBtn" |
| | | type="text" |
| | | placeholder="Please enter your telephone number" |
| | | v-model="form.vaildNumber" |
| | | /> |
| | | <input |
| | | v-if="!showBtn" |
| | | type="text" |
| | | v-model="form.vaildNumber" |
| | | readonly |
| | | /> |
| | | </div> |
| | | </div> |
| | | <div class="uploads"> |
| | | <div class="lefts"> |
| | | <el-upload |
| | | :with-credentials="true" |
| | | class="avatar-uploader" |
| | | :action="admin + 'user/upload.do'" |
| | | list-type="picture-card" |
| | | name="upload_file" |
| | | :show-file-list="false" |
| | | :on-success="handleAvatarSuccess" |
| | | :on-error="handleError" |
| | | :before-upload="beforeAvatarUpload" |
| | | :disabled="!showBtn" |
| | | > |
| | | <img |
| | | v-if="form.img1key" |
| | | :src="form.img1key" |
| | | class="id-img avatar" |
| | | style="width: 100%; height: 100%" |
| | | /> |
| | | <i v-else class="iconfont icon-zhaopian"></i> |
| | | <span v-if="!form.img1key && !imgStatus" class="btn-title">{{ |
| | | $t("hj197") |
| | | }}</span> |
| | | <span v-if="imgStatus" class="btn-title">{{ $t("hj198") }}</span> |
| | | </el-upload> |
| | | </div> |
| | | <div class="rights"> |
| | | <el-upload |
| | | :with-credentials="true" |
| | | class="avatar-uploader" |
| | | :action="admin + 'user/upload.do'" |
| | | list-type="picture-card" |
| | | name="upload_file" |
| | | :show-file-list="false" |
| | | :on-success="handleAvatarSuccess2" |
| | | :on-error="handleError2" |
| | | :before-upload="beforeAvatarUpload2" |
| | | :disabled="!showBtn" |
| | | > |
| | | <img |
| | | v-if="form.img2key" |
| | | :src="form.img2key" |
| | | class="id-img avatar" |
| | | style="width: 100%; height: 100%" |
| | | /> |
| | | <i v-else class="iconfont icon-zhaopian"></i> |
| | | <span v-if="!form.img2key && !imgStatus2" class="btn-title">{{ |
| | | $t("hj199") |
| | | }}</span> |
| | | <span v-if="imgStatus2" class="btn-title">{{ $t("hj198") }}</span> |
| | | </el-upload> |
| | | </div> |
| | | </div> |
| | | <div class="bank_name bind" @click="toSure" v-if="showBtn"> |
| | | <span>{{ $t("hj161") }}</span> |
| | | </div> |
| | | <van-notify v-model="messFlag" type="primary"> |
| | | <div> |
| | | <div class="eft"> |
| | | <span>{{ $t("hj200") }}</span> |
| | | </div> |
| | | <div class="bft"> |
| | | <span |
| | | >{{ $t("hj201") }}:{{ this.$store.state.userInfo.authMsg }}</span |
| | | > |
| | | </div> |
| | | </div> |
| | | </van-notify> |
| | | <div class="pass"> |
| | | <div class="top_t"> |
| | | <img |
| | | v-if="this.$store.state.userInfo.isActive == 1" |
| | | src="../../../static/img/bd_shz.png" |
| | | /> |
| | | <span |
| | | v-if="this.$store.state.userInfo.isActive == 1" |
| | | class="ise_pass" |
| | | >{{ $t("hj202") }}</span |
| | | > |
| | | <img |
| | | v-if="!showBtn && this.$store.state.userInfo.isActive != 1" |
| | | src="../../../static/img/bd_suessce.png" |
| | | /> |
| | | <span v-if="!showBtn && this.$store.state.userInfo.isActive != 1">{{ |
| | | $t("hj203") |
| | | }}</span> |
| | | <img v-if="showBtn" src="../../../static/img/bd_fail.png" /> |
| | | <span v-if="showBtn" class="ise_pass">{{ $t("hj204") }}</span> |
| | | </div> |
| | | </div> |
| | | <div style="width: 100%; height: .25em; background-color: #f8f8f8"></div> |
| | | |
| | | <div class="form-group" :class="{ 'disabled': isSubmitting || isActive }"> |
| | | <label class="required-label">{{ $t('hj195') }}</label> |
| | | <input type="text" v-model="form.name" class="form-input" :disabled="isActive" /> |
| | | </div> |
| | | |
| | | <div class="form-group" :class="{ 'disabled': isSubmitting || isActive }"> |
| | | <label class="required-label">{{ $t('it1') }}</label> |
| | | <van-radio-group v-model="auRadio" direction="horizontal" disabled style="font-size: 3.5vw;margin-top: 1em;"> |
| | | <van-radio name="1">{{ $t('dl1') }}</van-radio> |
| | | <van-radio name="2">{{ $t('pa1') }}</van-radio> |
| | | <van-radio name="3">{{ $t('ot1') }}</van-radio> |
| | | </van-radio-group> |
| | | </div> |
| | | |
| | | <div class="form-group" :class="{ 'disabled': isSubmitting || isActive }"> |
| | | <label class="required-label">{{ $t('in1') }}</label> |
| | | <input type="text" v-model="form.idCard" class="form-input" :disabled="isActive" /> |
| | | </div> |
| | | |
| | | <div class="form-group" :class="{ 'disabled': isSubmitting || isActive }"> |
| | | <label class="required-label">{{ $t("电话号码") }}</label> |
| | | <input type="text" v-model="form.vaildNumber" class="form-input" :disabled="isActive" /> |
| | | </div> |
| | | |
| | | <div style="width: 100%; height: .25em; background-color: #f8f8f8"></div> |
| | | |
| | | <div class="form-group flex-between" :class="{ 'disabled': isSubmitting || isActive }"> |
| | | <label class="required-label">{{ $t('fsi1') }}</label> |
| | | |
| | | <el-upload :with-credentials="true" class="avatar-uploader" :action="admin + 'user/upload.do'" |
| | | list-type="picture-card" name="upload_file" :show-file-list="false" :on-success="handleAvatarSuccess" |
| | | :on-error="handleError" :before-upload="beforeAvatarUpload" :disabled="isActive"> |
| | | <img v-if="form.img1key" :src="form.img1key" class="id-img avatar" style="width: 100%; height: 100%" /> |
| | | <i v-else class="iconfont icon-zhaopian"></i> |
| | | </el-upload> |
| | | </div> |
| | | |
| | | <div class="form-group flex-between" :class="{ 'disabled': isSubmitting || isActive }"> |
| | | <label class="required-label">{{ $t('bsi1') }}</label> |
| | | |
| | | <el-upload :with-credentials="true" class="avatar-uploader" :action="admin + 'user/upload.do'" |
| | | list-type="picture-card" name="upload_file" :show-file-list="false" :on-success="handleAvatarSuccess2" |
| | | :on-error="handleError2" :before-upload="beforeAvatarUpload2" :disabled="isActive"> |
| | | <img v-if="form.img2key" :src="form.img2key" class="id-img avatar" style="width: 100%; height: 100%" /> |
| | | <i v-else class="iconfont icon-zhaopian"></i> |
| | | </el-upload> |
| | | </div> |
| | | |
| | | <div style="width: 100%; height: .25em; background-color: #f8f8f8"></div> |
| | | |
| | | <div class="submit-button" :class="{ 'disabled': isSubmitting || isActive }" @click="toSure"> |
| | | <span>{{ $t("uv1") }}</span> |
| | | </div> |
| | | </div> |
| | | </template> |
| | | |
| | | <script> |
| | | import * as api from "@/axios/api"; |
| | | import { Toast } from "mint-ui"; |
| | | import { isNull, idCardReg, isName } from "@/utils/utils"; |
| | | import { compress } from "@/utils/imgupload"; |
| | | import apiUrl from "@/axios/api.url.js"; |
| | | import { compress } from "@/utils/imgupload"; |
| | | import { isNull } from "@/utils/utils"; |
| | | import { Toast } from "vant"; |
| | | export default { |
| | | name: "bankCard", |
| | | name: 'Authentication', |
| | | data() { |
| | | return { |
| | | frontImage: '', |
| | | backImage: '', |
| | | isSubmitting: false, |
| | | auRadio: '1', |
| | | form: { |
| | | phone: "", |
| | | name: "", |
| | |
| | | vaildNumber: "", |
| | | img1key: "", |
| | | img2key: "", |
| | | img3key: "", |
| | | }, |
| | | img1Key: "", |
| | | img2Key: "", |
| | | img3Key: "", |
| | | showBtn: true, |
| | | admin: apiUrl.baseURL, |
| | | imgStatus: false, |
| | | imgStatus2: false, |
| | | messFlag: this.$store.state.userInfo.isActive == 3 ? true : false, |
| | | }; |
| | | admin: apiUrl.baseURL, |
| | | } |
| | | }, |
| | | computed: { |
| | | //注册默认0 1.提交未实名 2.已实名 3.驳回, 状态1||2的时候屏蔽所有的输入 |
| | | isActive() { |
| | | return this.$store.state.userInfo.isActive == 1 || this.$store.state.userInfo.isActive == 2; |
| | | // return false; |
| | | } |
| | | }, |
| | | created() { |
| | | this.getUserInfo(); |
| | | }, |
| | | |
| | | beforeDestroy() { |
| | | if (this.$state.theme == "red") { |
| | | document.body.classList.remove("red-bg"); |
| | | document.body.classList.add("black-bg"); |
| | | } |
| | | }, |
| | | mounted() { |
| | | if (this.$state.theme == "red") { |
| | | document.body.classList.remove("black-bg"); |
| | | document.body.classList.add("red-bg"); |
| | | } |
| | | // 可以在这里加载用户已有的认证信息 |
| | | // 如果用户已经提交过认证信息,可以显示认证状态 |
| | | }, |
| | | methods: { |
| | | handleAvatarSuccess(res, file) { |
| | | this.imgStatus = false; |
| | | this.form.img1key = res.data.url; |
| | | }, |
| | | beforeAvatarUpload(file) { |
| | | this.imgStatus = true; |
| | | }, |
| | | handleError() { |
| | | this.imgStatus = false; |
| | | }, |
| | | handleAvatarSuccess2(res, file) { |
| | | this.imgStatus2 = false; |
| | | this.form.img2key = res.data.url; // URL.createObjectURL(file.raw); |
| | | }, |
| | | beforeAvatarUpload2(file) { |
| | | this.imgStatus2 = true; |
| | | const isLt10M = file.size / 1024 / 1024 < 10; |
| | | if (!isLt10M) { |
| | | this.$message.error(this.$t("hj205")); |
| | | return false; |
| | | |
| | | toSure() { |
| | | if (this.isSubmitting || this.isActive) return // 防止重复提交 |
| | | // 实名认证弹框 |
| | | if (isNull(this.form.name)) { |
| | | Toast(this.$t("hj207")); |
| | | } else if (isNull(this.form.idCard)) { |
| | | Toast(this.$t("hj208")); |
| | | } else if (!this.form.img1key) { |
| | | Toast(this.$t("hj209")); |
| | | } else if (!this.form.img2key) { |
| | | Toast(this.$t("hj209")); |
| | | } else { |
| | | this.form.img2key = URL.createObjectURL(file); |
| | | compress(file, function (val) {}); |
| | | // 显示确认弹窗 |
| | | this.toAuthentication(); |
| | | } |
| | | }, |
| | | handleError2() { |
| | | this.imgStatus2 = false; |
| | | }, |
| | | handleAvatarSuccess3(res, file) { |
| | | this.form.img3key = res.data.url; // URL.createObjectURL(file.raw); |
| | | async toAuthentication() { |
| | | this.isSubmitting = true |
| | | |
| | | let opts = { |
| | | realName: this.form.name, |
| | | idCard: this.form.idCard, |
| | | vaildNumber: this.form.vaildNumber, |
| | | img1key: this.form.img1key, |
| | | img2key: this.form.img2key, |
| | | img3key: this.form.img3key, |
| | | }; |
| | | let data = await api.userAuth(opts); |
| | | if (data.status === 0) { |
| | | Toast(this.$t("hj210")); |
| | | this.goBack(); |
| | | } else { |
| | | Toast(data.msg); |
| | | } |
| | | this.isSubmitting = false |
| | | }, |
| | | async getUserInfo() { |
| | | // 获取用户信息 |
| | |
| | | this.$router.push({ path: "/login" }); |
| | | } |
| | | }, |
| | | beforeAvatarUpload3(file) {}, |
| | | // 上传 |
| | | handleFile: function (e) { |
| | | // var that = this |
| | | let $target = e.target || e.srcElement; |
| | | let file = $target.files[0]; |
| | | // if(file.size > 1024 * 1024 *20){ |
| | | console.log(file, "file"); |
| | | let i = false; |
| | | if (i) { |
| | | Toast(this.$t("hj206")); |
| | | handleAvatarSuccess(res, file) { |
| | | this.imgStatus = false; |
| | | this.form.img1key = res.data.url; |
| | | }, |
| | | beforeAvatarUpload(file) { |
| | | this.imgStatus = true; |
| | | }, |
| | | handleError() { |
| | | this.imgStatus = false; |
| | | }, |
| | | handleAvatarSuccess2(res, file) { |
| | | this.imgStatus2 = false; |
| | | this.form.img2key = res.data.url; // URL.createObjectURL(file.raw); |
| | | }, |
| | | beforeAvatarUpload2(file) { |
| | | this.imgStatus2 = true; |
| | | const isLt10M = file.size / 1024 / 1024 < 10; |
| | | if (!isLt10M) { |
| | | this.$message.error(this.$t("hj205")); |
| | | return false; |
| | | } else { |
| | | this.img1Key = file; |
| | | var reader = new FileReader(); |
| | | reader.onload = (data) => { |
| | | let res = data.target || data.srcElement; |
| | | this.form.img1Key = res.result; |
| | | // Indicator.close() |
| | | }; |
| | | |
| | | reader.readAsDataURL(file); |
| | | this.form.img2key = URL.createObjectURL(file); |
| | | compress(file, function (val) { }); |
| | | } |
| | | }, |
| | | toSure() { |
| | | // 实名认证弹框 |
| | | if (isNull(this.form.name)) { |
| | | Toast(this.$t("hj207")); |
| | | } else if (isNull(this.form.idCard)) { |
| | | Toast(this.$t("hj208")); |
| | | } else if (!this.form.img1key) { |
| | | Toast(this.$t("hj209")); |
| | | } else if (!this.form.img2key) { |
| | | Toast(this.$t("hj209")); |
| | | } else { |
| | | // 显示确认弹窗 |
| | | this.toAuthentication(); |
| | | } |
| | | handleError2() { |
| | | this.imgStatus2 = false; |
| | | }, |
| | | async toAuthentication() { |
| | | let opts = { |
| | | realName: this.form.name, |
| | | idCard: this.form.idCard, |
| | | vaildNumber: this.form.vaildNumber, |
| | | img1key: this.form.img1key, |
| | | img2key: this.form.img2key, |
| | | img3key: this.form.img3key, |
| | | }; |
| | | let data = await api.userAuth(opts); |
| | | if (data.status === 0) { |
| | | Toast(this.$t("hj210")); |
| | | this.goBack(); |
| | | } else { |
| | | Toast(data.msg); |
| | | } |
| | | }, |
| | | goBack() { |
| | | this.$router.back(-1); |
| | | }, |
| | | }, |
| | | }; |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <style scoped lang="less"> |
| | | <style lang="less" scoped> |
| | | @green: #c4d600; |
| | | /deep/ .van-nav-bar__content { |
| | | height: 65px; |
| | | } |
| | | /deep/ .van-nav-bar__title { |
| | | font-family: "DINPro"; |
| | | width: 100%; |
| | | height: 1.17333rem; |
| | | display: flex; |
| | | justify-content: center; |
| | | align-items: center; |
| | | font-style: normal; |
| | | font-weight: 500; |
| | | font-size: 0.48rem; |
| | | color: #14181f; |
| | | } |
| | | .bank_card_page { |
| | | width: 100%; |
| | | height: 100%; |
| | | background: #fff; |
| | | position: relative; |
| | | |
| | | .content { |
| | | width: 100%; |
| | | height: 100vh; |
| | | padding: 0 0.6rem; |
| | | |
| | | .top_back { |
| | | width: 100%; |
| | | height: 2rem; |
| | | |
| | | > div { |
| | | width: 10%; |
| | | height: 100%; |
| | | display: flex; |
| | | align-items: center; |
| | | } |
| | | |
| | | img { |
| | | width: 0.6rem; |
| | | height: 0.6rem; |
| | | } |
| | | } |
| | | |
| | | .titles { |
| | | width: 100%; |
| | | height: 1.5rem; |
| | | font-size: 0.641rem; |
| | | margin-top: 1rem; |
| | | |
| | | span { |
| | | font-weight: 600; |
| | | } |
| | | } |
| | | } |
| | | |
| | | .bank_name { |
| | | width: 100%; |
| | | height: 1.5rem; |
| | | display: flex; |
| | | padding: 0 0.2rem; |
| | | background: rgb(247, 247, 247); |
| | | border-radius: 0.2rem; |
| | | margin-top: 0.3rem; |
| | | |
| | | .lefts { |
| | | width: 36%; |
| | | height: 100%; |
| | | display: flex; |
| | | align-items: center; |
| | | font-size: 0.3846rem; |
| | | |
| | | span { |
| | | font-weight: 600; |
| | | } |
| | | } |
| | | |
| | | .rights { |
| | | width: 75%; |
| | | height: 100%; |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: center; |
| | | |
| | | input { |
| | | width: 100%; |
| | | height: 100%; |
| | | } |
| | | } |
| | | } |
| | | /deep/ .van-nav-bar__content { |
| | | height: 65px; |
| | | } |
| | | |
| | | .bank_name.bind { |
| | | /deep/ .van-nav-bar__title { |
| | | font-family: "DINPro"; |
| | | width: 100%; |
| | | height: 1.17333rem; |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: center; |
| | | background: @green; |
| | | font-size: 0.4103rem; |
| | | color: #fff; |
| | | |
| | | span { |
| | | font-weight: 600; |
| | | } |
| | | } |
| | | |
| | | .uploads { |
| | | width: 100%; |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: space-between; |
| | | margin-top: 0.3rem; |
| | | |
| | | > div { |
| | | width: 48%; |
| | | background: rgb(247, 247, 247); |
| | | } |
| | | } |
| | | |
| | | /deep/ .el-upload--picture-card { |
| | | background: none; |
| | | width: 100%; |
| | | height: 100PX; |
| | | line-height: 1.6rem; |
| | | font-style: normal; |
| | | font-weight: 700; |
| | | font-size: 0.48rem; |
| | | color: #14181f; |
| | | } |
| | | |
| | | /deep/ .el-upload__input { |
| | | display: none; |
| | | } |
| | | |
| | | .pass { |
| | | .authentication-container { |
| | | /* padding: 20px; */ |
| | | background-color: #ffffff; |
| | | min-height: 100vh; |
| | | font-size: 10vw; |
| | | } |
| | | |
| | | .form-group { |
| | | margin-bottom: .25em; |
| | | padding: .25em .25em 0; |
| | | } |
| | | |
| | | label { |
| | | display: block; |
| | | margin-bottom: 8px; |
| | | color: #999; |
| | | font-size: 16px; |
| | | font-weight: normal; |
| | | } |
| | | |
| | | .required-label { |
| | | color: #333; |
| | | font-weight: bold; |
| | | font-size: .4em; |
| | | } |
| | | |
| | | .required-label::before { |
| | | content: '*'; |
| | | color: #ff4d4f; |
| | | margin-right: 4px; |
| | | } |
| | | |
| | | .form-input { |
| | | width: 100%; |
| | | height: 3em; |
| | | border: 1px solid #e8e8e8; |
| | | border-radius: 4px; |
| | | padding: 0 15px; |
| | | font-size: .4em; |
| | | box-sizing: border-box; |
| | | color: #333; |
| | | } |
| | | |
| | | .id-type-options { |
| | | display: flex; |
| | | justify-content: center; |
| | | justify-content: space-between; |
| | | } |
| | | |
| | | .option { |
| | | display: flex; |
| | | align-items: center; |
| | | height: auto; |
| | | // position: absolute; |
| | | // top: 1.72rem; |
| | | // right: .2rem; |
| | | // opacity: 0.2; |
| | | padding: 10px 15px; |
| | | border: 1px solid #e8e8e8; |
| | | border-radius: 4px; |
| | | background-color: #fff; |
| | | flex: 1; |
| | | margin-right: 10px; |
| | | } |
| | | |
| | | .top_t { |
| | | width: 100%; |
| | | height: auto; |
| | | display: flex; |
| | | flex-direction: column; |
| | | justify-content: center; |
| | | font-size: 80px; |
| | | color: #3ac23e; |
| | | align-items: center; |
| | | img { |
| | | width: 64px; |
| | | height: 64px; |
| | | margin-top: 200px; |
| | | margin-bottom: 20px; |
| | | } |
| | | span { |
| | | font-size: 30px; |
| | | } |
| | | } |
| | | .option:last-child { |
| | | margin-right: 0; |
| | | } |
| | | |
| | | .ise_pass { |
| | | font-size: 80px; |
| | | .option.selected { |
| | | border-color: #4a90e2; |
| | | } |
| | | |
| | | .radio-circle { |
| | | width: 24px; |
| | | height: 24px; |
| | | border-radius: 50%; |
| | | border: 1px solid #ccc; |
| | | margin-right: 8px; |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: center; |
| | | background-color: #f5f5f5; |
| | | } |
| | | |
| | | .option.selected .radio-circle { |
| | | border-color: #4a90e2; |
| | | background-color: #fff; |
| | | } |
| | | |
| | | .radio-inner { |
| | | width: 14px; |
| | | height: 14px; |
| | | border-radius: 50%; |
| | | background-color: #4a90e2; |
| | | } |
| | | |
| | | .upload-box { |
| | | width: 100%; |
| | | height: 120px; |
| | | border: 1px solid #e8e8e8; |
| | | border-radius: 4px; |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: center; |
| | | background-color: #fafafa; |
| | | cursor: pointer; |
| | | overflow: hidden; |
| | | } |
| | | |
| | | .upload-placeholder { |
| | | display: flex; |
| | | flex-direction: column; |
| | | align-items: center; |
| | | justify-content: center; |
| | | } |
| | | |
| | | .upload-icon { |
| | | width: 40px; |
| | | height: 40px; |
| | | margin-bottom: 8px; |
| | | opacity: 0.5; |
| | | } |
| | | |
| | | .preview-image { |
| | | width: 100%; |
| | | height: 100%; |
| | | object-fit: cover; |
| | | } |
| | | |
| | | .submit-button { |
| | | width: 9.5em; |
| | | margin: .4em auto 0; |
| | | height: 1.2em; |
| | | background-color: #e6e254; |
| | | color: #fff; |
| | | border-radius: 4px; |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: center; |
| | | cursor: pointer; |
| | | font-weight: normal; |
| | | |
| | | span { |
| | | font-size: .4em; |
| | | } |
| | | } |
| | | </style> |
| | | |
| | | .disabled { |
| | | opacity: .5; |
| | | } |
| | | </style> |
| | |
| | | <div class="bank_name"> |
| | | <!-- <div class="bank_box" @click="$router.push('/bankcard')"> --> |
| | | <div class="bank_box" @click="openEditDialog()"> |
| | | {{ $t("hj220").substring(0, 2) }}{{ $t("hj247") }} |
| | | {{ $t("abc") }} |
| | | </div> |
| | | </div> |
| | | </div> |
| | |
| | | <div class="edit-popup"> |
| | | <div class="edit-title">{{ !this.editForm.id ? $t('hj211') : $t('hj212') }}</div> |
| | | <div class="division"></div> |
| | | |
| | | <div class="edit-form"> |
| | | <div class="form-item"> |
| | | <div class="form-label"><span class="required">*</span>{{ $t('hj213') }}</div> |
| | |
| | | <input type="text" v-model="editForm.bankCardholderName" :placeholder="$t('银行卡户主名称')" class="form-input" /> |
| | | </div> |
| | | </div> |
| | | |
| | | <div class="division"></div> |
| | | <div class="edit-buttons"> |
| | | <div class="cancel-btn" @click="showEditDialog = false">{{ $t('qx') }}</div> |
| | |
| | | <template> |
| | | <div class="home_index"> |
| | | <tab-head> |
| | | <van-popover |
| | | v-model="languageShow" |
| | | trigger="click" |
| | | :actions="actions" |
| | | @select="onSelect" |
| | | placement="bottom-end" |
| | | > |
| | | <van-popover v-model="languageShow" trigger="click" :actions="actions" @select="onSelect" placement="bottom-end"> |
| | | <template #reference> |
| | | <div class="multilingual"> |
| | | <img src="../../assets/img/language.svg" alt="" /> |
| | |
| | | <div class="swiper-slide"> |
| | | <div class="nav_item flex-start" @click="toPage('/aiTrading')"> |
| | | <img src="../../assets/img/home_1.png" alt="" /> |
| | | <span>AI {{ $t("量化交易") }}</span> |
| | | <span>{{ $t("量化交易") }}</span> |
| | | </div> |
| | | </div> |
| | | <div class="swiper-slide"> |
| | |
| | | </div> |
| | | <div class="flex-between navs"> |
| | | <div class="nav_item" v-for="item in usDataStockBeans" :key="item.id"> |
| | | <index-component |
| | | :ids="'a' + item.id" |
| | | :dataObj="item" |
| | | ></index-component> |
| | | <index-component :ids="'a' + item.id" :dataObj="item"></index-component> |
| | | <!-- <van-skeleton title :row="3" /> --> |
| | | </div> |
| | | </div> |
| | |
| | | <div class="flex-between navs"> |
| | | <div class="nav_item" v-for="item in mxDataStockBeans" :key="item.id"> |
| | | <!-- <van-skeleton title :row="3" /> --> |
| | | <index-component |
| | | :ids="'b' + item.id" |
| | | :dataObj="item" |
| | | ></index-component> |
| | | <index-component :ids="'b' + item.id" :dataObj="item"></index-component> |
| | | </div> |
| | | </div> |
| | | </div> |
| | |
| | | <span>{{ $t("hj6") }}</span> |
| | | </div> |
| | | |
| | | <news-item |
| | | :item="item" |
| | | v-for="item in newsList" |
| | | :key="item.id" |
| | | ></news-item> |
| | | <news-item :item="item" v-for="item in newsList" :key="item.id"></news-item> |
| | | |
| | | <div class="more flex-center" @click="$router.push('/new-list')"> |
| | | <span>{{ $t("更多新闻") }}</span> |
| | |
| | | height: 100%; |
| | | flex-direction: column; |
| | | padding-top: .25em; |
| | | padding: .25em .15em 0; |
| | | |
| | | img { |
| | | width: 0.75em; |
| | |
| | | } |
| | | |
| | | span { |
| | | font-size: 0.25em; |
| | | font-weight: 500; |
| | | font-size: 0.28em; |
| | | font-weight: 700; |
| | | text-align: center; |
| | | } |
| | | } |
| | |
| | | EastMoney.HQData.NetworkFilter(data, callback); |
| | | break; |
| | | } |
| | | }, 2000); |
| | | }, 5000); |
| | | }, |
| | | |
| | | handleSelect(key, keyPath) { |
| | |
| | | } else { |
| | | this.timer = setInterval(() => { |
| | | this.getSingDetails(); |
| | | }, 2000); |
| | | }, 5000); |
| | | } |
| | | this.getOpation(); |
| | | // this.$Lazyload(); |
| | | this.getUserInfo(); |
| | | this.getNohknews(); |
| | | }, |
| | |
| | | <template> |
| | | <div class="login_page"> |
| | | <headers /> |
| | | <!-- <headers /> --> |
| | | <tab-head :leftShow="false" :rightShow="false"> |
| | | <van-popover v-model="languageShow" trigger="click" :actions="actions" @select="onSelect" placement="bottom-end"> |
| | | <template #reference> |
| | | <div class="multilingual"> |
| | | <img src="../../assets/img/language.svg" alt="" /> |
| | | </div> |
| | | </template> |
| | | </van-popover> |
| | | </tab-head> |
| | | |
| | | <img src="../../assets/img/logo.png" alt="" class="logo"> |
| | | |
| | | <div class="login_title animated slideInDown"> |
| | | <span>{{ $t("登錄賬號") }}</span> |
| | | <span>{{ $t("dlan") }}</span> |
| | | </div> |
| | | <div class="logins_content"> |
| | | <div class="login_forms"> |
| | | <div class="top_forms"> |
| | | <div class="forms_title">{{ $t('hj27') }}</div> |
| | | <el-input :placeholder="$t('hj9')" :size="medium" v-model="userName" clearable> |
| | | </el-input> |
| | | <el-input style="margin-top: 0.46rem" show-password :placeholder="$t('hj10')" :size="medium" |
| | | v-model="userPassword" @input="handleInput()"> |
| | | <div class="forms_title">{{ $t('Password') }}</div> |
| | | <el-input show-password :placeholder="$t('hj10')" :size="medium" v-model="userPassword" |
| | | @input="handleInput()"> |
| | | </el-input> |
| | | </div> |
| | | <div class="bottom_btns"> |
| | |
| | | </div> |
| | | </template> |
| | | <script> |
| | | import headers from "./components/header.vue"; |
| | | // import headers from "./components/header.vue"; |
| | | import tabHead from "../../components/tabHead.vue"; |
| | | import * as api from "@/axios/api"; |
| | | import { Notify } from "vant"; |
| | | import { mapActions, mapMutations } from "vuex"; |
| | |
| | | userPassword: "", |
| | | userName: "", |
| | | btnClass: false, |
| | | medium: "medium" |
| | | medium: "medium", |
| | | languageShow: false, // 语言选择 |
| | | // 多语言配置 |
| | | actions: [ |
| | | { |
| | | text: "English", |
| | | lang: "en" |
| | | }, |
| | | { text: "español", lang: "es" } |
| | | ], |
| | | }; |
| | | }, |
| | | components: { |
| | | headers |
| | | // headers, |
| | | tabHead, |
| | | }, |
| | | mounted() { |
| | | const ret = window.localStorage.getItem("login_admin"); |
| | |
| | | // 支持 |
| | | navigator.vibrate([55]); |
| | | } |
| | | } |
| | | }, |
| | | // 选择语言 |
| | | onSelect(e) { |
| | | window.localStorage.setItem("language", e.lang); |
| | | this.$i18n.locale = e.lang; |
| | | }, |
| | | }, |
| | | beforeDestroy() { }, |
| | | created() { } |
| | |
| | | .login_title { |
| | | font-family: "DINPro", serif; |
| | | font-style: normal; |
| | | font-weight: 500; |
| | | font-size: 0.48rem; |
| | | font-weight: 700; |
| | | font-size: 0.7rem; |
| | | line-height: 0.66667rem; |
| | | color: #14181f; |
| | | margin-left: 0.53333rem; |
| | | text-align: center; |
| | | } |
| | | |
| | | /deep/ .van-checkbox__label { |
| | |
| | | display: flex; |
| | | flex-direction: column; |
| | | height: 100vh; |
| | | |
| | | .multilingual { |
| | | width: .8em; |
| | | height: .8em; |
| | | margin-left: 0.25em; |
| | | |
| | | img { |
| | | width: 100%; |
| | | height: 100%; |
| | | } |
| | | } |
| | | } |
| | | |
| | | .logo { |
| | | width: 50vw; |
| | | margin: 10vw auto 15vw; |
| | | } |
| | | |
| | | .logins_content { |
| | |
| | | align-items: center; |
| | | flex-wrap: wrap; |
| | | |
| | | .forms_title { |
| | | font-size: .4rem; |
| | | margin-top: .5rem; |
| | | margin-bottom: .2rem; |
| | | } |
| | | |
| | | .user_name, |
| | | .password { |
| | | width: 100%; |
| | |
| | | <template> |
| | | <div class="ai_trading"> |
| | | <page-head :title="`AI ${$t('量化交易')}`"> |
| | | <page-head :title="`${$t('量化交易')}`"> |
| | | <template slot="right"> |
| | | <div class="head_right" @click="$router.push('/aiTradingOrder')"> |
| | | {{ $t("订单") }} |
| | |
| | | <van-popup v-model="buyShow" round> |
| | | <van-form class="buy_popup" @submit="popupSubmit"> |
| | | <div class="popup_title flex-center"> |
| | | <span>{{ `AI ${$t("量化交易")}` }}</span> |
| | | <span>{{ `${$t("量化交易")}` }}</span> |
| | | </div> |
| | | |
| | | <div class="division"></div> |
| | |
| | | </span> |
| | | </div> |
| | | |
| | | <div class="popup_item flex-between-start"> |
| | | <!-- <div class="popup_item flex-between-start"> |
| | | <span style="color:red">*</span> |
| | | <van-field |
| | | v-model="popFrom.password" |
| | |
| | | :placeholder="$t('请输入')" |
| | | :rules="[{ required: true, message: $t('请输入') }]" |
| | | /> |
| | | </div> |
| | | </div> --> |
| | | |
| | | <div class="popup_item flex-between"> |
| | | <p class="flex-start"> |
| | |
| | | |
| | | <p class="card_label2 flex-between"> |
| | | <span>{{ $t("总金额") }}</span> |
| | | <span class="zje" |
| | | >{{ i.stockGid | currencySymbol }} {{ i.orderTotalPrice }}</span |
| | | > |
| | | <span class="zje"> |
| | | {{ i.stockGid | currencySymbol }} {{ i.orderTotalPrice }} |
| | | </span> |
| | | </p> |
| | | |
| | | <p class="card_label2 flex-between"> |
| | | <span>{{ $t("状态") }}</span> |
| | | <span class="zt">{{ status[i.checkType] }}</span> |
| | | <span :class="`${i.checkType == 2 ? 'zt2' : 'zt'}`"> |
| | | {{ status[i.checkType] }} |
| | | </span> |
| | | </p> |
| | | |
| | | <p class="card_label2 flex-between"> |
| | |
| | | span.zt { |
| | | color: @green; |
| | | } |
| | | span.zt2 { |
| | | color: @red; |
| | | } |
| | | } |
| | | |
| | | .card_label1 { |
| | |
| | | </div> |
| | | |
| | | <div class="flex-end"> |
| | | <span class="label_status" v-if="i.listDate > Date.now()">{{ |
| | | $t("待上市") |
| | | }}</span> |
| | | <span class="label_status" v-if="i.listDate > Date.now()"> |
| | | {{ $t("待上市") }} |
| | | </span> |
| | | <span class="label_status1" v-else>{{ $t("已上市") }}</span> |
| | | </div> |
| | | </div> |
| | |
| | | </p> |
| | | |
| | | <p class="card_label2 flex-between"> |
| | | <span>{{ $t("sl") }}</span> |
| | | <span>{{ $t("hj270") }}</span> |
| | | <span>{{ i.applyNums }}</span> |
| | | </p> |
| | | |
| | | <p class="card_label2 flex-between"> |
| | | <span>{{ $t("sl") }}</span> |
| | | <span>{{ i.applyNumber || "-" }}</span> |
| | | </p> |
| | | |
| | | <p class="card_label2 flex-between"> |
| | | <span>{{ $t("发行时间") }}</span> |
| | | <span>{{ i.subscriptionTime | gettime }}</span> |
| | | </p> |
| | |
| | | </div> --> |
| | | <div style="width: 100%; height: 10px; background-color: #f8f8f8"></div> |
| | | |
| | | <div class="jy" @click="handleGoToBankCard1()"> |
| | | <div class="jy" @click="handleGoToAuthentication()"> |
| | | <div class="left_gn"> |
| | | <div class="l_icon"> |
| | | <!-- <img src="../../assets/img/yeb.png" alt /> --> |
| | | <van-icon name="friends" size=".8rem" /> |
| | | <van-icon name="manager" size=".8rem" /> |
| | | </div> |
| | | <div class="r_title"> |
| | | <span>{{ $t("关于我们") }}</span> |
| | | <span>{{ $t('rnv') }}</span> |
| | | </div> |
| | | </div> |
| | | <div class="right_gos"> |
| | | <img src="../../assets/img/youjiantou.png" alt /> |
| | | <div class="right_gos_txt" v-if="userInfo.realName"> |
| | | {{ $t("ysmrz") }} |
| | | </div> |
| | | <img v-else src="../../assets/img/youjiantou.png" alt /> |
| | | </div> |
| | | </div> |
| | | <div class="jy" @click="handleGoToBankCard()"> |
| | | <div class="left_gn"> |
| | | <div class="l_icon"> |
| | | <!-- <img src="../../assets/img/yeb.png" alt /> --> |
| | | <van-icon name="card" size=".8rem" /> |
| | | </div> |
| | | <div class="r_title"> |
| | |
| | | <div class="jy" @click="goToSettings()"> |
| | | <div class="left_gn"> |
| | | <div class="l_icon"> |
| | | <!-- <img src="../../assets/img/yeb.png" alt /> --> |
| | | <van-icon name="lock" size=".8rem" /> |
| | | </div> |
| | | <div class="r_title"> |
| | |
| | | <img src="../../assets/img/youjiantou.png" alt /> |
| | | </div> |
| | | </div> |
| | | |
| | | <div class="jy" @click="handleGoToAuthentication()"> |
| | | <!-- <div class="jy" @click="handleGoToBankCard1()"> |
| | | <div class="left_gn"> |
| | | <div class="l_icon"> |
| | | <!-- <img src="../../assets/img/yeb.png" alt /> --> |
| | | <van-icon name="manager" size=".8rem" /> |
| | | <van-icon name="friends" size=".8rem" /> |
| | | </div> |
| | | <div class="r_title"> |
| | | <span>KYC</span> |
| | | <!-- <span>{{ $t("hj146") }}</span> --> |
| | | <span>{{ $t("关于我们") }}</span> |
| | | </div> |
| | | </div> |
| | | <div class="right_gos"> |
| | | <div class="right_gos_txt" v-if="userInfo.realName"> |
| | | {{ $t("ysmrz") }} |
| | | </div> |
| | | <img v-else src="../../assets/img/youjiantou.png" alt /> |
| | | <img src="../../assets/img/youjiantou.png" alt /> |
| | | </div> |
| | | </div> |
| | | |
| | | </div> --> |
| | | <div class="jy" @click="clicklang()"> |
| | | <div class="left_gn"> |
| | | <div class="l_icon"> |
| | |
| | | justify-content: center; |
| | | align-items: center; |
| | | font-style: normal; |
| | | font-weight: 500; |
| | | font-weight: 700; |
| | | font-size: 0.48rem; |
| | | color: #14181f; |
| | | } |
| | |
| | | |
| | | <div class="trading_card" v-for="i in list" :key="i.id"> |
| | | <p class="card_label2 flex-between"> |
| | | <span>{{ $t("sc") }}</span> |
| | | <span> {{ i.stockCode }}</span> |
| | | </p> |
| | | |
| | | <p class="card_label2 flex-between"> |
| | | <span>{{ $t("訂單編號") }}</span> |
| | | <span> {{ i.buyOrderId }}</span> |
| | | </p> |
| | |
| | | </div> |
| | | </div> |
| | | <div class="pagebox"> |
| | | <div class="pagebox_left"> |
| | | {{ $t("sc") }} |
| | | </div> |
| | | <div class="pagebox_right">{{ pages.stockCode }}</div> |
| | | </div> |
| | | <div class="pagebox"> |
| | | <div class="pagebox_left"> |
| | | {{ $t("類型") }} |
| | | </div> |
| | | <div class="pagebox_right"> |
| | | {{ pages.orderDirection == "买涨" ? $t("gm") : $t("hj78") }} |
| | | </div> |
| | | </div> |
| | | <div class="pagebox"> |
| | | <div class="pagebox_left">{{ $t("盈虧") }}</div> |
| | | <div class="pagebox_right"> |
| | | {{ pages.stockGid | currencySymbol }} |
| | |
| | | |
| | | .buttonbox { |
| | | padding-top: 1.2em; |
| | | padding-bottom: 1.2em; |
| | | |
| | | /deep/ .van-button--primary { |
| | | background-color: @green; |
| | |
| | | <div class="order-info-box"> |
| | | <div class="order-title"> |
| | | <span class="main"> {{ $t("hjtxyhk") }} </span> |
| | | <span class="payNumber" |
| | | >{{ $USD }}{{ item.withAmt | _toLocaleString }}</span |
| | | > |
| | | <span v-if="item.withStatus!=1" class="red pull-right"> |
| | | <span class="payNumber">{{ |
| | | item.withAmt | _toLocaleString |
| | | }}</span> |
| | | <span v-if="item.withStatus != 1" class="red pull-right"> |
| | | {{ |
| | | item.withStatus == 1 |
| | | ? $t("hjtxcg") |
| | |
| | | class="iconfont icon-iconfontweitongguo animated bounceInDown" |
| | | ></i> |
| | | </span> |
| | | <span v-if="item.withStatus==1" class="green pull-right" > |
| | | <span v-if="item.withStatus == 1" class="green pull-right"> |
| | | {{ |
| | | item.withStatus == 1 |
| | | ? $t("hjtxcg") |
| | |
| | | <span class="col-xs-6"> |
| | | {{ $t("hj44") }}: |
| | | <b class="space"> |
| | | {{ $USD }} {{ item.withFee | _toLocaleString }} |
| | | {{ item.withFee | _toLocaleString }} |
| | | </b> |
| | | </span> |
| | | <!-- <span class="col-xs-6">实际到账金额:<b class="space" style="font-size:0.26rem">{{item.withAmt - item.withFee}}</b>元</span> --> |
| | |
| | | <p class="clearfix"> |
| | | <span class="secondary col-xs-6" |
| | | >{{ $t("sj") }}: |
| | | <b v-if="item.applyTime">{{ $moment(item.applyTime).format("DD-MM-YYYY hh:mm:ss A") }}</b> |
| | | <b v-if="item.applyTime">{{ |
| | | $moment(item.applyTime).format("DD-MM-YYYY hh:mm:ss A") |
| | | }}</b> |
| | | <b v-else></b> |
| | | </span> |
| | | </p> |
| | |
| | | loading: false, |
| | | list: [], |
| | | pageNum: 1, |
| | | pageSize: 15, |
| | | pageSize: 15 |
| | | }; |
| | | }, |
| | | watch: {}, |
| | |
| | | let opt = { |
| | | withStatus: "", // 提现状态 0已提交,1转账成功,2转账失败 |
| | | pageNum: this.pageNum, |
| | | pageSize: 15, |
| | | pageSize: 15 |
| | | }; |
| | | let data = await api.withdrawList(opt); |
| | | if (data.status === 0) { |
| | | data.data.list.forEach((element) => { |
| | | data.data.list.forEach(element => { |
| | | this.list.push(element); |
| | | }); |
| | | } else { |
| | |
| | | // 取消提现 |
| | | // MessageBox.confirm('您确定要平仓吗?').then(async action => { |
| | | let opt = { |
| | | withId: val, |
| | | withId: val |
| | | }; |
| | | let data = await api.canceloutMoney(opt); |
| | | if (data.status === 0) { |
| | |
| | | Toast(data.msg); |
| | | } |
| | | // }); |
| | | }, |
| | | }, |
| | | } |
| | | } |
| | | }; |
| | | </script> |
| | | <style lang="less" scoped> |
| | |
| | | <van-tab :title="$t('hj160')" name=""></van-tab> |
| | | <van-tab :title="$t('sqz')" name="0"></van-tab> |
| | | <van-tab :title="$t('sptg')" name="1"></van-tab> |
| | | <van-tab :title="$t('审核拒绝')" name="2"></van-tab> |
| | | <van-tab :title="$t('sqsb')" name="2"></van-tab> |
| | | </van-tabs> |
| | | </div> |
| | | |
| | |
| | | <input type="number" :value="value" @input="inputValue" /> |
| | | <span |
| | | class="myr" |
| | | @click="value = Math.floor(availableBalanceUSD * 100) / 100" |
| | | @click="value = Math.floor(availableBalance * 100) / 100" |
| | | >{{ $t("最大") }}</span |
| | | > |
| | | </div> |
| | |
| | | path: "/aiTrading", |
| | | name: "aiTrading", |
| | | meta: { |
| | | title: "AI" + i18n.t("量化交易"), |
| | | title: i18n.t("量化交易"), |
| | | requireAuth: true, |
| | | show: true, |
| | | index: 1 |