xnzt/xnzt-h5/pages/index/needLoan/loanProDetail/index.vue
2024-11-11 10:27:27 +08:00

716 lines
16 KiB
Vue

<template>
<!-- <div class="loanProDetail">loanProDetail</div> -->
<view class="page loanProDetail">
<component :is="'style'">
:root { --height-to-be-removed: {{ heightToBeRemoved + "px" }}; }
</component>
<view class="page-head" :ref="'pageHead'" @click="heiToBeRem">
<view class="head-top">
<view v-if="true" class="image-view">
<image :src="thumbLink(options.lenderName)" />
</view>
<view class="loan-pro-info">
<view class="loan-pro-name">
<text>{{ loanProduct.loanCommodity }}</text>
</view>
<view class="bank">
<text>{{ options.lenderName }}</text>
</view>
</view>
</view>
</view>
<view class="page-body">
<view class="body-view" v-if="true">
<scroll-view
class="top-menu-view"
scroll-x="true"
:scroll-into-view="tabCurrent"
:ref="'topMenuView'"
>
<view
class="menu-topic-view"
v-for="item in tabs"
:id="'tabNum' + item.id"
:key="item.id - 1"
@click="swichMenu(item.id - 1)"
>
<view
:class="
currentTab == item.id - 1 ? 'menu-topic-act' : 'menu-topic'
"
>
<text class="menu-topic-text">{{ item.name }}</text>
<view class="menu-topic-bottom">
<view class="menu-topic-bottom-color" />
</view>
</view>
</view>
</scroll-view>
<!-- 内容 -->
<swiper
class="swiper-box-list"
:current="currentTab"
@change="swiperChange"
>
<swiper-item
class="swiper-topic-list"
v-for="(item, index) in tabs"
:key="index"
>
<scroll-view class="tabs-item" scroll-y="true">
<block v-if="item.name === '产品介绍'">
<!-- <block> -->
<view
class="loan-card pro-introduce"
v-for="(loanDetail, loanDetailIndex) in productPresentation"
:key="loanDetailIndex"
>
<view class="card-title">
<text>{{ loanDetail.title }}</text>
</view>
<view class="card-body">
<view
class="empty"
v-if="
loanProduct[loanDetail.name] === null ||
loanProduct[loanDetail.name] === '' ||
loanProduct[loanDetail.name] === undefined
"
><text>暂无内容</text></view
>
<view v-else
><text>{{ loanProduct[loanDetail.name] }}</text></view
>
</view>
</view>
</block>
<block v-if="item.name === '贷款说明'">
<view
class="
loan-card
pro-loan-details
loanDetailIndex
!==
0
?
'mar-top'
:
''}}
"
v-for="(loanDetail, loanDetailIndex) in LoanSpecification"
:key="loanDetailIndex"
>
<view class="card-title">
<text>{{ loanDetail.title }}</text>
</view>
<view class="card-body">
<view
class="empty"
v-if="
loanProduct[loanDetail.name] === null ||
loanProduct[loanDetail.name] === '' ||
loanProduct[loanDetail.name] === undefined
"
><text>暂无内容</text></view
>
<text>{{ loanProduct[loanDetail.name] }}</text>
</view>
</view>
</block>
<block
v-if="
item.name === '产品描述' &&
loanProduct.introduction !== null &&
loanProduct.introduction !== undefined &&
loanProduct.introduction !== ''
"
>
<view class="loan-card pro-procedure">
<view class="loan-card card-body">
<div
class="introduction"
v-html="loanProduct.introduction"
/>
</view>
</view>
</block>
<block v-else-if="item.name === '产品描述'">
<view
class="loan-card card-body"
style="text-align: center; padding: 10px; color: #717d71"
>
<view class="empty">
<text>暂无内容</text>
</view>
</view>
</block>
</scroll-view>
</swiper-item>
</swiper>
</view>
<view class="page-foot">
<view class="apply-for">
<view class="app-for-relat"></view>
<navigator
:url="'#'"
@click="navigator(options)"
class="app-for-fixed"
>
<view class="center">
<text>申请贷款</text>
</view>
</navigator>
</view>
</view>
</view>
</view>
</template>
<script>
import {
listLoanProduct,
getLoanProduct,
delLoanProduct,
addLoanProduct,
updateLoanProduct,
changeProductEnable,
} from "@/api/financialCredit/loanProduct";
import { selectBaseInfo } from "@/api/enterprise/baseInfo";
import { selectUserEntity } from "@/api/enterprise/userEntity";
export default {
name: "loanProDetail",
components: {},
props: {},
data() {
return {
haveEnterprise: false,
heightToBeRemoved: 125,
currentTab: 0,
tabCurrent: "tabNum1",
remheiClas: [".page-head", ".app-for-fixed", ".top-menu-view"],
tabs: [
{
id: 1,
name: "产品介绍",
},
{
id: 2,
name: "贷款说明",
},
{
id: 3,
name: "产品描述",
},
],
options: {},
loanProduct: {},
loanCom: {},
loanProductList: [],
LoanSpecification: [
{
title: "贷款期限说明",
name: "loanTerm",
},
{
title: "贷款额度",
name: "loanLimit",
},
{
title: "利率说明",
name: "interestRate",
},
{
title: "申请所需资料",
name: "materials",
},
{
title: "还款方式",
name: "repayMethod",
},
{
title: "担保形式",
name: "guarantee",
},
// {
// title: "",
// name: "",
// },
// {
// title: "",
// name: "",
// },
// {
// title: "",
// name: "",
// },
// {
// title: "",
// name: "",
// },
],
productPresentation: [
{
title: "产品优势",
name: "advantages",
},
{
title: "贷款条件",
name: "loanConditions",
},
{
title: "办理渠道",
name: "applicationChannel",
},
{
title: "适用对象",
name: "applicationUser",
},
// {
// title: "",
// name: "",
// },
// {
// title: "",
// name: "",
// },
],
};
},
watch: {
haveEnterprise: {
handler: function (val, oldVal) {
if (this.haveEnterprise === true) {
this.getBaseInfo();
}
},
deep: true,
},
},
mounted() {
this.$nextTick(function () {
let removeHeight = 0;
for (let remheicla of this.remheiClas) {
let pageHead = uni.createSelectorQuery().select(remheicla);
pageHead
.fields({ size: true }, (data) => {
removeHeight = removeHeight + data.height;
})
.exec();
}
this.heightToBeRemoved = removeHeight;
});
},
onLoad(options) {
this.getRouter(options);
this.getById();
this.getEnterprise()
},
methods: {
confirmCreateEnterPrise() {
this.$modal.confirm("请先创建经营主体").then((res) => {
if (res === true) {
this.$tab.navigateTo("/pages/formPages/enterprise/baseInfo/index");
}
});
},
navigator(item, isNew) {
if (this.haveEnterprise === true) {
this.$tab.navigateTo("/pages/formPages/loan/applyLoanForm/index?loanProductId=" +item.id +"&baseinfoId=" +item.baseinfoId)
.then((res) => {
if (res[0] !== null) {
this.$modal.showToast("模块建设中~");
}
});
} else if (!this.$auth.hasRole("admin") && this.$auth.hasRole("enterprise")) {
this.confirmCreateEnterPrise();
} else {
this.$modal.confirm("非主体用户无法拥有主体!").then(() => {});
}
},
//查询主体用户关联信息
getEnterprise() {
selectUserEntity().then((response) => {
if (response.data.length !== 0) {
this.haveEnterprise = true;
} else {
this.haveEnterprise = false;
}
});
},
//查询主体信息
getBaseInfo() {
selectBaseInfo().then((response) => {
let baseInfo = response.data;
this.$set(this.options, "baseinfoId", baseInfo.id);
});
},
getMsg(yes_no) {
if (yes_no === true) {
this.$modal.msgSuccess("提交申请成功");
} else if (yes_no === false) {
this.$modal.msgSuccess("申请修改成功");
} else if (yes_no === undefined) {
} else {
this.$modal.msgError("提交申请失败");
}
},
thumbLink(lenderName) {
switch (lenderName) {
case "中国邮政储蓄银行股份有限公司":
return "../../../../static/images/index/zgyz.png";
case "邮政储蓄银行":
return "../../../../static/images/index/zgyz.png";
case "中国农业银行":
return "../../../../static/images/index/nyyh.png";
default:
return "../../../../static/images/index/no-photo.png";
}
},
swichMenu(id) {
this.currentTab = id;
this.tabCurrent = "tabNum" + id;
},
swiperChange(e) {
let index = e.detail.current;
this.swichMenu(index);
},
async getRouter(options) {
this.options = options;
},
getById() {
this.$modal.loading("加载中,请耐心等待...");
getLoanProduct(this.options.id).then((res) => {
this.loanProduct = res.data;
this.$modal.closeLoading();
});
},
},
};
</script>
<style scoped lang="scss">
// --heightToBeRemoved:heighttoberemoved
.page-head {
padding: 0px;
background-color: white;
}
.page-body {
margin-top: 15rpx;
}
.page-foot {
margin: 0px;
padding: 0px;
// height: 80rpx;
}
.head-top {
display: flex;
text-align: left;
position: relative;
padding: 10px;
}
.head-top::after {
content: "";
border-bottom: 1rpx #e0e0e0 solid;
position: absolute;
bottom: -5rpx;
left: 0rpx;
width: 100%;
}
.image-view {
width: 240rpx;
height: 240rpx;
}
.image-view image {
width: 240rpx;
height: 240rpx;
}
.loan-pro-info {
padding-top: 10px;
}
.loan-pro-name {
font-weight: 600;
}
.bank {
margin-top: 10px;
font-size: 14px;
}
.head-bottom {
margin-top: 15rpx;
display: flex;
justify-content: space-around;
font-size: 35rpx;
}
.head-bottom > view {
width: 33%;
}
.head-bottom > view > view {
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.head-bottom .label {
color: #5a5a5a;
font-size: 20rpx;
}
.head-bottom .pro-mar .content .rate {
color: orange;
}
.weui-tabs-bar__content {
display: flex;
justify-content: space-around;
position: relative;
}
.weui-tabs-bar__content::before {
content: "";
position: absolute;
width: 100%;
border-bottom: #f1f1f1 2px solid;
bottom: 0px;
}
.weui-tabs-bar__title {
position: relative;
}
.weui-tabs .weui-tabs-swiper {
height: calc(100vh - 100px) !important;
}
.weui-tabs swiper {
height: 100vh !important;
overflow: unset;
}
.weui-tabs swiper-item {
height: auto !important;
overflow: unset;
}
.tab-bar-title_selected {
color: #1B7AF5;
}
.swiper-topic-list {
color: #1B7AF5;
}
.tab-content {
height: 100vh;
overflow: scroll;
}
.loan-card {
width: 100%;
background-color: white;
border: 0px !important;
}
.mar-top {
margin-top: 15rpx;
}
.card-title {
margin: 15rpx;
margin-left: 0;
padding: 15rpx 15rpx 15rpx 55rpx;
position: relative;
}
.card-title::before {
content: "";
position: absolute;
width: 10rpx;
height: 40rpx;
background-color: #1B7AF5;
display: inline-block;
line-height: 20rpx;
margin-left: -30rpx;
transform: translateY(5%);
}
.card-title::after {
content: "";
position: absolute;
width: 100vw;
left: 0px;
bottom: 0px;
border-bottom: #f1f1f1 1px solid;
}
.card-body {
font-size: 15px;
margin: 15rpx;
margin-left: 0;
padding: 10rpx 15rpx 30rpx 40rpx;
position: relative;
border-bottom: #ebebeb 1px solid;
color: #7a7a7a;
.empty {
color: #bbb;
}
.introduction {
// padding-right: 25rpx;
width: calc(100vw - 80rpx);
:not(not) {
max-width: calc(100vw - 80rpx);
word-wrap: break-word;
white-space: break-spaces;
}
}
}
/* .card-body{
display:;
position: fixed;
} */
.apply-for {
height: 100%;
width: 100vw;
position: relative;
}
.apply-for view {
height: 100%;
}
.apply-for .app-for-fixed {
bottom: 0px;
width: 100%;
height: 6vh;
position: fixed;
background-color: #1B7AF5;
font-size: 15px;
color: white;
.center {
position: relative;
text {
position: absolute;
margin-top: 1vh;
// margin: auto 0px;
// transform: translateY(50%);
// transform: rotateX(5);
/deep/span {
margin-left: -100%;
// margin-top: 100%;
}
}
}
}
.page-body {
position: relative;
.body-view {
position: relative;
// top: ;
.top-menu-view {
z-index: 3;
display: flex;
// position: fixed;
// top: 100rpx;
top: calc(44px + env(safe-area-inset-top));
left: 0;
white-space: nowrap;
width: 100%;
background-color: #ffffff;
height: 86rpx;
line-height: 86rpx;
border-top: 1rpx solid #d8dbe6;
.menu-topic-view {
display: inline-block;
white-space: nowrap;
height: 86rpx;
position: relative;
.menu-topic-text {
font-size: 30rpx;
color: #303133;
padding: 10rpx 40rpx;
}
.menu-topic-bottom {
position: absolute;
bottom: 0;
width: 100%;
.menu-topic-bottom-color {
width: 40rpx;
height: 4rpx;
}
}
.menu-topic-act .menu-topic-bottom {
display: flex;
justify-content: center;
}
.menu-topic-act .menu-topic-bottom-color {
background: #3d7eff;
min-height: 2px;
}
}
}
}
.swiper-box-list {
width: 100%;
padding-top: 11px;
flex: 1;
background-color: #ffffff;
// height: 100px;
height: calc(
100vh -
calc(
var(--height-to-be-removed) + 6px + var(--status-bar-height) +
calc(44px + env(safe-area-inset-top))
)
);
.swiper-topic-list {
width: 100%;
// height: calc(calc(auto) + calc(44px));
// padding-bottom: 44px;
.tabs-item {
height: calc(
100vh -
calc(
var(--height-to-be-removed) + 6px + 11px +
var(--status-bar-height) + calc(44px + env(safe-area-inset-top))
)
);
}
}
}
}
</style>