提交 549a57be 编写于 作者: jiangzaicheng's avatar jiangzaicheng

产品

上级 cbb794b9
......@@ -10,7 +10,7 @@ module.exports = {
},
rules: {
"no-console": process.env.NODE_ENV === "production" ? "warn" : "off",
"no-debugger": process.env.NODE_ENV === "production" ? "warn" : "off",
"no- ": process.env.NODE_ENV === "production" ? "warn" : "off",
"prettier/prettier": [
"error",
{
......
此差异已折叠。
......@@ -2,7 +2,7 @@
* @Author: jiangzaicheng jiangzaicheng_jzc@163.com
* @Date: 2022-07-07 16:13:13
* @LastEditors: jiangzaicheng jiangzaicheng_jzc@163.com
* @LastEditTime: 2022-07-07 20:43:56
* @LastEditTime: 2022-07-11 18:19:25
* @FilePath: \mcep-h5\src\components\common\Bottom.vue
* @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
-->
......@@ -25,15 +25,12 @@
<script lang="ts">
import { Component, Vue, Prop, Watch, Emit } from "vue-property-decorator";
import MainViw from "@/views/main/MainView.vue";
//import MainViw from "@/views/main/MainView.vue";
/*
* title
*/
@Component({
name: "Bottom",
components: {
MainViw,
}
})
export default class Bottom extends Vue {
myBtnImage: any = "#icon-a-wode24x24px-kehujinglixiaochengxu";
......
<!--
* @Author: jiangzaicheng jiangzaicheng_jzc@163.com
* @Date: 2022-07-07 16:13:13
* @LastEditors: jiangzaicheng jiangzaicheng_jzc@163.com
* @LastEditTime: 2022-07-12 10:47:05
* @FilePath: \mcep-h5\src\components\common\Bottom.vue
* @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
-->
<template>
<!-- <div> -->
<div class="roolsolt" style="background-image:url(require('@/assets/images/mycard.png'))">
<div >
<van-row type="flex" class="title">
<van-col span="24" >累计贷款金额(元)</van-col>
</van-row>
<van-row type="flex" class="mumMoney">
<van-col offset="4" span="11" class="money">100,000,00</van-col>
<van-col span="9" class="moneytitle">壹佰元整</van-col>
</van-row>
<van-row type="flex" justify="center" class="integral">
<van-col span="8">2456</van-col>
<van-col span="8">12</van-col>
<van-col span="8">10</van-col>
</van-row>
<van-row type="flex" justify="center" class="integrall">
<van-col span="8">我的积分</van-col>
<van-col span="8">卡券</van-col>
<van-col span="8">我的特权</van-col>
</van-row>
</div>
</div>
</template>
<script lang="ts">
import { Component, Vue, Prop, Watch, Emit } from "vue-property-decorator";
/*
* title
*/
@Component({
name: "CardPottom"
})
export default class CardPottom extends Vue {
}
</script>
<style scoped lang="scss">
.roolsolt{
background-image:url("../../assets/images/mycard.png");
width:100%;
height:40%;
}
.title {
font-size: 14px;
text-align: left;
font-family: 'Arial Normal', 'Arial', sans-serif;
font-weight: 400;
font-style: normal;
color: #999999;
margin-left: 10%;
margin-top: 5%;
}
.mumMoney{
margin:5% auto;
}
.money {
font-family: '思源黑体 Bold', '思源黑体 Regular', '思源黑体', sans-serif;
font-style: normal;
font-size: 28px;
color: #FF9921;
margin-left: 10%;
}
.moneytitle {
color: #FFA121;
text-align: left;
font-size: 14px;
font-family: 'Arial Normal', 'Arial', sans-serif;
font-style: normal;
margin-top: 5%;
}
.integral {
text-align: center;
font-family: 'Arial Normal', 'Arial', sans-serif;
font-weight: 400;
font-style: normal;
font-size: 16px;
letter-spacing: normal;
color: #333333;
}
.integrall {
text-align: center;
font-size: 12px;
color: #999999;
}
</style>
<!--
* @Author: jiangzaicheng jiangzaicheng_jzc@163.com
* @Date: 2022-07-07 16:13:13
* @LastEditors: jiangzaicheng jiangzaicheng_jzc@163.com
* @LastEditTime: 2022-07-12 14:40:44
* @FilePath: \mcep-h5\src\components\common\Bottom.vue
* @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
-->
<template>
<!-- <div> -->
<div class="roolsolt" style="background-image:url(require('@/assets/images/mycard.png'))">
<div >
<van-row type="flex" class="unlogintitle">
<van-col span="24" class="title">请登录查看您的贷款信息</van-col>
</van-row>
<van-row type="flex" justify="center" class="integral">
<van-col span="24"><van-button type="info" @click="loginIn()">立即登录</van-button></van-col>
</van-row>
</div>
</div>
</template>
<script lang="ts">
import { Component, Vue, Prop, Watch, Emit } from "vue-property-decorator";
/*
* title
*/
@Component({
name: "CardUnLogin"
})
export default class CardUnLogin extends Vue {
//立即登录
loginIn(){
this.$router.push({
path: "/login",
})
}
}
</script>
<style scoped lang="scss">
.roolsolt{
background-image:url("../../assets/images/mycard.png");
width:100%;
height:40%;
}
.title{
margin-top: 10%;
font-size: 20px;
font-family: 'Arial Normal', 'Arial', sans-serif;
font-weight: 400;
font-style: normal;
letter-spacing: normal;
color: #333333;
vertical-align: none;
text-align: center;
line-height: normal;
text-transform: none;
}
.integral{
margin-top: 10%;
/* margin-left: 20%; */
text-align: center;
}
</style>
<!--
* @Author: jiangzaicheng jiangzaicheng_jzc@163.com
* @Date: 2022-07-04 16:24:00
* @LastEditors: jiangzaicheng jiangzaicheng_jzc@163.com
* @LastEditTime: 2022-07-12 14:08:47
* @FilePath: \mcep-h5\src\components\common\Tatle.vue
* @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
-->
<template>
<!-- <div> -->
<div class="d-tattle">
<div class="litterParam" v-for="(item, index) in litterParam" :key="index">
<van-row class="vanrow">
<van-col span="20" class="priductName">
<svg class="icon" aria-hidden="true">
<!--图片传入进来-->>
<use :xlink:href="item.img"></use>
</svg>
{{ item.productname }}
</van-col>
<van-col span="4" class="imglittle">
<svg class="icon" aria-hidden="true">
<use xlink:href="#icon-a-xiayiye24x24px"></use>
</svg>
</van-col>
</van-row>
</div>
</div>
</template>
<script lang="ts">
import { Component, Vue, Prop, Watch } from "vue-property-decorator";
/*
* title
*/
@Component({
name: "LittleCard",
})
export default class LittleCard extends Vue {
@Prop({ default: "" }) litterParam: any | [] //列表信息
}
</script>
<style scoped lang="scss">
.d-tattle {
margin-top: 28%;
}
.priductName{
padding-top: 2%;
}
.imglittle{
padding-top: 2%;
}
.litterParam {
width: 90%;
margin: 0px auto;
background-color: rgba(255, 255, 255, 1);
border: none;
border-radius: 4px;
-moz-box-shadow: 0px 0px;
box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1);
height: 40px;
}
.vanrow {
margin-top: 6%;
margin-left: 2%;
}
.tatle {
width: 100%;
height: 100%;
}
.icon {
width: 20px;
height: 20px;
}
</style>
......@@ -2,18 +2,78 @@
* @Author: jiangzaicheng jiangzaicheng_jzc@163.com
* @Date: 2022-07-04 16:24:00
* @LastEditors: jiangzaicheng jiangzaicheng_jzc@163.com
* @LastEditTime: 2022-07-07 20:47:51
* @LastEditTime: 2022-07-14 13:54:18
* @FilePath: \mcep-h5\src\components\common\Tatle.vue
* @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
-->
<template>
<div class="tool">
<van-row class="titleNo">
<van-col span="24" class="title">{{ title }}</van-col>
<!-- <van-row class="titlelperson">
<van-col span="24" class="title">{{ title }}</van-col> -->
<!-- <van-row>
<van-col span="8">
<svg class="icon" aria-hidden="true">
<use xlink:href="#icon-touxiang"></use>
</svg>
</van-col>
<van-row>
<van-col span="8">{{ param.name }}</van-col>
<van-col span="8">{{ param.live }}</van-col>
<van-col span="8">成长值{{ param.grow }}</van-col>
</van-row>
<van-row class="titleNo">
<van-col span="24" class="title">{{ title }}</van-col>
<van-row>
<van-col span="24">
<svg class="icon" aria-hidden="true">
<use xlink:href="#icon-touxiang"></use>
</svg>
</van-col>
</van-row>
</van-row> -->
<!-- 两端对齐 -->
<div class="d-flex flex-column">
<div class="p-2 " style="margin: 0px auto;font-size: 18px;color: #ffffff;">{{ title }}</div>
<div class="d-flex p-3 text-white" v-if="!login">
<div class="p-2 " style="width: 62px;height: 62px;">
<svg class="icon" aria-hidden="true">
<use xlink:href="#icon-touxiang"></use>
</svg>
</div>
<div class="" style="width: 100%;margin-top: 10%;margin-left: 3%;">
<div class="d-flex flex-column">
<div class="" style="font-size: 16px;font-weight: 900;">{{ param.name }}
</div>
</div>
</div>
</div>
<div class="d-flex p-3 text-white" v-if="login">
<div class="p-2 " style="width: 62px;height: 62px;">
<svg class="icon" aria-hidden="true">
<use xlink:href="#icon-touxiang"></use>
</svg>
</div>
<div class="" style="width: 100%;margin-top: 2%;margin-left: 6%;">
<div class="d-flex flex-column">
<div class="" style="font-size: 16px;font-weight: 900;">{{ param.name }}
</div>
<div class="d-flex " style="width: 100%;">
<div class="live ">
{{ param.live }}</div>
<div class=" ml-auto " @click="pushStarts()"><img class="imgstar" src="../../assets/images/stars.png" alt=""></div>
</div>
<div class=""
style="background-color: #ffffff; border-radius: 4px; color: #FE6B1B; width: 90px; font-size: 12px;text-align: center;margin-top: 4px;">
成长值{{ param.grow }}
<van-icon name="arrow" class="arrow" />
</div>
</div>
</div>
</div>
</div>
</div>
</template>
......@@ -27,16 +87,50 @@ import { Component, Vue, Prop, Watch } from "vue-property-decorator";
})
export default class Person extends Vue {
@Prop({ default: "" }) title: string | undefined; // 页面标题
@Prop({ default: "" }) param: any | undefined; // Name
@Prop({ default: "" }) starname: string | undefined; // 星星
@Prop({ default: "" }) grow: string | undefined; // 成长
@Prop({ default: false }) login: boolean | undefined; // 是否登录
//星星的点击事件
pushStarts(){
this.$router.push({
name:"level"
})
}
}
</script>
<style scoped lang="scss">
.live {
background-color: rgb(255, 187, 21);
border-radius: 4px;
line-height: 26px;
width: 70px;
font-size: 12px;
text-align: center;
height: 25px;
}
.tool {
height: 100%;
background: linear-gradient(0deg, rgba(172, 215, 255, 1) 0%, rgba(11, 84, 224, 1) 100%);
}
.namePerson {
text-align: left;
font-size: 16px;
color: #FFFFFF;
margin-left: 4%;
margin-top: 3%;
}
.imgstar {
width: 30px;
height: 30px;
}
.title {
margin: 4% auto 5% 0%;
font-size: 18px;
......@@ -48,18 +142,36 @@ export default class Person extends Vue {
height: 100%;
text-align: center;
}
.icon{
width: 32px;
height: 32px;
.arrow {
font-size: 12px;
color: #FE6B1B;
text-align: left;
}
.icon {
// width: 62px;
// height: 62px;
// padding-bottom: 50%;
// padding-left: 2%;
width: 62px;
height: 62px;
// padding-bottom: 50%;
/* padding-left: 2%; */
//margin: 14% auto;
}
.imglocal {
text-align: center;
font-size: 12px;
text-align: right;
font-size: 12px;
color: #FFFFFF;
}
.wiandle {
margin-left: 24%;
width: 30%;
}
.img {
width: 40%;
}
......
......@@ -2,14 +2,14 @@
* @Author: jiangzaicheng jiangzaicheng_jzc@163.com
* @Date: 2022-07-04 16:24:00
* @LastEditors: jiangzaicheng jiangzaicheng_jzc@163.com
* @LastEditTime: 2022-07-07 18:42:19
* @LastEditTime: 2022-07-12 15:54:23
* @FilePath: \mcep-h5\src\components\common\Tatle.vue
* @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
-->
<template>
<!-- <div> -->
<div class="d-tatle">
<div class="card">
<div class="card" @click="onClickPicket()">
<van-row>
<van-col span="24" class="priductName">{{ productname }}</van-col>
</van-row>
......@@ -31,7 +31,7 @@
</template>
<script lang="ts">
import { Component, Vue, Prop, Watch } from "vue-property-decorator";
import { Component, Vue, Prop, Watch, Emit } from "vue-property-decorator";
/*
* title
*/
......@@ -44,6 +44,9 @@ export default class Picket extends Vue {
@Prop({ default: "" }) limitrange: string | undefined //额度范围
@Prop({ default: "" }) interestrate: string | undefined //利率
@Prop({ default: "" }) loanterm: string | undefined //贷款期限
//调用父组件的值
@Emit("onClickPicket")
onClickPicket(){}
}
</script>
......@@ -51,7 +54,7 @@ export default class Picket extends Vue {
.card {
height: 130px;
width: 98%;
margin: 10px auto;
margin: 0% auto;
background: inherit;
background-color: rgba(255, 255, 255, 1);
border: none;
......
<!--
* @Author: jiangzaicheng jiangzaicheng_jzc@163.com
* @Date: 2022-07-07 16:13:13
* @LastEditors: jiangzaicheng jiangzaicheng_jzc@163.com
* @LastEditTime: 2022-07-13 17:58:57
* @FilePath: \mcep-h5\src\components\common\Bottom.vue
* @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
-->
<template>
<!-- <div> -->
<div class="roolsolt">
<div class="rool">
<van-row type="flex" >
<van-col span="24" class="title">最高贷款额度</van-col>
</van-row>
<van-row type="flex" justify="center" class="integral">
<van-col span="24" style="font-size: 24px;font-weight: 900;">{{ money }}</van-col>
</van-row>
<van-row type="flex" justify="center" class="integrall">
<van-col span="24">{{ moneyName }}</van-col>
</van-row>
<van-row type="flex" justify="center" class="button">
<van-col span="24">
<van-button type="info" @click="lodiing()">立即申请</van-button>
</van-col>
</van-row>
</div>
<div>
<van-collapse v-model="activeNames" style=" margin-top: 20%;
border: 1px solid;
width: 100%;
height: 100%;
border-radius: 8px;
margin: 20% auto;
box-shadow: 0 y-shadow 10px 10px rgba(0, 0, 0, .2);
">
<van-collapse-item title="标题1" name="1">内容</van-collapse-item>
<van-collapse-item title="标题2" name="2">内容</van-collapse-item>
<van-collapse-item title="标题3" name="3">内容</van-collapse-item>
</van-collapse>
</div>
</div>
</template>
<script lang="ts">
import { Component, Vue, Prop, Watch, Emit } from "vue-property-decorator";
/*
* title
*/
@Component({
name: "ProductCard"
})
export default class ProductCard extends Vue {
@Prop({ default: "" }) money: string | undefined; //额度
@Prop({ default: "" }) moneyName: string | undefined;//额度大写
//立即登录
activeNames=["1"];
lodiing() {
this.$router.push({
path: "/Recognition",
})
}
}
</script>
<style scoped lang="scss">
.div{
}
.roolsolt {
width: 90%;
margin: 0px auto;
background-color: rgba(255, 255, 255, 1);
}
.title {
margin-top: 10%;
font-size: 14px;
text-align: center;
font-family: 'Arial Normal', 'Arial', sans-serif;
font-weight: 400;
font-style: normal;
letter-spacing: normal;
color: #999999;
vertical-align: none;
text-align: center;
line-height: normal;
text-transform: none;
}
.integral {
//margin-top: 10%;
/* margin-left: 20%; */
text-align: center;
font-size: 36px;
color: #FFA121;
}
.integrall {
//margin-top: 10%;
/* margin-left: 20%; */
text-align: center;
color: #FFA121;
font-size: 14px;
}
.button {
//margin-top: 10%;
/* margin-left: 20%; */
text-align: center;
font-size: 14px;
color: #FFFFFF;
}
</style>
<!--
* @Author: jiangzaicheng jiangzaicheng_jzc@163.com
* @Date: 2022-07-04 16:24:00
* @LastEditors: jiangzaicheng jiangzaicheng_jzc@163.com
* @LastEditTime: 2022-07-13 16:04:20
* @FilePath: \mcep-h5\src\components\common\Tatle.vue
* @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
-->
<template>
<!-- <div class="d-flex ">
<van-row type="flex" class="vanrow">
<van-col span="24" class="productName" style="margin-left: 10%; margin-top:10%">金融消费贷</van-col>
</van-row>
<div class="producy">
<van-collapse v-model="activeNames">
<van-collapse-item title="标题1" name="1">内容</van-collapse-item>
<van-collapse-item title="标题2" name="2">内容</van-collapse-item>
<van-collapse-item title="标题3" name="3">内容</van-collapse-item>
</van-collapse>
</div>
</div> -->
<div class="d-flex flex-column loop" >
<div class="p-2 " ><van-icon name="arrow-left" /></div>
<div class="p-2 " style="width:100%;height:70%;">{{productName}}</div>
</div>
</template>
<script lang="ts">
import { Component, Vue, Prop, Watch } from "vue-property-decorator";
/*
* title
*/
@Component({
name: "ProductDetail",
})
export default class ProductDetail extends Vue {
//路由传值产品名称
@Prop({ default: "" }) productName: string | undefined;
imagenAME: any=require('@/assets/images/background-card.png');
}
</script>
<style scoped lang="scss">
// .vanrow{
// margin-top: 5%;
// margin-left: 5%;
// }
.loop {
background-image: url("../../assets/images/background-card.png");
background-size: 100%;
}
.productName{
font-family: "Arial Negreta", "Arial Normal", Arial, sans-serif;
font-weight: 700;
font-style: normal;
font-size: 16px;
color: rgb(255, 255, 255);
border-width: 0px;
}
</style>
......@@ -2,7 +2,7 @@
* @Author: jiangzaicheng jiangzaicheng_jzc@163.com
* @Date: 2022-07-04 16:24:00
* @LastEditors: jiangzaicheng jiangzaicheng_jzc@163.com
* @LastEditTime: 2022-07-05 17:52:47
* @LastEditTime: 2022-07-08 14:23:56
* @FilePath: \mcep-h5\src\components\common\Tatle.vue
* @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
-->
......@@ -35,9 +35,13 @@ export default class Tatle extends Vue {
<style scoped lang="scss">
.van-col--9{
margin-top: 5%;
font-size: 18px;
color: #ffffff;
}
.van-col--15{
margin-top: 5%;
font-size: 18px;
color: #ffffff;
}
.d-tatle{
......
/*
* @Author: jiangzaicheng jiangzaicheng_jzc@163.com
* @Date: 2022-07-05 14:56:29
* @LastEditors: jiangzaicheng jiangzaicheng_jzc@163.com
* @LastEditTime: 2022-07-08 14:45:54
* @FilePath: \mcep-h5\src\constants\api\login\login-mgt.api.ts
* @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
*/
import { MethodType } from "@/constants/enum/general/method-type.enum";
import { HeaderType } from "@/constants/enum/general/header-type.enum";
const prefix = "http://10.2.3.118:9165/online-financial-service/api/v1/cust-info/permit_endpoint"
const commonApi = {
getPicCode: {
url: prefix + "/get_phone_verify_code",
method: MethodType.POST.code,
header: HeaderType.AUTH.code,
},
};
export default commonApi;
......@@ -2,7 +2,7 @@
* @Author: jiangzaicheng jiangzaicheng_jzc@163.com
* @Date: 2022-07-04 15:41:06
* @LastEditors: jiangzaicheng jiangzaicheng_jzc@163.com
* @LastEditTime: 2022-07-06 18:25:11
* @LastEditTime: 2022-07-14 19:54:20
* @FilePath: \mcep-h5\src\main.ts
* @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
*/
......@@ -31,7 +31,10 @@ import { Step, Steps } from 'vant';
import vueEsign from 'vue-esign';
import Vconsole from 'vconsole';
import Vant from 'vant';
// import { VanComponent } from "vant/types/component"
import Element from 'element-ui'
import { VanComponent } from "vant/types/component"
import 'element-ui/lib/theme-chalk/index.css';
Vue.use(Element);
Vue.use(Vant);
Vue.use(vueEsign);
Vue.use(Step);
......
......@@ -2,7 +2,7 @@
* @Author: jiangzaicheng jiangzaicheng_jzc@163.com
* @Date: 2022-07-04 15:41:06
* @LastEditors: jiangzaicheng jiangzaicheng_jzc@163.com
* @LastEditTime: 2022-07-05 14:04:06
* @LastEditTime: 2022-07-14 13:59:06
* @FilePath: \mcep-h5\src\router\index.ts
* @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
*/
......@@ -15,6 +15,10 @@ import { Code } from "@/constants/enum/general/code.enum";
// import marketingRoutes from "@/router/marketing.mgt.routing";
// import workbenchRoutes from "@/router/workbench.routing";
import loginRoutes from "./login.mgt.routing";
import productRoutes from "./product.mgt.routing";
import mypageRoutes from "./mypage.mgt.routing";
Vue.use(VueRouter);
......@@ -34,6 +38,8 @@ const routes: Array<RouteConfig> = [
// ...marketingRoutes,
// ...workbenchRoutes,
...loginRoutes,
...productRoutes,
...mypageRoutes,
];
const router = new VueRouter({
......
......@@ -2,7 +2,7 @@
* @Author: jiangzaicheng jiangzaicheng_jzc@163.com
* @Date: 2022-07-05 10:08:57
* @LastEditors: jiangzaicheng jiangzaicheng_jzc@163.com
* @LastEditTime: 2022-07-05 17:10:29
* @LastEditTime: 2022-07-12 14:30:24
* @FilePath: \mcep-h5\src\router\login.mgt.routing.ts
* @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
*/
......@@ -23,14 +23,14 @@ const loginRoutes = [
name: 'Register',
component: () => import(/* webpackChunkName: "customer-mgt" */ "@/views/login/Register.vue"),
props: propsConvert,
meta: { keepAlive: false, requiresAuth: true, name: "忘记密码" },
meta: { keepAlive: false, requiresAuth: true, name: "注册" },
},
{
path: `/Mianview`,
name: 'Mianview',
component: () => import(/* webpackChunkName: "customer-mgt" */ "@/views/main/MainView.vue"),
props: propsConvert,
meta: { keepAlive: false, requiresAuth: true, name: "忘记密码" },
meta: { keepAlive: false, requiresAuth: true, name: "主页" },
}
]
export default loginRoutes;
/*
* @Author: jiangzaicheng jiangzaicheng_jzc@163.com
* @Date: 2022-07-05 10:08:57
* @LastEditors: jiangzaicheng jiangzaicheng_jzc@163.com
* @LastEditTime: 2022-07-14 13:59:10
* @FilePath: \mcep-h5\src\router\login.mgt.routing.ts
* @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
*/
import { propsConvert } from "@/services/props-convert";
const mypageRoutes = [
{
path: `/level`,
name: 'level',
component: () => import(/* webpackChunkName: "customer-mgt" */ "@/views/MyView/LevelSent.vue"),
props: propsConvert,
meta: { keepAlive: false, requiresAuth: true, name: "产品详情" },
}
]
export default mypageRoutes;
/*
* @Author: jiangzaicheng jiangzaicheng_jzc@163.com
* @Date: 2022-07-05 10:08:57
* @LastEditors: jiangzaicheng jiangzaicheng_jzc@163.com
* @LastEditTime: 2022-07-13 19:03:44
* @FilePath: \mcep-h5\src\router\login.mgt.routing.ts
* @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
*/
import { propsConvert } from "@/services/props-convert";
const productRoutes = [
{
path: `/product`,
name: 'product',
component: () => import(/* webpackChunkName: "customer-mgt" */ "@/views/ProductDetail/ProductDetails.vue"),
props: propsConvert,
meta: { keepAlive: false, requiresAuth: true, name: "产品详情" },
},
{
path: `/Recognition`,
name: 'Recognition',
component: () => import(/* webpackChunkName: "customer-mgt" */ "@/views/recognition/Recognition.vue"),
props: propsConvert,
meta: { keepAlive: false, requiresAuth: true, name: "实名认证" },
},
{
path: `/Agreement`,
name: 'Agreement',
component: () => import(/* webpackChunkName: "customer-mgt" */ "@/views/recognition/Agreement.vue"),
props: propsConvert,
meta: { keepAlive: false, requiresAuth: true, name: "服务协议" },
},
]
export default productRoutes;
......@@ -2,12 +2,12 @@
* @Author: jiangzaicheng jiangzaicheng_jzc@163.com
* @Date: 2022-07-04 15:41:06
* @LastEditors: jiangzaicheng jiangzaicheng_jzc@163.com
* @LastEditTime: 2022-07-07 16:21:43
* @LastEditTime: 2022-07-14 19:59:12
* @FilePath: \mcep-h5\src\services\component-vue.service.ts
* @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
*/
import Vue from "vue";
import { Button, Cell, CellGroup, Icon, Col, Row, Popup, Toast, Form, Field, Checkbox, CheckboxGroup, RadioGroup, Radio, Search, Picker, DatetimePicker, Loading, Dialog, NavBar, Tab, Tabs, IndexBar, IndexAnchor, Switch, List, PullRefresh } from "vant";
import { Button, Cell, CellGroup, Icon, Col, Row, Popup, Toast, Form, Field, Checkbox, CheckboxGroup, RadioGroup, Radio, Search, Picker, DatetimePicker, Loading, Dialog, NavBar, Tab, Tabs, IndexBar, IndexAnchor, Switch, List, PullRefresh, Card } from "vant";
import TitleBar from "@/components/general/TitleBar.vue";
import DSelect from "@/components/general/form/DSelect.vue";
import ScrollerView from "@/components/general/ScrollerView.vue";
......@@ -25,14 +25,20 @@ import picket from "@/components/common/Picket.vue";
import ant from "ant-design-vue/es/locale/zh_CN"
import Tool from "@/components/common/Tool.vue";
import Bottom from "@/components/common/Bottom.vue";
import Person from "@/components/common/Person.vue";
import CardPottom from "@/components/common/CardPottom.vue";
import LittleCard from "@/components/common/LittleCard.vue";
import CardUnLogin from "@/components/common/CardUnLogin.vue";
import ProductDetail from "@/components/common/ProductDetail.vue";
import ProductCard from "@/components/common/ProductCard.vue";
ProductCard
declare module "vue/types/vue" {
interface Vue {
$message: any;
$success: any;
$error: any;
$loading: any;
$confirm: any;
$alert: any;
$IF: any;
......@@ -91,10 +97,15 @@ class ComponentVueService {
Vue.component("base-list", BaseList);
Vue.component("anchor-nav", AnchorNav);
Vue.component("tatle-bar", Tatle);
Vue.component("picket-bar", picket);Tool
Vue.component("picket-bar", picket); Tool
Vue.component("tools-bar", Tool);
Vue.component("bottom-bar", Bottom);
Vue.component("person-bar", Person);
Vue.component("card-bar", CardPottom);
Vue.component("little-bar", LittleCard);
Vue.component("uncard-bar", CardUnLogin);
Vue.component("product-detail", ProductDetail);
Vue.component("product-card", ProductCard);
}
}
const componentService = new ComponentVueService();
......
<!--
* @Author: jiangzaicheng jiangzaicheng_jzc@163.com
* @Date: 2022-07-14 13:57:33
* @LastEditors: jiangzaicheng jiangzaicheng_jzc@163.com
* @LastEditTime: 2022-07-14 20:16:36
* @FilePath: \mcep-h5\src\views\MyView\LevelSent.vue
* @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
-->
<template>
<div class="rarle">
<van-row class="el-icon-arrow-down">
<van-col span="9">
<van-icon name="arrow-left" @click="retyen()" />
</van-col>
<van-col span="15">{{ tatleName }}</van-col>
</van-row>
<div class="card">
<div class="d-flex flex-column">
<div class="d-flex p-3 text-white">
<div class="p-2 " style="width: 62px;height: 62px;">
<svg class="icon" aria-hidden="true">
<use xlink:href="#icon-touxiang"></use>
</svg>
</div>
<div style="width: 100%;margin-top: 2%;margin-left: 6%;">
<div class="d-flex flex-column">
<div class="lusspolid">大熊仔
</div>
<div class="d-flex " style="width: 100%;">
<div class="live ">
二星级用户|当前成长值535</div>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="frist_type">
<van-row type="flex" class="vanrowFlex">
<van-col span="24" class="vanclo">我的特权</van-col>
<van-row type="flex" gutter="10" justify="center" style="width: 90%; margin: 0px auto;">
<van-col span="6"><img class="img" src="../../assets/images/DGKHBF.png"></van-col>
<van-col span="6"><img class="img" src="../../assets/images/DGKHBF.png"></van-col>
<van-col span="6"><img class="img" src="../../assets/images/DGKHBF.png"></van-col>
<van-col span="6"><img class="img" src="../../assets/images/DGKHBF.png"></van-col>
</van-row>
<van-row type="flex" gutter="10" style="width: 90%; margin: 0px auto;">
<van-col span="6" style="font-size:10px;text-align: center;">我的特权</van-col>
<van-col span="6" style="font-size:10px;text-align: center;">我的特权</van-col>
<van-col span="6" style="font-size:10px;text-align: center;">我的特权</van-col>
<van-col span="6" style="font-size:10px;text-align: center;">我的特权</van-col>
</van-row>
<van-row type="flex" gutter="10" style="width: 90%; margin: 0px auto;">
<van-col span="6" class="third-style">
</van-col>
<van-col span="6" class="third-style">
+0.01</van-col>
<van-col span="6" class="third-style">
-0.01</van-col>
<van-col span="6" class="third-style">专属
</van-col>
</van-row>
</van-row>
<van-row type="flex" class="">
<van-col span="24" >我的特权</van-col>
<div>
<template>
<el-table :data="tableData" :border="true" :stripe="true" >
<el-table-column fixed prop="level" label="等级权限" width="30">
</el-table-column>
<el-table-column prop="name" label="姓名" width="30">
</el-table-column>
<el-table-column prop="province" label="省份" width="30">
</el-table-column>
<el-table-column prop="city" label="市区" width="30">
</el-table-column>
<el-table-column prop="address" label="地址" width="30">
</el-table-column>
</el-table>
</template>
</div>
</van-row>
</div>
</div>
</template>
<script lang="ts">
import { Component, Vue } from "vue-property-decorator";
import { ProductData } from '@/model/entity/ProductData'
//import { defineComponent } from 'vue';
@Component({
name: "LevelSent",
})
export default class LevelSent extends Vue {
tatleName = "等级权限详情";
imageBackage: any = require('@/assets/images/backageImg.png');
//返回上一级
retyen() {
this.$router.back();
}
//数表
tableData= [{
level: '免费转账',
name: '王小虎',
province: '上海',
city: '普陀区',
address: '上海市普陀区金沙江路 1518 弄',
zip: 200333
}, {
level: '客户',
name: '王小虎',
province: '上海',
city: '普陀区',
address: '上海市普陀区金沙江路 1518 弄',
zip: 200333
}, {
level: '存款加息',
name: '王小虎',
province: '上海',
city: '普陀区',
address: '上海市普陀区金沙江路 1518 弄',
zip: 200333
}, {
level: '贷款减息',
name: '王小虎',
province: '上海',
city: '普陀区',
address: '上海市普陀区金沙江路 1518 弄',
zip: 200333
}]
data: any = [
{
key: 1,
name: 'John Brown',
age: 32,
address: 'New York No. 1 Lake Park',
description: 'My name is John Brown, I am 32 years old, living in New York No. 1 Lake Park.',
},
{
key: 2,
name: 'Jim Green',
age: 42,
address: 'London No. 1 Lake Park',
description: 'My name is Jim Green, I am 42 years old, living in London No. 1 Lake Park.',
},
{
key: 3,
name: 'Joe Black',
age: 32,
address: 'Sidney No. 1 Lake Park',
description: 'My name is Joe Black, I am 32 years old, living in Sidney No. 1 Lake Park.',
},
];
}
</script>
<style scoped lang="scss">
.card {
//background-image: url("../../assets/images/mycard.png");
background-color: #ffc14a;
position: absolute;
top: 12%;
left: 4%;
right: 3%;
width: 89%;
height: 11%;
margin: 2% auto;
border-radius: 15px;
display: flex;
font-weight: 400;
font-style: normal;
}
.last {
position: absolute;
height: 100-20vh;
background: #ffffff;
overflow: visible;
}
// .frist_type {
// // border: 1px solid;
// width: 100%;
// height: 100%;
// border-radius: 70px 70px 0px 0px;
// position: absolute;
// top: 20%;
// background-color: #fff;
// }
.frist_type {
margin-top: 15%;
background-image: url('../../assets/images/backageImg.png');
background-size: 100% 100%;
height: 85%;
}
.frist {
margin-left: 6%;
text-rendering: optimizelegibility;
font-feature-settings: "kern";
font-kerning: normal;
font-size: 14px;
}
.second {
//margin-left: 6%;
width: 90%;
margin: 0px auto;
}
.third {
width: 90%;
margin: 0px auto;
// margin-left: 6%;
font-size: 10px;
color: rgba(0, 0, 0, 0.8);
text-rendering: optimizelegibility;
font-feature-settings: "kern";
font-kerning: normal;
}
.img {
width: 85%;
}
.van-col--9 {
margin-top: 5%;
font-size: 18px;
color: #ffffff;
}
.van-col--15 {
margin-top: 5%;
font-size: 18px;
color: #ffffff;
}
.rarle {
width: 100%;
height: 100%;
background: linear-gradient(90deg, rgba(118, 190, 250, 1) 0%, rgba(54, 114, 241, 1) 99%);
}
.third-style {
font-size: 10px;
text-align: center;
color: rgb(255, 193, 74)
}
.vanrowFlex {
margin-top: 2%;
}
.lusspolid {
color: #976401;
font-size: 14px;
}
.vanclo {
margin: 20% 0% 4% 6%;
/* margin-left: 2%; */
/* margin-top: 20%; */
font-weight: 500;
font-size: 14px;
text-align: left;
}
.d-tattle {
margin-top: 28%;
}
.priductName {
padding-top: 2%;
}
.imglittle {
padding-top: 2%;
}
.litterParam {
width: 90%;
margin: 0px auto;
background-color: rgba(255, 255, 255, 1);
border: none;
border-radius: 4px;
-moz-box-shadow: 0px 0px;
box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1);
height: 40px;
}
.vanrow {
margin-top: 6%;
margin-left: 2%;
}
.tatle {
width: 100%;
height: 100%;
}
.icon {
width: 40px;
height: 40px;
}
.live {
font-size: 12px;
color: #CE8B0B;
}
</style>
......@@ -2,13 +2,23 @@
* @Author: jiangzaicheng jiangzaicheng_jzc@163.com
* @Date: 2022-07-05 14:05:30
* @LastEditors: jiangzaicheng jiangzaicheng_jzc@163.com
* @LastEditTime: 2022-07-07 19:00:04
* @LastEditTime: 2022-07-14 13:48:42
* @FilePath: \mcep-h5\src\views\main\MainView.vue
* @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
-->
<template>
<div class="d-page d-flex flex-column" style=" background-color: #ebedf0">
<div>我的页面</div>
<div class="rarl">
<person-bar :title="tatleName" :param="param" :login="true" style="width:100%;height: calc(35vh);">
</person-bar>
</div>
<div>
<card-bar class="card"></card-bar>
<!-- <uncard-bar class="card"></uncard-bar> -->
</div>
<div class="prudect">
<little-bar :litterParam="litterParam"></little-bar>
</div>
</div>
</template>
......@@ -20,9 +30,84 @@ import { ProductData } from '@/model/entity/ProductData'
name: "MyPage",
})
export default class MyPage extends Vue {
tatleName = "我的"
tatleName = "个人中心"
loginFlag = true;
param: any = {}
//判断是否登录
created() {
//判断登录登陆状态
//this.loginFlag=localStorage.getItem("loginFlag")
if(this.loginFlag){
this.param = {
name:"孙旭东",
live:"二星级",
grow:"531"
}
}else{
this.param={
name:"登录/注册"
}
}
}
//列表信息
litterParam: any = [{
productname: "个人信息",
//个人信息
img: "#icon-a-gerenxinxi16x16px"
},
{
productname: "我的贷款",
//图片信息
img: "#icon-a-wodedaikuan16x16px"
},
{
productname: "兑换记录",
//图片信息
img: "#icon-a-duihuanjilu16x16px"
},
{
productname: "合作企业",
//图片信息
img: "#icon-a-hezuoqiye16x16px"
}]
}
</script>
<style scoped lang="scss">
.roll {
background: #ecf9ff;
}
.card {
position: absolute;
top: 21%;
left: 3%;
right: 3%;
width: 90%;
height: 25%;
margin: 2% auto;
border-radius: 15px;
display: flex;
font-weight: 400;
font-style: normal
}
.titleName {
float: inline-end;
height: 34px;
margin: 7px auto 0px 8px;
border-radius: 12px;
color: #a2d2f4;
}
.icon {
width: 90px;
height: 90px;
}
.prudect {
background: white;
height: 100-35vh;
}
</style>
<!--
* @Author: jiangzaicheng jiangzaicheng_jzc@163.com
* @Date: 2022-07-05 14:05:30
* @LastEditors: jiangzaicheng jiangzaicheng_jzc@163.com
* @LastEditTime: 2022-07-13 17:42:26
* @FilePath: \mcep-h5\src\views\main\MainView.vue
* @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
-->
<template>
<div>
<product-detail class="productName" :productName="productName"></product-detail>
<product-card :money="money" :moneyName="moneyName" class="productCard"> </product-card>
</div>
</template>
<script lang="ts">
import { Component, Vue } from "vue-property-decorator";
import { ProductData } from '@/model/entity/ProductData'
@Component({
name: "ProductDetails",
})
export default class ProductDetails extends Vue {
productName="小微企业---互助贷款"
money: string = "¥5000000" //最高额度
moneyName: string = "五百万元整" //最高额度汉字
activeNames=["1"]
}
</script>
<style scoped lang="scss">
.productName {
height: 38vh;
}
.productCard {
// position: absolute;
// top: 10%;
// left: 4%;
// right: 4%;
// width: 100%;
// height: 31%;
// margin: 2% auto;
// border-radius: 15px;
// display: flex;
// font-weight: 400;
// font-style: normal;
position: absolute;
top: 13%;
/* left: calc(100vh - -15px); */
margin: 0px auto;
right: 4%;
width: 90%;
height: 30%;
/* margin: 2% auto; */
border-radius: 15px;
/* display: flex; */
font-weight: 400;
font-style: normal;
}
// .producy{
// position: absolute;
// top: 10%;
// left: 4%;
// right: 4%;
// width: 100%;
// height: 31%;
// margin: 2% auto;
// border-radius: 15px;
// display: flex;
// font-weight: 400;
// font-style: normal;
// }
</style>
......@@ -2,7 +2,7 @@
* @Author: jiangzaicheng jiangzaicheng_jzc@163.com
* @Date: 2022-07-04 15:41:06
* @LastEditors: jiangzaicheng jiangzaicheng_jzc@163.com
* @LastEditTime: 2022-07-06 15:57:44
* @LastEditTime: 2022-07-12 14:53:10
* @FilePath: \mcep-h5\src\views\authentication\LoginView.vue
* @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
-->
......@@ -53,7 +53,7 @@
<!-- <van-divider /> -->
</van-field>
</van-col>
<van-col span="8"><a style="color:#3672F1" @click="changeCmstotal()">{{ getCmstotal }}</a></van-col>
<van-col span="8"><a style="color:#3672F1" @click="getPhonePost()">{{ getCmstotal }}</a></van-col>
</van-row>
<div style="margin: 16px;">
<van-button square block type="info" native-type="submit" @click="loginSystem()">登录</van-button>
......@@ -76,12 +76,12 @@
</template>
<script lang="ts">
import { Component, Vue } from "vue-property-decorator";
import { Image as VanImage } from 'vant';
import { Image as VanImage, Toast } from 'vant';
import apiService from "@/services/api.service";
import loginApi from "@/constants/api/login/login-mgt.api";
import { Code } from "@/constants/enum/general/code.enum";
import { RestfulResponse } from "@/model/domain/RestfulResponse";
import { log } from "mathjs";
import commonApi from "@/constants/api/login/common.api";
import { sys } from "typescript";
......@@ -99,14 +99,15 @@ export default class LoginView extends Vue {
sms: string = "";//短信验证
timer: any = "";//定时器
time: number = 60;//计数
imageVerifyKey: string = ""//验证码Key
//获取图形验证码
_updatePicCode() {
//请求图形验证码
apiService.general(loginApi.updatePicCode, undefined, undefined, undefined).then((response: RestfulResponse) => {
console.log(response);
if (response.code == Code.SUCCESS.code) {
this.imageSrc = 'data:image/png;base64,' + response.data.replace(/[\r\n]/g, "");
console.log(this.imageSrc);
this.imageSrc = 'data:image/png;base64,' + response.data.imageVerifyCodeStr.replace(/[\r\n]/g, "");
this.imageVerifyKey = response.data.imageVerifyKey
}
});
}
......@@ -123,21 +124,38 @@ export default class LoginView extends Vue {
}, 1000)
}
//获取短信验证码
getPhonePost() {
let param = {
phoneCode: this.phone
}
apiService.general(commonApi.getPicCode, param, undefined, undefined).then((response: RestfulResponse) => {
if (response.code == Code.SUCCESS.code) {
Toast('短信发送成功,5分钟有效');
this.changeCmstotal()
} else {
Toast('短信发送失败,请重试');
}
})
}
loginSystem() {
//TODO
//登录失败刷新
//验证码失败刷新
//this._updatePicCode();
let param={
phone:this.phone,
let param = {
phone: this.phone,
//图形Key
imageVerifyKey: this.imageVerifyKey,
//图形验证码
imgVerifyCode:this.imageSrcValue,
imgVerifyCode: this.imageSrcValue,
//渠道
loginType:"3",
loginType: "3",
//手机验证码
phoneVerifyCode:this.sms,
phoneVerifyCode: this.sms,
//密码
credential:this.password
credential: this.password
}
apiService.general(loginApi.loginSystem, undefined, param, undefined).then((response: RestfulResponse) => {
console.log(response);
......@@ -148,8 +166,9 @@ export default class LoginView extends Vue {
data: response.data
}
})
}else{
} else {
this._updatePicCode();
Toast(response.msg + "");
}
});
}
......
......@@ -2,7 +2,7 @@
* @Author: jiangzaicheng jiangzaicheng_jzc@163.com
* @Date: 2022-07-04 15:41:06
* @LastEditors: jiangzaicheng jiangzaicheng_jzc@163.com
* @LastEditTime: 2022-07-05 10:42:36
* @LastEditTime: 2022-07-08 15:28:45
* @FilePath: \mcep-h5\src\views\authentication\LoginView.vue
* @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
-->
......@@ -46,7 +46,7 @@
<!-- <van-divider /> -->
</van-field>
</van-col>
<van-col span="8"><a href="javascript">获取短信验证码</a></van-col>
<van-col span="8"><a href="#" @click="getPhonePost()">获取短信验证码</a></van-col>
</van-row>
......@@ -60,7 +60,11 @@
</template>
<script lang="ts">
import { Component, Vue } from "vue-property-decorator";
import { Image as VanImage } from 'vant';
import { Image as VanImage, Toast } from 'vant';
import apiService from "@/services/api.service";
import { Code } from "@/constants/enum/general/code.enum";
import { RestfulResponse } from "@/model/domain/RestfulResponse";
import commonApi from "@/constants/api/login/common.api";
@Component({
......@@ -68,18 +72,49 @@ import { Image as VanImage } from 'vant';
[VanImage.name]: VanImage,
})
export default class ForgetPassView extends Vue {
getCmstotal = "获取短信验证码";
tatleName = "密码重置"
phone: string = "" //电话
newpassword: string = ""//密码
restpassword:string = ""//密码
imageSrc: string = ""//图形
sms: string = ""//短信
timer: any = "";//定时器
time: number = 60;//计数
radio: string = "0"
//获取图形验证码
_updatePicCode() {
//请求图形验证码
this.imageSrc = 'http://localhost:8080/users/sendPicCode?=' + Math.random();
//this.imageSrc = 'D:\GitClone\H5\mcep-h5\src\assets\images\ZYXTimg.png' + Math.random()
}
//计时器
changeCmstotal() {
this.getCmstotal = this.time + "s重发验证码";
this.timer = setInterval(() => {
this.time--;
this.getCmstotal = this.time + "s重发验证码";
if (this.time < 0) {
clearInterval(this.time)
this.getCmstotal = "获取短信验证码";
}
}, 1000)
}
getPhonePost(){
let param={
phoneCode:this.phone
}
apiService.general(commonApi.getPicCode,param,undefined,undefined).then((response: RestfulResponse) => {
if (response.code == Code.SUCCESS.code) {
Toast('短信发送成功,5分钟有效');
this.changeCmstotal()
}else{
Toast('短信发送失败,请重试');
}
})
}
onSubmit(values: any) {
console.log('submit', values);
}
......
......@@ -2,7 +2,7 @@
* @Author: jiangzaicheng jiangzaicheng_jzc@163.com
* @Date: 2022-07-04 15:41:06
* @LastEditors: jiangzaicheng jiangzaicheng_jzc@163.com
* @LastEditTime: 2022-07-06 15:10:12
* @LastEditTime: 2022-07-08 15:04:25
* @FilePath: \mcep-h5\src\views\authentication\LoginView.vue
* @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
-->
......@@ -35,7 +35,7 @@
<!-- <van-divider /> -->
</van-field>
</van-col>
<van-col span="8"><a href="javascript">获取短信验证码</a></van-col>
<van-col span="8"><a @click="getPhonePost()">{{getCmstotal}}</a></van-col>
</van-row>
<div class="logindiv">
......@@ -61,7 +61,7 @@
</van-radio> -->
<div>
<van-checkbox v-model="checked" shape="square" style="padding:0% 4%;">
<span>本人已阅读<a href="javascpt">《线上金融服务平台注册服务协议》</a></span>
<span>本人已阅读<a href="#">《线上金融服务平台注册服务协议》</a></span>
</van-checkbox>
</div>
</div>
......@@ -73,28 +73,35 @@ import apiService from "@/services/api.service";
import { Code } from "@/constants/enum/general/code.enum";
import { RestfulResponse } from "@/model/domain/RestfulResponse";
import registApi from "@/constants/api/login/regist-mgt.api";
import commonApi from "@/constants/api/login/common.api";
import { Toast } from "vant";
@Component({
name: "ForgetPassView",
})
export default class ForgetPassView extends Vue {
tatleName = "密码重置"
tatleName = "用户注册"
phone: string = "" //电话
password: string = ""//密码
restpassword: string = ""//确认密码
getCmstotal = "获取短信验证码";
sms: string = ""//短信
// radio: boolean = false
timer: any = "";//定时器
time: number = 60;//计数
radio: string = "0"
checked: boolean = false;
registSystem() {
if (this.password === this.restpassword && this.checked) {
let param = {
phone: this.phone,
//短信验证码TODO
//phoneVerifyCode: "",
phoneVerifyCode: this.sms,
//数字渠道
method:"3",
pwd: this.password
pwd: this.password,
serviceAgreeStatus:this.checked
}
apiService.general(registApi.registSystem, undefined, param, undefined).then((response: RestfulResponse) => {
console.log(response);
......@@ -110,6 +117,35 @@ export default class ForgetPassView extends Vue {
}
}
//计时器
changeCmstotal() {
this.getCmstotal = this.time + "s重发验证码";
this.timer = setInterval(() => {
this.time--;
this.getCmstotal = this.time + "s重发验证码";
if (this.time < 0) {
clearInterval(this.time)
this.getCmstotal = "获取短信验证码";
}
}, 1000)
}
getPhonePost(){
let param={
phoneCode:this.phone
}
apiService.general(commonApi.getPicCode,param,undefined,undefined).then((response: RestfulResponse) => {
if (response.code == Code.SUCCESS.code) {
Toast('短信发送成功,5分钟有效');
this.changeCmstotal()
}else{
Toast('短信发送失败,请重试');
}
})
}
created() {
......
此差异已折叠。
......@@ -2,7 +2,7 @@
* @Author: jiangzaicheng jiangzaicheng_jzc@163.com
* @Date: 2022-07-05 14:05:30
* @LastEditors: jiangzaicheng jiangzaicheng_jzc@163.com
* @LastEditTime: 2022-07-07 20:43:35
* @LastEditTime: 2022-07-08 14:28:26
* @FilePath: \mcep-h5\src\views\main\MainView.vue
* @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
-->
......@@ -10,7 +10,7 @@
<div class="d-page d-flex flex-column" style=" background-color: #ebedf0">
<Main v-if="showFlag"></Main>
<MyPage v-if="!showFlag"></MyPage>
<div class="boottom">
<div >
<bottom-bar @onchangebtn="onchangebtn" ></bottom-bar>
</div>
</div>
......
<!--
* @Author: jiangzaicheng jiangzaicheng_jzc@163.com
* @Date: 2022-07-07 16:13:13
* @LastEditors: jiangzaicheng jiangzaicheng_jzc@163.com
* @LastEditTime: 2022-07-13 19:24:02
* @FilePath: \mcep-h5\src\components\common\Bottom.vue
* @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
-->
<template>
<!-- <div> -->
<div class="roolsolt">
<div class="rarle">
<tatle-bar :tatle="tatleName"></tatle-bar>
</div>
<div style="width:90%;margin: 10% auto;">
<span style="font-size: 18px;
font-weight: 900;
/* margin-top: 10%; */
line-height: 6;
margin-left: 12%;">
尊敬的用户您好:
</span>
<br />
<span style=" font-size: 16px; line-height: 3;">
&nbsp;&nbsp; &nbsp; &nbsp;&nbsp;
欢迎使用视频互动审核服务,为了保障您的合法权益,请您务必审慎阅读,充分理解协议条款内容。在您选择并同意本协议之后,即表示您已详细阅读如下条款,并同意服务提供者及XXX使用并传送相关数据用于业务办理。
</span>
</div>
<div>
<van-checkbox v-model="checked" style="padding:0% 4%;">
<span>同意授权,查看<a href="#">协议内容</a></span>
</van-checkbox>
</div>
<div class="info">
<van-button class="vbutton" :disabled="!checked" block type="info">发起视频</van-button>
</div>
</div>
</template>
<script lang="ts">
import { Component, Vue, Prop, Watch, Emit } from "vue-property-decorator";
/*
* title
*/
@Component({
name: "Agreement"
})
export default class Agreement extends Vue {
//实名认证
tatleName = "实名认证"
checked: boolean = false;
}
</script>
<style scoped lang="scss">
.vbutton {
border-radius: 4%;
}
.info {
width: 90%;
margin: 6% auto;
}
</style>
<!--
* @Author: jiangzaicheng jiangzaicheng_jzc@163.com
* @Date: 2022-07-07 16:13:13
* @LastEditors: jiangzaicheng jiangzaicheng_jzc@163.com
* @LastEditTime: 2022-07-13 19:05:41
* @FilePath: \mcep-h5\src\components\common\Bottom.vue
* @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
-->
<template>
<!-- <div> -->
<div class="roolsolt">
<div class="rarle">
<tatle-bar :tatle="tatleName"></tatle-bar>
</div>
<van-row type="flex" class="CardRules">
<van-col span="24">拍摄您的二代身份证原件,请确保图片清晰,四角完整</van-col>
</van-row>
<van-row type="flex" class="Card">
<van-col span="12"><img class="id-card" src="../../assets/images/idcardpeople.png"></van-col>
<van-col span="12"><img class="id-card" src="../../assets/images/idcardcountry.png"></van-col>
</van-row>
<van-row type="flex" class="CardName">
<van-col span="12">拍摄人像面</van-col>
<van-col span="12">拍摄国徽面</van-col>
</van-row>
<van-row type="flex" class="position">
<van-col span="24">拍摄人注意事项</van-col>
</van-row>
<van-row type="flex" class="RuleCard">
<van-col span="8"><img class="idcardp" src="../../assets/images/idcardpeople.png"></van-col>
<van-col span="8"><img class="idcardp" src="../../assets/images/idcardpeople.png"></van-col>
<van-col span="8"><img class="idcardp" src="../../assets/images/idcardpeople.png"></van-col>
</van-row>
<van-row type="flex" class="CardRule">
<van-col span="8">四角完整</van-col>
<van-col span="8">无明显高光</van-col>
<van-col span="8">照片清晰</van-col>
</van-row>
<van-form style="margin-top:4%">
<van-field v-model="pointCard" name="身份证号" label="身份证号" placeholder="身份证号"
:rules="[{ required: true, message: '请填写身份证号' }]" />
<van-field v-model="name" name="姓名" label="姓名" placeholder="姓名" :rules="[{ required: true, message: '请填写姓名' }]" />
<div style="margin: 16px;">
<van-button class="vbutton" square block type="info" native-type="submit" @click="volick()">下一步</van-button>
</div>
</van-form>
</div>
</template>
<script lang="ts">
import { Component, Vue, Prop, Watch, Emit } from "vue-property-decorator";
/*
* title
*/
@Component({
name: "Recognition"
})
export default class Recognition extends Vue {
//身份证号
pointCard: string = "";
//姓名
name: string = "";
//实名认证
tatleName = "实名认证"
//button
volick(){
this.$router.push({
name: `Agreement`,
})
}
}
</script>
<style scoped lang="scss">
.CardRules {
font-size: 12px;
color: #F59A23;
text-align: center;
margin-top: 5%;
}
.id-card {
width: 85%;
}
.CardName {
margin-top: 2%;
text-align: center;
font-size: 14px;
}
.Card {
text-align: center;
margin-top: 5%;
}
.position {
margin-top: 7%;
margin-left: 5%;
font-size: 14px;
}
.idcardp {
width: 85%;
}
.RuleCard {
margin-left: 5%;
margin-top: 2%;
}
.CardRule {
text-align: center;
margin-left: 2%;
margin-top: 2%;
font-size: 14px;
color: #999999;
}
.vbutton{
border-radius: 4%;
}
</style>
<template>
<div>
<title-bar title="产品推介">
<van-icon slot="left" name="cross" size="24" />
<div class="iconfont icon-erweima" style="color: #FFFFFF;" @click="popER" slot="right"></div>
</title-bar>
<van-dialog v-model="show" title="专属产品二维码" style="width: 24%;height: auto">
<div style="display: flex;justify-content: center;margin-top: 10px">
<img :src="basePhoto" style="width: 180px;height: 180px" />
</div>
</van-dialog>
<div class="products-recommended-content">
<div class="products-recommended-content-upper-part"><img style="height: 100%;width: 100%" src="../../../assets/images/product-recommendation-big-picture.png" alt="" /></div>
<div class="products-recommended-content-lower-part">
<van-tabs v-model="active">
<van-tab title="贷款类产品">
<loan-products></loan-products>
</van-tab>
<van-tab title="存款类产品">
<deposit-products></deposit-products>
</van-tab>
<van-tab title="理财类产品">
<financial-products></financial-products>
</van-tab>
</van-tabs>
</div>
</div>
</div>
</template>
<script lang="ts">
import { Component, Vue } from "vue-property-decorator";
import TitleBar from "@/components/general/TitleBar.vue";
import { Tab, Tabs } from "vant";
import LoanProducts from "@/components/workbench/products-recommended/LoanProducts.vue";
import DepositProducts from "@/components/workbench/products-recommended/DepositProducts.vue";
import FinancialProducts from "@/components/workbench/products-recommended/FinancialProducts.vue";
import nettyApi from "@/constants/api/ms-netty/netty.api";
import { NativeUI } from "@/public/ts/NativeUI";
import IF from "@/public/factory/InterFaceFactory";
import { Grid, GridItem } from 'vant';
Vue.use(Grid);
Vue.use(GridItem);
Vue.use(Tab);
Vue.use(Tabs);
/**
* @Description 产品推荐
* @Author JiangTao
* @Date 2021-11-10 下午 03:42
*/
@Component({
name: "ProductsRecommended",
components: { TitleBar, LoanProducts, DepositProducts, FinancialProducts },
})
export default class ProductsRecommended extends Vue {
active = 0;
pageTitle = ""; // 页面标题
show = false;
basePhoto = '';
onClick() {
console.log(111111);
}
mounted() {
this.pageTitle = this.$route.meta?.name;
}
popER() {
let param = {
tc: nettyApi.TRADE_CODE.selectEWM
};
NativeUI.showWaiting('正在查询...');
return IF.transferDataInter(nettyApi.commonRq, param).then((res: any) => {
NativeUI.closeWaiting();
if (res.rc === '1') {
if (res.QRCODE) {
this.basePhoto = 'data:image/png;base64,' + res.QRCODE;
this.show = true;
} else {
NativeUI.toast('暂无数据!');
}
} else {
if (res.ret_code != '4999999') {
NativeUI.toast(res.msg);
}
}
});
};
}
</script>
<style scoped>
.products-recommended-content {
width: 100%;
height: calc(100vh - 60px);
background-color: #f2f2f2;
padding-top: 0.7%;
}
.products-recommended-content-upper-part {
width: 100%;
height: 45%;
display: flex;
justify-content: center;
margin-bottom: 1%;
}
.products-recommended-content-lower-part {
height: 51%;
margin-top: 0.5%;
background-color: white;
}
.products-recommended-content-lower-part > div:nth-child(1) {
margin-top: 1%;
}
::v-deep .van-tabs__wrap {
width: 30%;
margin: 0 auto;
margin-bottom: 1.5%;
}
::v-deep .van-tab__text--ellipsis {
font-size: 16px;
font-family: "Arial Normal", "Arial";
}
::v-deep .van-tab--active {
color: #fd5065;
font-weight: bold;
font-family: "Arial Normal", "Arial";
}
::v-deep .van-tabs__line {
width: 23%;
}
::v-deep .van-tab__pane {
height: 88%;
}
::v-deep .van-tabs {
height: 100%;
}
::v-deep .van-tabs__content {
height: 80%;
}
::v-deep .van-nav-bar__right {
padding-top: 16px;
}
</style>
<template>
<div>
<title-bar :title="title">
<van-icon slot="left" name="cross" size="24" />
</title-bar>
<div class="details">
<div class="details-top">
<div class="details-top-left"><img :src="img" alt="" /></div>
<div class="details-top-right">
<div :style="detailsDisplay">
<sub-title>产品介绍</sub-title>
<div>
{{productDescribe}}
</div>
</div>
<div :style="detailsQR" class="QR-code">
<div style="color: black;height: calc(100% - 30px);display: flex;align-items: center;justify-content: center" v-if="!QRdata">暂无数据!</div>
<div v-if="QRdata">
<vue-qr :logoSrc="imageLogURL" :text="qrUrlText"></vue-qr>
</div>
<div>扫描二维码申请</div>
</div>
</div>
</div>
<div class="details-bottom">
<div class="details-bottom">
<sub-title>产品特点</sub-title>
<div class="details-bottom-content">
<span
style="font-size: 14px;line-height: 32px"
v-for="(item, index) in arrayFeature"
:key="index"
>
<ul>
<li>{{ item }}</li>
</ul>
</span>
</div>
<sub-title>办理流程</sub-title>
<div class="details-bottom-content">
<span
style="font-size: 14px;line-height: 32px"
v-for="(item, index) in productProcess"
:key="index"
>{{ item }}</span
>
</div>
</div>
</div>
</div>
</div>
</template>
<script lang="ts">
import { Component, Vue } from "vue-property-decorator";
import TitleBar from "@/components/general/TitleBar.vue";
import nettyApi from "@/constants/api/ms-netty/netty.api.ts";
import IF from "@/public/factory/InterFaceFactory";
import { NativeUI } from "@/public/ts/NativeUI";
import vueQr from "vue-qr";
/**
* @Description 产品详情
* @Author JiangTao
* @Date 2021-11-10 下午 03:42
*/
@Component({
name: "ProductDetails",
components: { TitleBar, vueQr },
})
export default class ProductDetails extends Vue {
data = "";
img = "";
QRdata = true;
title = "";
qrUrlText = ''; //产品二维码链接
imageLogURL = ''; //二维码logo链接
productDescribe = "";
arrayFeature = [];
productProcess = [];
qrcodeTitle = '二维码"'
detailsDisplay = {};
detailsQR = {};
onClick() {
console.log(111111);
}
mounted() {
this.detailsDisplay = {
'height': '96%'
};
this.detailsQR = {
'display': 'none'
};
this.data = this.$store.getters.getCusInfo;
this.productDescribe = this.$store.getters.getCusInfo.productDescribe;
this.title = this.$store.getters.getCusInfo.productName;
this.img = (this.$store.getters.getCusInfo as any).productPicture;
this.arrayFeature = (this.data as any).productFeatures.split('');
this.productProcess = (this.data as any).productProcess.split('');
this.qrcodeTitle = (this.data as any).productName + '-进件二维码';
/**
* @zmk
* @2022年02月11日16:00:19
* 根据返回的产品编号判断是否需要展示二维码:产品为:随意分、优益买、惠税贷、惠抵贷 、综合消费
* 在 Products 补充产品编号
* 给 this.item.productNum 赋值产品字段
*/
const Products = ['303131', '303132', '999115', '999114', '140111']; //产品编号
if ((this.data as any).productNum && Products.indexOf((this.data as any).productNum) > -1) {
this.detailsDisplay = {};
this.detailsQR = {};
this.QRdata = true;
this.showPhoto();
}
}
showPhoto() {
let param = {
tc: nettyApi.TRADE_CODE.selectEWM
};
NativeUI.showWaiting('正在查询...');
return IF.transferDataInter(nettyApi.commonRq, param).then((res: any) => {
NativeUI.closeWaiting();
if (res.rc == '1') {
if (res.QRSERIALNO) {
const hearUrlPrefix = `${process.env.VUE_APP_PRODUCT_QRCODE}`;
/**
* @zmk
* @2022年02月11日16:00:44
* 缺参数产品ID
* 给 productId 赋值产品字段
* switch 的判断条件
*/
this.qrUrlText = hearUrlPrefix + '?USERNO=' + res.QRSERIALNO + '&PRODUCTID=' + (this.data as any).productNum;
console.log("tgg", this.qrUrlText);
} else {
this.QRdata = false;
// NativeUI.toast('暂无数据!');
}
} else {
if (res.ret_code != '4999999') {
NativeUI.toast(res.msg);
}
}
});
}
}
</script>
<style scoped>
.details {
width: 100%;
height: calc(100vh - 60px);
overflow-y: auto;
}
.details-top {
width: 100%;
height: 66%;
display: flex;
align-items: center;
border: 1px solid rgba(228, 228, 228, 1);
}
.details-top-left {
width: 50%;
height: 100%;
border-right: 1px solid rgba(228, 228, 228, 1);
padding: 1%;
}
.details-top-left img {
width: 100%;
height: 100%;
}
.details-top-right {
width: 50%;
height: 100%;
padding: 5px 2% 0 2%;
position: relative;
display: flex;
flex-direction: column;
justify-content: space-between;
}
.details-top-right > div:nth-child(1) {
height: 50%;
}
.details-top-right > div:nth-child(1) > div:nth-child(2) {
height: calc(100% - 56px);
overflow-y: auto;
}
.details-top-right > div:nth-child(2) {
font-size: 16px;
color: #333333;
line-height: 30px;
height: 50%;
max-height: 160px;
}
.details-top-right > div:nth-child(3) {
width: 85%;
display: flex;
align-items: flex-end;
justify-content: space-between;
position: absolute;
bottom: 0;
}
.QR-code {
width: 46%;
background-color: rgba(248, 248, 248, 0.298039215686275);
border: 1px solid rgba(242, 242, 242, 1);
}
.QR-code > div:nth-child(1) {
width: 43%;
margin: 0 auto;
}
.QR-code > div:nth-child(1) img {
width: 100%;
}
.QR-code > div:nth-child(2) {
width: 100%;
line-height: 30px;
text-align: center;
}
.application {
width: 23.6%;
}
.application button {
width: 100%;
color: white;
padding: 5.6% 0;
text-align: center;
background-color: #fd5065;
border: 1px solid #fd5065;
border-radius: 25px;
font-family: "Arial Normal", "Arial";
font-size: 16px;
margin-bottom: 20%;
}
.details-bottom {
width: 100%;
padding-top: 2%;
padding-left: 1.5%;
}
.details-bottom-title {
width: 16%;
margin-bottom: 1%;
display: flex;
justify-content: flex-start;
}
.details-bottom-title > div:nth-child(1) {
width: 3%;
margin-right: 4%;
background-color: #f3990f;
}
.details-bottom-title > div:nth-child(2) {
font-family: "Arial Normal", "Arial";
font-size: 18px;
}
.details-bottom-content {
margin-left: 2%;
}
.details-bottom-content span {
font-size: 16px;
color: #333333;
line-height: 35px;
}
</style>
Markdown 格式
0% or
您添加了 0 到此讨论。请谨慎行事。
先完成此消息的编辑!
想要评论请 注册