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

src提交

上级 05142bbf
......@@ -3,13 +3,13 @@ import { propsConvert } from "@/services/props-convert";
const prefix = "/customer-mgt";
const customerRoutes = [
{
path: `/TYMHView`,
name: 'TYMHView',
component: () => import(/* webpackChunkName: "customer-mgt" */ "@/views/authentication/TYMHView.vue"),
props: propsConvert,
meta: { keepAlive: false, requiresAuth: true, name: "统一门户" },
},
// {
// path: `/TYMHView`,
// name: 'TYMHView',
// component: () => import(/* webpackChunkName: "customer-mgt" */ "@/views/authentication/TYMHView.vue"),
// props: propsConvert,
// meta: { keepAlive: false, requiresAuth: true, name: "统一门户" },
// },
{
path: `${prefix}/index`,
component: () => import(/* webpackChunkName: "customer-mgt" */ "@/views/customer-mgt/CustomerMgtView.vue"),
......@@ -359,12 +359,13 @@ const customerRoutes = [
component: () => import(/* webpackChunkName: "customer-mgt" */ "@/views/customer-mgt/customer-info/timeLine/MarketTimeLine.vue"),
props: propsConvert,
meta: { keepAlive: true, requiresAuth: true, name: "营销时光轴" },
},{
path: `/MarketStatisticsDetail`,
name: 'MarketStatisticsDetail',
component: () => import(/* webpackChunkName: "customer-mgt" */ "@/views/authentication/MarketStatisticsDetail.vue"),
props: propsConvert,
meta: { keepAlive: false, requiresAuth: true, name: "营销统计详情" },
},
// {
// path: `/MarketStatisticsDetail`,
// name: 'MarketStatisticsDetail',
// component: () => import(/* webpackChunkName: "customer-mgt" */ "@/views/authentication/MarketStatisticsDetail.vue"),
// props: propsConvert,
// meta: { keepAlive: false, requiresAuth: true, name: "营销统计详情" },
// },
];
export default customerRoutes;
......@@ -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-14 13:59:06
* @LastEditTime: 2022-07-22 15:48:19
* @FilePath: \mcep-h5\src\router\index.ts
* @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
*/
......@@ -33,7 +33,7 @@ const routes: Array<RouteConfig> = [
component: () => import(/* webpackChunkName: "login" */ "@/views/authentication/LoginView.vue"),
meta: { keepAlive: true, requiresAuth: true },
},
// ...mainRoutes,
//...mainRoutes,
// ...customerRoutes,
// ...marketingRoutes,
// ...workbenchRoutes,
......
/*
* @Author: jiangzaicheng jiangzaicheng_jzc@163.com
* @Date: 2022-07-05 14:43:17
* @LastEditors: jiangzaicheng jiangzaicheng_jzc@163.com
* @LastEditTime: 2022-07-20 10:28:29
* @FilePath: \mcep-h5\src\router\main.routing.ts
* @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
*/
import { propsConvert } from "@/services/props-convert";
const prefix = "/main";
......@@ -26,12 +34,12 @@ const mainRoutes = [
props: propsConvert,
meta: { keepAlive: false, requiresAuth: true },
},
{
path: `PersonalMgtView`,
component: () => import(/* webpackChunkName: "main" */ "@/views/customer-mgt/PersonalMgtView.vue"),
props: propsConvert,
meta: { keepAlive: false, requiresAuth: true },
},
// {
// path: `PersonalMgtView`,
// component: () => import(/* webpackChunkName: "main" */ "@/views/customer-mgt/PersonalMgtView.vue"),
// props: propsConvert,
// meta: { keepAlive: false, requiresAuth: true },
// },
{
path: `marketing-mgt`,
component: () => import(/* webpackChunkName: "main" */ "@/views/marketing-mgt/personal/MarketingMgtView.vue"),
......@@ -47,11 +55,11 @@ const mainRoutes = [
],
meta: { requiresAuth: true, name: "应用首页", keepAlive: true },
},
{
path: `${prefix}/self-stats`,
component: () => import(/* webpackChunkName: "main" */ "@/views/main/PersonalStatsView.vue"),
props: propsConvert,
meta: { requiresAuth: true, name: "个人业务汇总", keepAlive: true },
},
// {
// path: `${prefix}/self-stats`,
// component: () => import(/* webpackChunkName: "main" */ "@/views/main/PersonalStatsView.vue"),
// props: propsConvert,
// meta: { requiresAuth: true, name: "个人业务汇总", keepAlive: true },
// },
];
export default mainRoutes;
......@@ -179,18 +179,18 @@ const workbenchRoutes = [
props: propsConvert,
meta: { keepAlive: false, requiresAuth: true, name: "日程提醒" },
},
{
path: `/ProductsRecommended`,
component: () => import(/* webpackChunkName: "workbench" */ "@/views/workbench/products-recommended/ProductsRecommended.vue"),
props: propsConvert,
meta: { keepAlive: false, requiresAuth: true, name: "产品推介" },
},
{
path: `/ProductDetails`,
component: () => import(/* webpackChunkName: "workbench" */ "@/views/workbench/products-recommended/loan-products/ProductDetails.vue"),
props: propsConvert,
meta: { keepAlive: false, requiresAuth: true, name: "产品详情" },
},
// {
// path: `/ProductsRecommended`,
// component: () => import(/* webpackChunkName: "workbench" */ "@/views/workbench/products-recommended/ProductsRecommended.vue"),
// props: propsConvert,
// meta: { keepAlive: false, requiresAuth: true, name: "产品推介" },
// },
// {
// path: `/ProductDetails`,
// component: () => import(/* webpackChunkName: "workbench" */ "@/views/workbench/products-recommended/loan-products/ProductDetails.vue"),
// props: propsConvert,
// meta: { keepAlive: false, requiresAuth: true, name: "产品详情" },
// },
{
path: `${prefix}/upcoming-tasks/risk-warning-handle/taskList-operate`,
component: () => import(/* webpackChunkName: "workbench" */ "@/views/workbench/upcoming-tasks/risk-warning-handle/TaskListOperate.vue"),
......
......@@ -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-12 14:53:10
* @LastEditTime: 2022-07-22 15:10:30
* @FilePath: \mcep-h5\src\views\authentication\LoginView.vue
* @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
-->
......@@ -13,7 +13,7 @@
</div>
<div class="login">
<van-row class="el-icon-arrow-down" style="padding: 10% 0%;">
<van-row class="" style="padding: 10% 0%;">
<van-col span="24">
<p class="polog"><span class="font-size-18-dhc" style="padding: 2% 0%;font-weight: 600;">登录</span> </p>
</van-col>
......@@ -47,7 +47,7 @@
</template> -->
<span class="sopan">短信验证码</span>
<van-row class="el-icon-arrow-down">
<van-row class="">
<van-col span="16">
<van-field v-model="sms" center clearable placeholder="请输入短信验证码">
<!-- <van-divider /> -->
......@@ -70,6 +70,7 @@
<div class="p-2 mr-auto "><a class="font-size-12-dhc" @click="forgetspass()"> 忘记密码</a></div>
<div class="p-2 "><a class="font-size-12-dhc" @click="regeist()"> 用户注册</a></div>
<div class="p-2 "><a class="font-size-12-dhc" @click="demo()"> demo测试</a></div>
<div class="p-2 "><a class="font-size-12-dhc" @click="demoll()"> demo测试111</a></div>
</div>
</div>
</div>
......@@ -149,7 +150,7 @@ export default class LoginView extends Vue {
//图形Key
imageVerifyKey: this.imageVerifyKey,
//图形验证码
imgVerifyCode: this.imageSrcValue,
imgVerifyCode: this.imageSrcValue,
//渠道
loginType: "3",
//手机验证码
......@@ -194,7 +195,13 @@ export default class LoginView extends Vue {
path: `Mianview`,
})
}
demoll() {
this.$router.push({
path: `workbench/commonly-used/personal/business-inquiry`,
})
}
}
</script>
<style lang="scss" scoped>
.loginform {
......
......@@ -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-14 11:23:46
* @LastEditTime: 2022-07-20 10:29:08
* @FilePath: \mcep-h5\src\views\main\MainView.vue
* @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
-->
......@@ -218,6 +218,8 @@
</div>
</scroller-view>
</div>
</div>
......@@ -232,6 +234,13 @@ import { ProductData } from '@/model/entity/ProductData'
export default class Main extends Vue {
tatleName = "线上金融服务平台"
notice = "在代码阅读过程中人们说脏话的频率是衡量代码质量的唯一标准。"
//测试
demo(){
this.$router.push({
path:"/CustomerMgtView"
}
)
}
//div列表
applicaList: any = [
{
......
<!--
* @Author: jiangzaicheng jiangzaicheng_jzc@163.com
* @Date: 2022-07-04 15:41:06
* @LastEditors: jiangzaicheng jiangzaicheng_jzc@163.com
* @LastEditTime: 2022-07-05 14:42:17
* @FilePath: \mcep-h5\src\views\workbench\WorkbenchView.vue
* @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
-->
<template>
<div class="divcls">
</div>
</template>
<script lang="ts">
import { Component, Vue } from "vue-property-decorator";
/**
* @Description 工作台
* @Author JiangTao
* @Date 2021-10-23 下午 06:53
*/
@Component({
name: "WorkbenchView",
})
export default class WorkbenchView extends Vue {
}
</script>
<style lang="scss" scoped>
</style>
<template>
<div>
<title-bar title="营销详情" @clickLeft="onClick">
<van-icon slot="left" name="cross" size="24" />
</title-bar>
<div class="formdata">
<van-form @submit="onSubmit">
<div class="v-list d-page d-scroll-container doubleRow">
<mobile-input label="单位名称:" label-width="10px" input-align="left" :rules="[{ required: true, message: '' }]" placeholder="请输入单位名称" :required="true" name="customerName" v-model="customerName" size="small" />
<div class="choice">
<div class="choice-title">是否优易贷入库:<span style="font-size: 20px;color: red">*</span></div>
<div class="choice-flag">
<div ref="isYydInstore_yes" @click="isYydInstore_yes"></div>
<div ref="isYydInstore_no" @click="isYydInstore_no"></div>
</div>
</div>
<div class="choice">
<div class="choice-title">是否代发:<span style="font-size: 20px;color: red">*</span></div>
<div class="choice-flag">
<div ref="isReplace_yes" @click="isReplace_yes"></div>
<div ref="isReplace_no" @click="isReplace_no"></div>
</div>
</div>
<d-select label="渠道类型:" :rules="[{ required: true, message: '' }]" placeholder="请选择渠道类型" :required="true" border="true" v-model="cerType" sfield="cerType" size="small"></d-select>
<mobile-input label="营销机构:" label-width="10px" input-align="left" name="coreName" :readonly="true" v-model="coreName" size="small" />
<mobile-input label="营销人员:" label-width="10px" input-align="left" name="exeUser" :readonly="true" v-model="exeUser" size="small" />
<d-datetime-picker label="预计营销时间:" :rules="[{ required: true, message: '' }]" placeholder="请选择预计营销时间" v-model="estimatedMarketTime" :border="true" :required="true"></d-datetime-picker>
<mobile-input label="预计全口径消费投放(万):" :rules="[{ required: true, message: '' }]" placeholder="请输入预计全口径消费投放" label-width="10px" input-align="left" :required="true" name="expectedFull" v-model="expectedFull" size="small" />
<d-select label="营销方式:" :rules="[{ required: true, message: '' }]" placeholder="请选择营销方式" :required="true" border="true" v-model="marketMode" sfield="marketMode" size="small"></d-select>
<mobile-input label="管户人:" label-width="10px" input-align="left" name="holdManagerName" v-model="holdManagerName" size="small" />
<mobile-input label="客户地址:" :rules="[{ required: true, message: '' }]" type="textarea" :maxlength="200" :required="true" :rows="3" label-width="10px" input-align="left" name="cusAddr" v-model="cusAddr" placeholder="请输入客户地址" size="small" />
</div>
<div class="formbutton">
<van-button round type="default" size="normal">取消</van-button>
<van-button round type="info" size="normal" color="rgba(253, 80, 101, 1)">确定</van-button>
</div>
</van-form>
<base-popup v-model="flagPopup" title="营销选择">
<div class="popup-content">
</div>
</base-popup>
</div>
</div>
</template>
<script lang="ts">
import { Component, Vue } from "vue-property-decorator";
import TitleBar from "@/components/general/TitleBar.vue";
import BasePopup from "@/components/general/BasePopup.vue";
import { Grid, GridItem } from "vant";
import MobileInput from "@/components/general/form/MobileInput.vue";
import IncomeInformation from "@/components/customer-information/family-financial-information/IncomeInformation.vue";
import DSelect from "@/components/general/form/DSelect.vue";
import DDatetimePicker from "@/components/general/form/DDatetimePicker.vue";
import { NativeUI } from "@/public/ts/NativeUI";
import IF from "@/public/factory/InterFaceFactory";
import applicationApi from '@/constants/api/ms-application/application.api';
Vue.use(Grid);
Vue.use(GridItem);
/**
* @Description 新建营销计划
* @Author JiangTao
* @Date 2022-02-12 下午 02:48
*/
@Component({
name: "AddMarketPlan",
components: {
IncomeInformation,
TitleBar,
MobileInput,
DSelect,
DDatetimePicker,
BasePopup
},
})
export default class AddMarketPlan extends Vue {
customerName = ''; //客户名称
cerType = ''; //渠道类型
isYydInstore = '1'; //是否优易贷入库
coreName = sessionStorage.getItem('ORGNAME'); //参考网点
marketMode = ''; //营销方式
isReplace = '1'; //是否代发
holdManagerName = ''; //管户人
expectedFull = ''; //预计全口径消费投放
exeUser = sessionStorage.getItem('userName'); //营销人员
estimatedMarketTime = ''; //预计营销时间
cusAddr = ''; //客户地址
flagPopup = false;
title = '新增营销任务';
currentDate2 = new Date();
minDate2 = new Date();
maxDate2 = new Date(new Date().getFullYear() + 20, 1, 1);
//是否优易贷入库
isYydInstore_yes() {
this.isYydInstore = '1';
(this.$refs.isYydInstore_yes as any).style.border = '0';
(this.$refs.isYydInstore_yes as any).style.backgroundColor = '#FF574C';
(this.$refs.isYydInstore_yes as any).style.color = '#fff';
(this.$refs.isYydInstore_no as any).style.border = '1px solid #e8e8e8';
(this.$refs.isYydInstore_no as any).style.backgroundColor = '#fff';
(this.$refs.isYydInstore_no as any).style.color = '#333333';
};
isYydInstore_no() {
this.isYydInstore = '2';
(this.$refs.isYydInstore_no as any).style.border = '0';
(this.$refs.isYydInstore_no as any).style.backgroundColor = '#FF574C';
(this.$refs.isYydInstore_no as any).style.color = '#fff';
(this.$refs.isYydInstore_yes as any).style.border = '1px solid #e8e8e8';
(this.$refs.isYydInstore_yes as any).style.backgroundColor = '#fff';
(this.$refs.isYydInstore_yes as any).style.color = '#333333';
};
//是否代发
isReplace_yes() {
this.isReplace = '1';
(this.$refs.isReplace_yes as any).style.border = '0';
(this.$refs.isReplace_yes as any).style.backgroundColor = '#FF574C';
(this.$refs.isReplace_yes as any).style.color = '#fff';
(this.$refs.isReplace_no as any).style.border = '1px solid #e8e8e8';
(this.$refs.isReplace_no as any).style.backgroundColor = '#fff';
(this.$refs.isReplace_no as any).style.color = '#333333';
};
isReplace_no() {
this.isReplace = '2';
(this.$refs.isReplace_no as any).style.border = '0';
(this.$refs.isReplace_no as any).style.backgroundColor = '#FF574C';
(this.$refs.isReplace_no as any).style.color = '#fff';
(this.$refs.isReplace_yes as any).style.border = '1px solid #e8e8e8';
(this.$refs.isReplace_yes as any).style.backgroundColor = '#fff';
(this.$refs.isReplace_yes as any).style.color = '#333333';
};
onClick() {
console.log("111");
}
mounted() {
this.isYydInstore = '1';
(this.$refs.isYydInstore_yes as any).style.border = '0';
(this.$refs.isYydInstore_yes as any).style.backgroundColor = '#FF574C';
(this.$refs.isYydInstore_yes as any).style.color = '#fff';
(this.$refs.isYydInstore_no as any).style.border = '1px solid #e8e8e8';
(this.$refs.isYydInstore_no as any).style.backgroundColor = '#fff';
(this.$refs.isYydInstore_no as any).style.color = '#333333';
this.isReplace = '1';
(this.$refs.isReplace_yes as any).style.border = '0';
(this.$refs.isReplace_yes as any).style.backgroundColor = '#FF574C';
(this.$refs.isReplace_yes as any).style.color = '#fff';
(this.$refs.isReplace_no as any).style.border = '1px solid #e8e8e8';
(this.$refs.isReplace_no as any).style.backgroundColor = '#fff';
(this.$refs.isReplace_no as any).style.color = '#333333';
};
onSubmit() {
let param = {
customerName: this.customerName,
cerType: this.cerType,
isYydInstore: this.isYydInstore,
marketMode: this.marketMode,
isReplace: this.isReplace,
holdManagerName: this.holdManagerName,
expectedFull: this.expectedFull,
exeUser: this.exeUser,
estimatedMarketTime: this.estimatedMarketTime,
cusAddr: this.cusAddr,
tc: 'MCEP'
};
NativeUI.showWaiting('正在查询...');
IF.transferDataInter(applicationApi.AddMarketing, param).then((res: any) => {
NativeUI.closeWaiting();
if (res.code != '1') {
NativeUI.toast(res.msg);
} else {
this.flagPopup = true;
}
});
}
}
</script>
<style scoped>
.doubleRow {
display: grid;
width: 80%;
grid-template-columns: 50% 50%;
margin: 0 auto;
}
.doubleRow > div:nth-child(11) {
grid-column-start: 1;
grid-column-end: 3;
grid-row-start: 6;
grid-row-end: 7;
}
.choice {
background-color: white;
display: flex;
justify-content: flex-start;
align-items: center;
padding: 0.7rem 1rem;
}
.choice-title {
width: 116px;
font-size: 14px;
color: #999999;
text-align: right;
margin-right: 7px;
}
.choice-flag {
display: flex;
justify-content: flex-end;
}
.choice-flag div {
width: 60px;
border: 1px solid #e8e8e8;
font-size: 13px;
height: 34px;
display: flex;
justify-content: center;
align-items: center;
}
.choice-flag > div:nth-child(1) {
border-top-left-radius: 5px;
border-bottom-left-radius: 5px;
}
.choice-flag > div:nth-child(2) {
border-top-right-radius: 5px;
border-bottom-right-radius: 5px;
}
::v-deep .d-form-field {
padding: 0.7rem 1rem;
}
::v-deep .van-field__label {
width: 110px !important;
text-align: right;
}
.formdata {
height: calc(100vh - 60px);
padding-top: 3%;
overflow-y: auto;
}
::v-deep .formdata form{
width: 95%;
}
.formbutton {
display: flex;
align-items: center;
justify-content: center;
}
::v-deep .formbutton button {
width: 150px;
margin: 10px 30px;
}
::v-deep .d-form-field .van-field__label {
font-size: 14px !important;
}
</style>
<template>
<div>
<title-bar title="辅助工具">
<van-icon slot="left" name="cross" size="24" />
</title-bar>
<div class="text-content">
<div class="text-content-left">
<van-sidebar style="width: 100%" line-height="100px" v-model="activeKey">
<van-sidebar-item @click="indexClick(0)" class="label" title="利率定价" />
<van-sidebar-item @click="indexClick(1)" class="label" title="贷款测算" />
<van-sidebar-item @click="indexClick(2)" class="label" title="随意分还款试算" />
<van-sidebar-item @click="indexClick(3)" class="label" title="年日均计算" />
<van-sidebar-item @click="indexClick(4)" class="label" title="财务试算" />
</van-sidebar>
</div>
<div class="text-content-right">
<interest-pricing v-if="activeKey == 0"></interest-pricing>
<loan-calculation v-if="activeKey == 1"></loan-calculation>
<repayment-trial v-if="activeKey == 2"></repayment-trial>
<calculate v-if="activeKey == 3"></calculate>
<financial-trial v-if="activeKey == 4"></financial-trial>
</div>
</div>
</div>
</template>
<script lang="ts">
import { Component, Vue } from "vue-property-decorator";
import TitleBar from "@/components/general/TitleBar.vue";
import { Sidebar, SidebarItem } from "vant";
import FinancialTrial from "@/components/workbench/company-common-functions/auxiliary-tools/FinancialTrial.vue";
import Calculate from "@/components/workbench/company-common-functions/auxiliary-tools/Calculate.vue";
import RepaymentTrial from "@/components/workbench/company-common-functions/auxiliary-tools/RepaymentTrial.vue";
import LoanCalculation from "@/components/workbench/company-common-functions/auxiliary-tools/LoanCalculation.vue";
import InterestPricing from "@/components/workbench/company-common-functions/auxiliary-tools/InterestPricing.vue";
Vue.use(Sidebar);
Vue.use(SidebarItem);
/**
* @Description 辅助工具
* @Author JiangTao
* @Date 2021-10-25 下午 08:55
*/
@Component({
name: "AuxiliaryTools",
components: { TitleBar, FinancialTrial, Calculate, RepaymentTrial, LoanCalculation, InterestPricing }
})
export default class AuxiliaryTools extends Vue {
activeKey:any = 0;
pageTitle = ""; // 页面标题
mounted() {
this.pageTitle = this.$route.meta?.name;
if(this.$route.query.activeKey){
this.activeKey = this.$route.query.activeKey;
}
}
indexClick(index:any){
this.activeKey = index;
}
activated() {
this.$router.beforeEach((to, from, next) => {
if (from.path == "/main/workbench") {
this.activeKey = 0;
}else if(from.path == "/TYMHView"){
this.activeKey = to.query.activeKey;
}
next();
});
}
}
</script>
<style scoped>
.text-content {
width: 100%;
height: calc(100vh - 60px);
display: flex;
justify-content: flex-start;
}
.text-content-left {
width: 25%;
background-color: rgba(245, 245, 245, 1);
border: 1px solid rgba(222, 222, 222, 1);
}
.text-content-right {
width: 75%;
}
.label {
border-bottom: 1px solid #999999;
}
van-sidebar-item {
}
::v-deep .van-sidebar-item--select::before {
height: 100%;
}
::v-deep .van-sidebar-item__text {
font-size: 18px;
}
</style>
<template>
<div>
<title-bar title="业务查询" @clickLeft="onClick">
<van-icon slot="left" name="cross" size="24" />
</title-bar>
<div class="content">
<div style="padding: 0.5%; background-color: #fffafa"></div>
<van-tabs v-model="active">
<van-tab title="营销任务">
<marketing-task></marketing-task>
</van-tab>
<van-tab title="贷款申请">
<loan-application></loan-application>
</van-tab>
<van-tab title="合同签订及出账">
<contract-signing-and-billing></contract-signing-and-billing>
</van-tab>
<van-tab title="定期检查">
<periodic-inspection></periodic-inspection>
</van-tab>
<van-tab title="风险预警">
<risk-warning></risk-warning>
</van-tab>
</van-tabs>
</div>
</div>
</template>
<script lang="ts">
import { Component, Vue } from "vue-property-decorator";
import TitleBar from "@/components/general/TitleBar.vue";
import MarketingTask from "@/components/workbench/company-common-functions/business-inquiry/MarketingTask.vue";
import LoanApplication from "@/components/workbench/company-common-functions/business-inquiry/LoanApplication.vue";
import ContractSigningAndBilling from "@/components/workbench/company-common-functions/business-inquiry/ContractSigningAndBilling.vue";
import PeriodicInspection from "@/components/workbench/company-common-functions/business-inquiry/PeriodicInspection.vue";
import RiskWarning from "@/components/workbench/company-common-functions/business-inquiry/RiskWarning.vue";
import { Tab, Tabs } from "vant";
Vue.use(Tab);
Vue.use(Tabs);
/**
* @Description 业务查询
* @Author JiangTao
* @Date 2021-10-23 下午 06:50
*/
@Component({
name: "BusinessInquiry",
components: { TitleBar, MarketingTask, LoanApplication, ContractSigningAndBilling, PeriodicInspection, RiskWarning },
})
export default class BusinessInquiry extends Vue {
pageTitle = ""; // 页面标题
onClick() {
console.log(111111);
}
mounted() {
this.pageTitle = this.$route.meta?.name;
}
active = 0;
}
</script>
<style scoped>
.content {
width: 100%;
height: calc(100vh - 60px);
}
::v-deep .van-tab__text {
font-size: 16px;
color: #999999;
font-family: "Arial Normal", "Arial";
}
::v-deep .van-tab--active span {
font-size: 18px;
color: #fd5065;
font-weight: bold;
}
::v-deep .van-tabs__line {
width: 20%;
}
::v-deep .van-tabs__wrap {
width: 100%;
padding-right: 39%;
padding-left: 1%;
background-color: #fffafa;
}
::v-deep .van-tab {
background-color: #fffafa;
}
</style>
<template>
<div>
<title-bar :title="title" @clickLeft="onClick">
<van-icon slot="left" name="cross" size="20" />
</title-bar>
<div class="text-content">
<div class="text-content-left">
<van-sidebar
style="width: 100%"
line-height="100px"
v-model="activeKey"
>
<van-sidebar-item
v-for="(item, index) in AgencyTask"
:key="index"
@click="interest_pricing(index)"
class="label"
:title="item.AgencyName"
/>
</van-sidebar>
</div>
<div class="text-content-right">
<!-- 营销任务 -->
<upcoming-marketing-task
v-if="activeKey == 0"
></upcoming-marketing-task>
<!-- 风险预警 -->
<upcoming-risk-warning v-if="activeKey == 1"></upcoming-risk-warning>
<!-- 贷后检查 -->
<upcoming-periodic-inspection
v-if="activeKey == 2"
></upcoming-periodic-inspection>
</div>
</div>
</div>
</template>
<script lang="ts">
import { Component, Vue } from "vue-property-decorator";
import TitleBar from "@/components/general/TitleBar.vue";
import { Sidebar, SidebarItem } from "vant";
import UpcomingRiskWarning from "@/components/workbench/upcoming-tasks-content/company-business/upcoming/UpcomingRiskWarning.vue";
import UpcomingMarketingTask from "@/components/workbench/upcoming-tasks-content/company-business/upcoming/UpcomingMarketingTask.vue";
import UpcomingPeriodicInspection from "@/components/workbench/upcoming-tasks-content/company-business/upcoming/UpcomingPeriodicInspection.vue";
Vue.use(Sidebar);
Vue.use(SidebarItem);
/**
* @Description 催收管理
* @Author JiangTao
* @Date 2021-10-25 下午 08:55
*/
@Component({
name: "AgencyTask",
components: {
TitleBar,
UpcomingMarketingTask,
UpcomingRiskWarning,
UpcomingPeriodicInspection,
},
})
export default class AgencyTask extends Vue {
activeKey = 0;
title = "待办任务"; // 页面标题
AgencyTask = [
{ AgencyName: "营销任务", iconName: "", actionType: "CSGL", path: "/AddContractFaceSign", },
{ AgencyName: "风险预警", iconName: "", actionType: "FXYJ", path: "/risk-warning-list", },
{ AgencyName: "贷后检查", iconName: "", actionType: "DHJC", path: "/risk-warning-list", },
];
onClick() {
console.log(111111);
}
mounted() {}
interest_pricing_content = true;
loan_calculation_content = false;
repayment_trial_content = false;
calculate_content = false;
financial_trial_content = false;
interest_pricing(index: any) {
this.activeKey = index;
this.interest_pricing_content = true;
this.loan_calculation_content = false;
this.repayment_trial_content = false;
this.calculate_content = false;
this.financial_trial_content = false;
}
loan_calculation() {
this.interest_pricing_content = false;
this.loan_calculation_content = true;
this.repayment_trial_content = false;
this.calculate_content = false;
this.financial_trial_content = false;
}
repayment_trial() {
this.interest_pricing_content = false;
this.loan_calculation_content = false;
this.repayment_trial_content = true;
this.calculate_content = false;
this.financial_trial_content = false;
}
calculate() {
this.interest_pricing_content = false;
this.loan_calculation_content = false;
this.repayment_trial_content = false;
this.calculate_content = true;
this.financial_trial_content = false;
}
financial_trial() {
this.interest_pricing_content = false;
this.loan_calculation_content = false;
this.repayment_trial_content = false;
this.calculate_content = false;
this.financial_trial_content = true;
}
}
</script>
<style scoped>
.text-content {
width: 100%;
height: calc(100vh - 60px);
display: flex;
justify-content: flex-start;
}
.text-content-left {
width: 25%;
background-color: rgba(245, 245, 245, 1);
border: 1px solid rgba(222, 222, 222, 1);
}
.text-content-right {
width: 75%;
}
.label {
border-bottom: 1px solid #999999;
}
van-sidebar-item {
}
::v-deep .van-sidebar-item--select::before {
height: 100%;
}
::v-deep .van-sidebar-item__text {
font-size: 18px;
}
</style>
<template>
<div>
<title-bar title="客户查询" >
<van-icon slot="left" name="cross" size="24" />
</title-bar>
<div class="content">
<div>
查企业
<div>
<van-search v-model="value" @blur="onClick" placeholder="请输入企业名称或证件" />
</div>
</div>
<div class="result-box">
<div v-show="flagShow" class="query-history">共有{{mainArray.length}}条搜索结果</div>
<div v-for="(item,index) in mainArray" :key="index" @click="clickItem(item)" class="query-content">
<div class="query-content-left">
<img
style="width: 4.63%"
src="@/assets/images/query-history-logo.png"
alt=""
/>
<div>{{ item.entName }}</div>
<div style="margin-left:20px">
<!-- <span style="color: #999999">统一社会信用代码:</span -->
>
<!-- <span style="font-family: 'Arial Normal', 'Arial'"
>9129181726374820p</span
> -->
</div>
</div>
<!-- <div class="query-content-right">历史合作企业</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 Public from "@/public/ts/Public";
/**
* @Description 客户查询
* @Author JiangTao
* @Date 2021-11-10 下午 03:30
*/
@Component({
name: "CustomerInquiry",
components: { TitleBar },
})
export default class CustomerInquiry extends Vue {
pageTitle = ""; // 页面标题
mainArray = []; //公司数组
value = "";
flagShow = false; //展示搜索结果
onClick() {
// console.log(this.mainArray);
this.onSearch();
}
onSearch() {
const parm = {
tc: nettyApi.TRADE_CODE.selectDim,
ProdId: Public.getProdId(),
SvrCode: Public.getSvrCode(nettyApi.TRADE_CODE.selectDim),
ClientNo: "",
name: this.value,
orgTypes: "",
};
NativeUI.showWaiting("正在查询.....");
IF.transferDataInter(nettyApi.commonRq, parm).then((res: any) => {
NativeUI.closeWaiting();
if (res.rc == "1") {
this.mainArray = res.dataList;
this.flagShow = true;
} else {
if (res.ret_code != "4999999" && res.ret_code != "000001") {
NativeUI.toast('暂无公司数据');
this.mainArray = [];
this.flagShow = false;
}
}
});
}
activated() {
this.$router.beforeEach((to, from, next) => {
if (from.path == '/main/workbench') {
this.value = '';
this.mainArray = [];
this.flagShow = false;
}
next();
});
}
clickItem(item: any) {
const parm = {
tc: nettyApi.TRADE_CODE.selectCus,
cus_name: item.entName,
};
NativeUI.showWaiting("正在查询...");
IF.transferDataInter(nettyApi.commonRq, parm).then((res: any) => {
NativeUI.closeWaiting();
console.log(res);
if (res.rc == "1") {
const cusinfo = {
cus_name: res.cus_name,
cert_type: res.cert_type,
cert_code: res.cert_code,
exist_flag: res.exist_flag,
cus_id: res.cus_id,
cus_status: res.cus_status,
};
this.$store.commit("setCusInfo", cusinfo);
this.$router.push({
path: "/CompanyDetails",
});
} else {
NativeUI.toast(res.msg);
}
});
}
mounted() {
this.pageTitle = this.$route.meta?.name;
}
}
</script>
<style scoped>
.content {
background-color: #f2f2f2;
}
.content > div:nth-child(1) {
padding: 2% 8%;
background-color: white;
font-size: 143%;
font-weight: bold;
margin-bottom: 1%;
}
.content > div:nth-child(2) {
background-color: white;
padding: 2% 8%;
}
.result-box{
margin-bottom: 1.5%;
overflow-y: auto;
overflow:scroll;
height: calc(100vh - 170px);
}
.query-content {
width: 97%;
display: flex;
justify-content: space-between;
align-items: center;
padding: 1.5%;
margin-bottom: 1.5%;
border-bottom: 1px solid #adb5bd;
}
.query-content-left {
width: 60%;
display: flex;
justify-content: flex-start;
align-items: center;
}
.query-content-left > div:nth-child(2) {
font-size: 115%;
font-family: "微软雅黑 Bold", "微软雅黑 Regular", "微软雅黑";
font-weight: bold;
margin: 0 2%;
}
.query-content-left > div:nth-child(3) {
margin-top: 0.2%;
margin-left: 3%;
}
.query-content-right {
font-size: 92.9%;
background-color: #e2eef9;
padding: 0.3% 0.8%;
color: #1890ff;
}
.content > div:nth-child(1) {
display: flex;
justify-content: space-around;
align-items: center;
}
.content > div:nth-child(1) div {
width: 93%;
}
</style>
<template>
<!-- 对公业务查询-->
<div>
<title-bar :title="title">
<van-icon slot="left" name="cross" size="24" />
</title-bar>
<div class="text-content">
<div class="text-content-left">
<van-sidebar @change="onChange" style="width: 100%" line-height="100px" v-model="active">
<van-sidebar-item v-for="(item, index) in CommonFunctionsList" :key="index" class="label" :title="item.AgencyName" />
</van-sidebar>
</div>
<div class="text-content-right">
<!-- 流程查询 -->
<ProcessQuery v-if="active == 0"></ProcessQuery>
<!-- 合同签订及出账 -->
<!-- <AfterLoan v-if="active == 1"></AfterLoan>-->
<!-- 贷后检查 -->
<UpcomingPeriodicInspection v-if="active == 1"></UpcomingPeriodicInspection>
<!-- 风险预警 -->
<UpcomingRiskWarning v-if="active == 2"></UpcomingRiskWarning>
</div>
</div>
</div>
</template>
<script lang="ts">
import { Component, Vue } from "vue-property-decorator";
import TitleBar from "@/components/general/TitleBar.vue";
import { Sidebar, SidebarItem } from "vant";
import CollectionManagement from "@/components/workbench/personal-common-functions/agency-task/CollectionManagement.vue";
import AfterLoan from "@/components/workbench/personal-common-functions/agency-task/AfterLoan.vue";
import SMEMarketingPool from "@/components/workbench/SME-common-functions/SMEMarketingPool.vue";
import UpcomingPeriodicInspection from "@/components/workbench/upcoming-tasks-content/company-business/upcoming/UpcomingPeriodicInspection.vue";
import UpcomingRiskWarning from "@/components/workbench/upcoming-tasks-content/company-business/upcoming/UpcomingRiskWarning.vue";
import ProcessQuery from "@/components/workbench/company-common-functions/business-inquiry/ProcessQuery.vue";
Vue.use(Sidebar);
Vue.use(SidebarItem);
/**
* @Description 常用功能
* @Author JiangTao
* @Date 2021-10-25 下午 08:55
*/
@Component({
name: "DGBusinessQuery",
components: {
ProcessQuery,
UpcomingPeriodicInspection, UpcomingRiskWarning, TitleBar, CollectionManagement, AfterLoan, SMEMarketingPool },
})
export default class CommonFunctions extends Vue {
active: any = 0;
title = "对公业务查询"; // 页面标题
CommonFunctionsList = [
{AgencyName: "流程查询", iconName: "", actionType: "LCCX", path: "/ProcessQuery"},
// {AgencyName: "合同签订及出账历史查询", iconName: "", actionType: "DHJC", path: "/AfterLoan"},
{AgencyName: "贷后检查历史查询", iconName: "", actionType: "ZXYX", path: "/UpcomingPeriodicInspection"},
{AgencyName: "风险预警历史查询", iconName: "", actionType: "CSGL", path: "/CollectionManagement"},
];
onClick() {
console.log(111111);
}
mounted() {
this.active = sessionStorage.getItem("DGCXactiveKey") ? Number(sessionStorage.getItem('DGCXactiveKey')) : 0;
}
onChange() {
sessionStorage.setItem("DGCXactiveKey", this.active);
}
}
</script>
<style scoped>
.text-content {
width: 100%;
height: calc(100vh - 60px);
display: flex;
justify-content: flex-start;
}
.text-content-left {
width: 25%;
background-color: rgba(245, 245, 245, 1);
border: 1px solid rgba(222, 222, 222, 1);
}
.text-content-right {
width: 75%;
}
.label {
border-bottom: 1px solid #e0e1e2;
}
van-sidebar-item {
}
::v-deep .van-sidebar-item--select::before {
background-color: #FF574C;
height: 100%;
}
::v-deep .van-sidebar-item__text {
font-size: 18px;
}
::v-deep .text-content-left {
z-index: 2100;
height: calc(100vh - 60px);
overflow-y: auto;
}
::v-deep .van-sidebar-item__text:before {
content: "😊";
/*content: url("../../../../assets/images/logo.png");*/
width: 30px;
height: 30px;
border-radius: 5px;
}
::v-deep .van-sidebar-item--select > div:before {
background-color: #00a3ff;
}
</style>
<template>
<div class="d-page d-flex flex-column">
<title-bar :title="title" @clickLef="onClick">
<van-icon slot="left" name="cross" size="30" />
</title-bar>
<anchor-nav ref="anchorNav" :navList="navList">
<template slot="baseInfo">
<div class="flow-y-dhc">
<table-double-view :data="dataBasic" :keyValue="keyValueDouble"></table-double-view>
</div>
</template>
</anchor-nav>
</div>
</template>
<script lang="ts">
import { Component, Vue } from "vue-property-decorator";
import BasicInformation from "@/components/customer-information/business-information/overview/BasicInformation.vue";
import TableDoubleView from "@/public/TableDoubleView.vue";
import TableSingleView from "@/public/TableSingleView.vue";
import Public from "@/public/ts/Public";
import nettyApi from "@/constants/api/ms-netty/netty.api";
import { NativeUI } from "@/public/ts/NativeUI";
import IF from "@/public/factory/InterFaceFactory";
import { toMillion } from "@/public/ts/money.util";
import { getText } from "@/stores";
import { forTime } from "@/public/ts/date.util";
/**
* @Description 流程查询信息
* @Author Kangzhirui
* @Date 2022-3-3 下午 21.48
*/
@Component({
name: "HistoryView",
components: { BasicInformation, TableDoubleView, TableSingleView }
})
export default class HistoryView extends Vue {
title = "审批历史流程详情"; // 页面标题
indexList = ["审批历史信息"];
custName = "";
custType = "";
custState = "";
resetvalue = false;
pageNo = 1;
pullup = true;
pulldown = true;
nodata = true;
IF: any;
//流程查询
pk_value = '';
cus_id = '';
list: any = [];
navList = [{ key: "baseInfo", titleText: "审批历史信息" }];
keyValueDouble = {
wfi_node_id: '节点编号',
wfi_node_name: '审批岗位',
SPJLLS: '处理结果',
app_advice: '意见',
app_org_displayname: '审批机构名称',
app_user_displayname: '审批人',
operate_time: '审批时间',
};
dataBasic = {
wfi_node_id: this.$store.getters.getCusInfo.wfi_node_id,
wfi_node_name: this.$store.getters.getCusInfo.wfi_node_name,
SPJLLS: this.$store.getters.getCusInfo.SPJLLS,
app_advice: this.$store.getters.getCusInfo.app_advice,
app_org_displayname: this.$store.getters.getCusInfo.app_org_displayname,
app_user_displayname: this.$store.getters.getCusInfo.app_user_displayname,
operate_time: this.$store.getters.getCusInfo.operate_time,
};
/**
* @Description 审批历史信息
* @Author Kangzhirui
* @Date 2022-03-03 下午 21:48
*/
/**
* @Description 对公流程列表查询
* @Author Kangzhirui
* @Date 2022-3-3 下午 21.48
*/
selectProcessHistory(pageNo = 1) {
this.nodata = true;
const param = {
// user_code: sessionStorage.getItem('user_code'),
//流程查询
instanceid: this.$store.getters.getCusInfo.instanceid, //业务申请号
nodeid: this.$store.getters.getCusInfo.nodeid,
orgid: this.$store.getters.getCusInfo.orgid,
menuId: 'wdgzt_ybsx',
wfsign: this.$store.getters.getCusInfo.wfsign, //流程标识
maxLine: "10",//每页最大数据
targetPage: pageNo,//目标页
tc: nettyApi.TRADE_CODE.selectProcessHistory
};
NativeUI.showWaiting("正在查询...");
return IF.transferDataInter(nettyApi.commonRq, param).then((res: any) => {
console.log('az', res);
NativeUI.closeWaiting();
if (res.rc == "1") {
if (pageNo == 1) {
this.list = res.iCollWL__resultset;
} else {
this.list = this.list.concat(res.iCollWL__resultset);
}
} else {
NativeUI.toast(res.msg);
}
if (res.iCollWL__resultset && res.iCollWL__resultset.length < 10) {
this.pullup = false;
}
if (this.list.length == 0) {
this.nodata = false;
this.pulldown = false;
}
});
}
onClick() {
console.log(111111);
}
mounted() {
this.selectProcessHistory();
}
}
</script>
<style scoped>
span {
color: #999999;
font-size: 16px;
}
.verify-view-details {
float: right;
margin-bottom: 10px;
color: #fd5065;
font-size: 12px;
border: 1px solid #fd5065;
border-radius: 4px;
background-color: white;
padding: 0.5% 0.8%;
font-family: "苹方 粗体", "苹方 中等", "苹方";
}
/*右侧导航栏*/
::v-deep .van-index-bar__sidebar {
top: 130px !important;
right: 5px !important;
transform: unset;
}
</style>
<template>
<div class="d-page d-flex flex-column">
<title-bar :title="title">
<van-icon slot="left" name="cross" size="24" />
</title-bar>
<div style="margin-left: 50px" v-if="repaymentInfo.length!=0">
<sub-title>贷款试算结果</sub-title>
<div class="content-box">
<div class="total-box" >
<div style="font-size: 16px">还款总额(元):{{ totalMoney }}</div>
<div style="font-size: 16px">利息总额(元):{{ totalInterest }}</div>
</div>
<table style="margin-left: 20px;width: 80%;margin-top: 30px" class="customer-management-information-form">
<tr>
<td>期次</td>
<td>还款金额(元)</td>
<td>本金(元)</td>
<td>利息(元)</td>
</tr>
<tr v-if="repaymentInfo.length == 0">
<td style="text-align: center" colspan="6">暂无数据!</td>
</tr>
<tr
v-if="repaymentInfo.length != 0 && item"
v-for="(item, index) in repaymentInfo"
:key="index"
>
<td>{{ index + 1 }}</td>
<td>{{ item.everyMonthMoney }}</td>
<td>{{ item.monthLoanMoney }}</td>
<td>{{ item.curMonthInterest }}</td>
</tr>
</table>
</div>
</div>
<div v-else align="center">
<img
src="@/assets/images/nodata.png"
style="width: 40%; margin-top: 137px"
/>
</div>
</div>
</template>
<script lang="ts">
import { Component, Vue } from "vue-property-decorator";
import TitleBar from "@/components/general/TitleBar.vue";
import { NativeUI } from "@/public/ts/NativeUI";
import TableDoubleView from "@/public/TableDoubleView.vue";
import TableSingleView from "@/public/TableSingleView.vue";
import Public from "@/public/ts/Public";
/**
* @Description 项目信息
* @Author JiangTao
* @Date 2021-11-10 下午 03:17
*/
@Component({
name: "LoanCalculationDetail",
components: { TitleBar }
})
export default class LoanCalculationDetail extends Vue {
title = "贷款试算结果"; // 页面标题
repaymentInfo = this.$store.getters.getCalculateRes;
totalMoney: any = 0; //总共要还的钱
totalInterest: any = 0;//总共要还的利息
// keyValueDouble: any = {
// totalMoney: "还款总额(元)",
// totalInterest: "利息总额(元)"
// };
// totalInfo: any = {};
mounted() {
console.log(this.repaymentInfo);
this.formatNum();
}
formatNum() {
this.totalInterest = Public.formatMoney(this.repaymentInfo[this.repaymentInfo.length - 1].repayInterestMoney, ",");
for (let i = 0; i < this.repaymentInfo.length; i++) {
if (i == this.repaymentInfo.length - 1) {
let temp: any =
parseFloat(this.repaymentInfo[this.repaymentInfo.length - 1].repayLoanMoney) +
parseFloat(this.repaymentInfo[this.repaymentInfo.length - 1].repayInterestMoney);
temp = String(temp);
this.totalMoney = Public.formatMoney(temp, ",");
console.log(temp, "=============================");
}
this.repaymentInfo[i].curMonthInterest = Public.formatMoney(this.repaymentInfo[i].curMonthInterest, ",");
this.repaymentInfo[i].monthLoanMoney = Public.formatMoney(this.repaymentInfo[i].monthLoanMoney, ",");
this.repaymentInfo[i].everyMonthMoney = Public.formatMoney(this.repaymentInfo[i].everyMonthMoney, ",");
this.repaymentInfo[i].repayLoanMoney = Public.formatMoney(this.repaymentInfo[i].repayLoanMoney, ",");
this.repaymentInfo[i].repayInterestMoney = Public.formatMoney(this.repaymentInfo[i].repayInterestMoney, ",");
}
}
}
</script>
<style scoped>
::v-deep .van-index-bar__sidebar {
top: 130px !important;
right: 5px !important;
transform: unset;
}
.no-data-class {
width: 40%;
}
.content-box {
margin-bottom: 1.5%;
overflow-y: auto;
overflow: scroll;
height: calc(100vh - 170px);
}
.total-box{
width: 60%;
/*margin-top: 30px;*/
justify-content: space-around;
/*margin: 20px;*/
margin-right: 40%;
font-size: 16px;
display: flex
}
</style>
<template>
<div class="d-page d-flex flex-column">
<title-bar :title="title">
<van-icon slot="left" name="cross" size="20" />
</title-bar>
<div class="deal-with-top">
<div class="deal-with-top-left">
<div @click="goCompanyPage">
<svg class="icon iconsex" aria-hidden="true">
<use xlink:href="#icon-gongsimingcheng"></use>
</svg>
</div>
<div @click="goCompanyPage">{{ cusInfo.cus_name }}</div>
<div>任务编号:{{ cusInfo.task_no }}</div>
</div>
</div>
<div class="deal-with-bottom">
<tab-nav :tabList="tabList" @tabClick="tabClick" />
</div>
<div v-show="active == 0" class="h-scroller activedata">
<div class="businessInfo-box">
<div class="left-box">
<div
class="left-part"
v-for="(item, index) in vedioInfoTitles"
:key="index"
>
<div
class="left-item"
:class="{ changeStyle: index == activeVedio }"
@click="activeVedio = index"
>
<div class="item-line-1">{{ item.name }}</div>
<div class="item-line-2">{{ item.value }}</div>
</div>
<span
v-show="index == activeVedio"
class="iconfont icon-right-s icon-style"
></span>
</div>
</div>
<div class="right-box2">
<div class="right-title">
影像采集{{ temp.length }}
<span class="iconfont upload-icon icon-pxshangchuan">批量上传</span>
</div>
<div class="right-scroller">
<div v-show="activeVedio == 0">
<div v-for="(item, index) in temp" :key="index">
<div class="vedio-item-box">
<div class="vedio-left-box">
<span class="vedio-line1"
>{{ index + 1 }}、影像名字<span style="color: red"
>*</span
></span
>
<span class="vedio-line2"
>(图片:0/0 视频:0/0 音频:0/0)</span
>
</div>
<div class="vedio-right-box">
<div class="takephoto">
<div>
<svg
style="width: 40px; height: 40px"
class="icon icon_paizhao"
aria-hidden="true"
>
<use xlink:href="#icon-prompt-info"></use>
</svg>
</div>
<div>提示信息</div>
</div>
<div class="reference-example">
<div>
<svg
style="width: 40px; height: 40px"
class="icon icon_paizhao"
aria-hidden="true"
>
<use xlink:href="#icon-icon_anliguanli"></use>
</svg>
</div>
<div>参考样例</div>
</div>
<div class="photograph">
<div>
<svg
style="width: 40px; height: 40px"
class="icon icon_paizhao"
aria-hidden="true"
>
<use xlink:href="#icon-a-02_paizhao"></use>
</svg>
</div>
<div>拍照</div>
</div>
</div>
</div>
</div>
</div>
<div v-show="activeVedio == 1">
<div class="vedio-item-box">
<div class="vedio-left-box">
<span class="vedio-line1"
>1、影像名字<span style="color: red">*</span></span
>
<span class="vedio-line2"
>(图片:0/0 视频:0/0 音频:0/0)</span
>
</div>
<div class="vedio-right-box">
<div class="takephoto">
<div>
<svg
style="width: 40px; height: 40px"
class="icon icon_paizhao"
aria-hidden="true"
>
<use xlink:href="#icon-prompt-info"></use>
</svg>
</div>
<div>提示信息</div>
</div>
<div class="reference-example">
<div>
<svg
style="width: 40px; height: 40px"
class="icon icon_paizhao"
aria-hidden="true"
>
<use xlink:href="#icon-icon_anliguanli"></use>
</svg>
</div>
<div>参考样例</div>
</div>
<div class="photograph">
<div>
<svg
style="width: 40px; height: 40px"
class="icon icon_paizhao"
aria-hidden="true"
>
<use xlink:href="#icon-a-02_paizhao"></use>
</svg>
</div>
<div>拍照</div>
</div>
</div>
</div>
</div>
<div v-show="activeVedio == 2">
<div class="vedio-item-box">
<div class="vedio-left-box">
<span class="vedio-line1"
>1、影像名字<span style="color: red">*</span></span
>
<span class="vedio-line2"
>(图片:0/0 视频:0/0 音频:0/0)</span
>
</div>
<div class="vedio-right-box">
<div class="takephoto">
<div>
<svg
style="width: 40px; height: 40px"
class="icon icon_paizhao"
aria-hidden="true"
>
<use xlink:href="#icon-prompt-info"></use>
</svg>
</div>
<div>提示信息</div>
</div>
<div class="reference-example">
<div>
<svg
style="width: 40px; height: 40px"
class="icon icon_paizhao"
aria-hidden="true"
>
<use xlink:href="#icon-icon_anliguanli"></use>
</svg>
</div>
<div>参考样例</div>
</div>
<div class="photograph">
<div>
<svg
style="width: 40px; height: 40px"
class="icon icon_paizhao"
aria-hidden="true"
>
<use xlink:href="#icon-a-02_paizhao"></use>
</svg>
</div>
<div>拍照</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<div
v-show="active == 1"
class="information-container h-scroller flex-1-dhc activedata"
>
<van-index-bar highlight-color="#F79400" :index-list="indexListIOU">
<div style="padding-bottom: 50px">
<van-index-anchor index="基本信息">
<sub-title>基本信息</sub-title>
</van-index-anchor>
<table-double-view
:keyValue="companyBasicInfoKey"
:data="companyBasicInfo"
></table-double-view>
<van-index-anchor index="授信情况">
<sub-title>授信情况</sub-title>
</van-index-anchor>
<div v-for="(item, index) in creditInfo" :key="index">
<table-double-view
:keyValue="keyValueBasic"
:data="item"
></table-double-view>
<div class="line-bottom"></div>
</div>
<van-index-anchor index="担保人">
<sub-title>担保人</sub-title>
</van-index-anchor>
<div v-for="(item, index) in grtInfo" :key="index + 'a'">
<table-double-view
:keyValue="keyValueBasic2"
:data="item"
></table-double-view>
<div class="line-bottom"></div>
</div>
<van-index-anchor index="担保物">
<sub-title>担保物</sub-title>
</van-index-anchor>
<div v-for="(item, index) in grtStaffInfo" :key="index + 'b'">
<table-double-view
:keyValue="keyValueBasic3"
:data="item"
></table-double-view>
<div class="line-bottom"></div>
</div>
</div>
</van-index-bar>
</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 nettyApi from "@/constants/api/ms-netty/netty.api.ts";
import IF from "@/public/factory/InterFaceFactory";
import { NativeUI } from "@/public/ts/NativeUI";
import { DatetimePicker } from "vant";
import { DropdownMenu, DropdownItem } from "vant";
import BasicInformation from "@/components/customer-information/business-information/overview/BasicInformation.vue";
import TableDoubleView from "@/public/TableDoubleView.vue";
import { TabData } from "@/model/entity/TabData";
import Public from "@/public/ts/Public";
// import emUtil from '@/public/js/em.util';
// import WaterMarkImage from '@/public/components/WaterMarkImage';
// import mediaUtil from '@/public/media/MediaUtils';
// import SCENE from '@/constants/enum/scene.enum';
// import CATALOG from '@/constants/enum/catalog.enum';
// import OBJ_PREFIX from '@/constants/enum/obj.prefix';
Vue.use(DatetimePicker);
Vue.use(DropdownMenu);
Vue.use(DropdownItem);
Vue.use(Tab);
Vue.use(Tabs);
/**
* @Description 催收详情
* @Author JiangTao
* @Date 2021-11-10 下午 03:51
*/
@Component({
name: "LoanCheckDetailView",
components: { TitleBar, BasicInformation, TableDoubleView },
})
export default class LoanCheckDetailView extends Vue {
title = "定期检查"; // 页面标题
// indexList = ["基本信息", "基本信息1"]; :load-data="onloaddata" RiskWarning
tabList = [
{ tabText: "影像上传", tabId: "1" },
{ tabText: "业务信息", tabId: "2" },
];
businessTitles = [
{ name: "授信企业", value: "未采集" },
{ name: "担保人", value: "未采集" },
{ name: "担保物", value: "未采集" },
];
vedioInfoTitles = [
{ name: "授信情况影像", value: "未采集" },
{ name: "担保人影像", value: "未采集" },
{ name: "担保物影像", value: "未采集" },
];
indexListIOU = ["基本信息", "授信情况", "担保人", "担保物"];
active = 0;
activeInfo = 0;
activeVedio = 0;
cusInfo = this.$store.getters.getCtfInstNo; //传来的用户信息
postloanObj = this.$store.getters.getCtfInstNo;
keyValueBasic = {
prd_name: "产品名称",
amt: "贷款金额(元)",
balance: "贷款余额(元)",
cla_cnName: "风险等级",
overdue_amt: "逾期本金(元)",
delay_int_cumu1: "欠息金额(元)",
loan_form_cnName: "贷款形式",
assure_means_main_cnName: "担保方式",
extension_times: "展期次数",
start_date: "起始日",
end_date: "到期日",
};
keyValueBasic2 = {
guar_cont_no: "担保合同号",
guar_name: "担保人",
guar_cont_type_cnName: "担保合同类型",
guar_way_cnName: "担保方式",
guar_amt: "担保金额(元)",
};
keyValueBasic3 = {
guar_cont_no: "担保合同号",
guide_type_cnName: "抵质押品类型",
book_amt: "押品价值(元)",
addr: "抵质押物地址",
};
companyBasicInfoKey = {
task_exe_name: "主管客户经理",
help_name: "协办客户经理",
check_time: "检查时间",
gene_way_cnName: "检查方式",
input_br_name: "填报机构",
crt_date: "贷后任务产生时间",
};
// resultInfo: {}, //查询到的详情结果 检查时间、检查方式、填报机构、贷后任务生成时间:
creditInfo: any[] = []; //企业信息
grtInfo: any[] = []; //个人信息
grtStaffInfo: any[] = []; //抵押物信息
refreshing = false;
companyInfo = {}; //存储公司信息
companyBasicInfo = {}; //公司基本信息
pullup = true;
pulldown = true;
nodata = true;
temp = ["1", "2", "3", "4", "5"];
cus_name: any = "";
mounted() {
this.selectDetail();
}
/**
* @Description 标签切换
* @Author JiangTao
* @Date 2022-01-17 下午 05:02
*/
change() {
if (this.active == 0) {
} else if (this.active == 1) {
} else if (this.active == 2) {
}
}
/**
* 贷后详情查询
* wanghang
* 2022年1月27日
*/
selectDetail() {
this.nodata = true;
this.pullup = true;
this.pulldown = true;
let postloanObj = this.postloanObj;
let params = {
task_no: postloanObj.task_no,
cus_id: postloanObj.cus_id,
tc: nettyApi.TRADE_CODE.selectCompanylonaDetail,
};
// this.setPostLoanDetail({});
NativeUI.showWaiting();
return IF.transferDataInter(nettyApi.commonRq, params).then((res: any) => {
NativeUI.closeWaiting();
if (res.rc == "1") {
//授信信息
this.creditInfo = res.credit_list;
this.grtInfo = res.grt_list;
this.grtStaffInfo = res.grt_g_list;
this.grtStaffInfo = this.grtStaffInfo.concat(res.grt_p_list);
this.companyBasicInfo = res;
//格式化金额
for (let i = 0; i < this.grtStaffInfo.length; i++) {
this.grtStaffInfo[i].book_amt = Public.formatMoney(
this.grtStaffInfo[i].book_amt,
","
);
}
for (let i = 0; i < this.grtInfo.length; i++) {
this.grtInfo[i].guar_amt = Public.formatMoney(
this.grtInfo[i].guar_amt,
","
);
}
for (let i = 0; i < this.creditInfo.length; i++) {
this.creditInfo[i].amt = Public.formatMoney(
this.creditInfo[i].amt,
","
);
this.creditInfo[i].balance = Public.formatMoney(
this.creditInfo[i].balance,
","
);
}
} else {
NativeUI.toast(res.msg);
}
if (res.creditInfo && res.creditInfo.length < 10) {
this.pullup = false;
}
if (this.creditInfo.length == 0) {
this.nodata = false;
this.pulldown = false;
}
});
}
tabClick(item: TabData) {
this.active = parseInt(item.tabId) - 1;
}
//影像资料查询
activated() {
this.cus_name = this.$route.query.cus_name;
this.$router.beforeEach((to, from, next) => {
if (from.path == "/UpcomingTask") {
this.active = 0;
this.selectDetail();
// this.selectCollectStatus();
}
next();
});
}
//上拉刷新
onrefreshdata() {
this.selectDetail();
}
//点击公司图片,去到公司主页
goCompanyPage() {
NativeUI.confirm("页面跳转", "去到公司详情页").then(() => {
this.selectCustInfo();
});
}
//查询客户信息
selectCustInfo(pageNo = 1) {
const param = {
cus_status: "",
cus_type: "",
cus_name: this.cusInfo.cus_name,
maxLine: "10",
targetPage: pageNo,
tc: nettyApi.TRADE_CODE.selectXDGSXX,
};
NativeUI.showWaiting("正在查询...");
return IF.transferDataInter(nettyApi.commonRq, param).then((res: any) => {
NativeUI.closeWaiting();
if (res.rc == "1") {
if (pageNo == 1) {
if (res.CusComList.length == 0) {
//查询不到客户
NativeUI.toast("暂无客户信息");
} else {
this.companyInfo = res.CusComList[0];
console.log(this.companyInfo);
this.$store.commit("setEmpty");
this.$store.commit("setCusInfo", this.companyInfo);
this.$router.push({
path: "/CompanyDetails",
});
}
}
} else {
NativeUI.toast(res.msg);
}
});
}
// /**
// * @Description 借款人信用状况调查
// * @Author JiangTao
// * @Date 2021-12-01 下午 04:47
// */
// selectDHXQ() {
// let loanDetail = this.postloanObj;
// let credit_list = loanDetail.credit_list;
// this.itemData = credit_list;
// if (this.itemData && this.itemData.length > 0) {
// this.no_data = false;
// }
// }
/**
* 查询文件数量
*/
// selectFileCount(catalog) {
// mediaUtil
// .selectByCatalog({
// fileCatalog: catalog,
// ...this.pathMap,
// })
// .then((res) => {
// this.localFiles = res.localFiles.concat(res.storeFiles);
// this.serverFiles = res.serverFiles;
// });
// }
// /**
// * 水印
// */
// setWaterMarkInfo() {
// const userInfo = this.getUserInfo();
// this.waterMarkInfo.user = userInfo.userName;
// emUtil.getLocation().then((address) => {
// this.waterMarkInfo.address = address;
// });
// }
/*
* @Description 拍照
* @Author JiangTao
* @Date 2021-12-01 下午 04:47
*/
// takePhoto(catalog) {
// this.setWaterMarkInfo();
// this.fileCatalog = catalog || this.fileCatalog;
// emUtil.captureImage().then((localData) => {
// this.imageData = localData;
// this.showModal = true;
// });
// }
// /**
// * 保存图片
// * @param dataURL
// * @param file
// */
// saveImage(dataURL, file) {
// const cusInfo = this.getPostLoanInfObj();
// const media = mediaUtil.getMediaBean();
// media.fileName = file.name;
// media.fileSize = file.size;
// media.custId = cusInfo.cus_id;
// media.scene = this.pathMap.scene;
// media.objId = this.pathMap.objId;
// media.file = file;
// media.fileCatalog = this.fileCatalog;
// mediaUtil
// .add(media)
// .then((res) => {
// console.log("保存图片成功");
// console.log(res);
// })
// .catch((err) => {
// console.error(err);
// });
// }
// /**
// * 结束拍照
// */
// takeFinish() {
// this.selectFileCount(CATALOG.HBCX.code);
// }
// /**
// * 浏览图片
// */
// imageBrowser(catalog) {
// this.$router.push({
// path: "/mediabrowse",
// query: {
// fileCatalog: catalog,
// ...this.pathMap,
// },
// });
// }
}
</script>
<style scoped>
.deal-with-top {
width: 100%;
display: flex;
justify-content: space-between;
align-items: center;
padding: 1% 1.5%;
border-bottom: 1px solid #efefef;
background-color: #fffafa;
/* z-index: 700; */
}
.deal-with-top-left {
width: 80%;
display: flex;
justify-content: flex-start;
align-items: flex-end;
}
.deal-with-top-left > div:nth-child(2) {
margin-left: 1%;
margin-right: 2%;
padding-top: 5px;
font-size: 129%;
line-height: 30px;
}
.deal-with-top-left > div:nth-child(3) {
}
.deal-with-top-left img {
width: 2.42%;
padding-top: -1%;
}
.deal-with-top-right {
width: 9.51%;
}
.deal-with-top-right button {
width: 100%;
font-size: 115%;
padding: 2.6% 0;
background-color: white;
border: 1px solid #fd5065;
color: #fd5065;
border-radius: 3px;
}
.label div {
margin-right: 1%;
background-color: white;
border: 1px solid #999999;
border-bottom: 0;
font-size: 115%;
padding: 0.58% 1.2%;
border-top-right-radius: 7px;
border-top-left-radius: 7px;
}
.deal-with-bottom {
width: 92%;
margin: 10px auto;
position: relative;
/* z-index: 9999; */
}
.iconsex {
width: 35px;
height: 35px;
}
::v-deep .van-tabs {
width: 100%;
}
::v-deep .van-tab {
margin: 0 10px;
border: 1px solid #e1e2e3;
border-top-right-radius: 15px;
border-top-left-radius: 15px;
border-bottom: 0;
}
::v-deep .van-tab--active {
border-color: #ff574c;
border-bottom-color: white;
}
::v-deep .van-tabs__wrap {
border-bottom: 1px solid #e1e2e3;
padding-right: 75%;
}
::v-deep .van-tabs__line {
margin-bottom: -2px;
/* z-index: 99999999; */
}
::v-deep .information-container {
padding-left: 10px !important;
}
.activedata {
margin-left: 4%;
}
::v-deep .van-index-bar__sidebar {
top: 60% !important;
}
.imagedata {
width: 100%;
height: 75px;
border-bottom: 1px solid #e1e2e3;
display: flex;
justify-content: space-between;
align-items: center;
}
.round-point {
width: 12px;
height: 12px;
border-radius: 50%;
margin-right: 4px;
}
.businessInfo-box {
width: 90%;
margin: 40px 5%;
display: flex;
}
.left-box {
width: 20%;
display: flex;
flex-direction: column;
}
.left-item {
width: 114px;
height: 62px;
margin-top: 20px;
background-color: #fff8f9;
color: #ff445b;
border-width: 1px;
border-style: solid;
border-color: rgba(255, 220, 224, 1);
border-radius: 5px;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
}
.changeStyle {
color: #fff;
background-color: #fd5065;
font-weight: bold;
}
.item-line-1 {
font-size: 16px;
}
.item-line-2 {
font-size: 12px;
}
.right-box {
width: 70%;
height: 100%;
}
.right-box2 {
width: 80%;
height: 100%;
}
.error-info {
color: #fd5065;
font-size: 16px;
font-weight: bold;
margin: auto;
display: flex;
margin-left: 30px;
}
.right-title {
font-size: 18px;
display: flex;
width: 100%;
font-weight: bold;
}
.upload-icon {
margin-left: auto;
color: #ff6e0d;
font-size: 14px;
font-weight: normal;
}
.vedio-item-box {
width: 100%;
height: 105px;
margin-top: 15px;
background-color: rgba(255, 249, 239, 1);
border-width: 1px;
border-style: solid;
border-color: rgba(215, 215, 215, 1);
border-radius: 10px;
box-shadow: 0px 0px 5px rgb(245 154 35 / 35%);
display: flex;
align-items: center;
}
.right-scroller {
overflow-y: scroll;
}
.vedio-left-box {
margin: 40px;
/* width: 300px; */
flex: 1;
display: flex;
flex-direction: column;
align-items: flex-start;
justify-content: flex-start;
}
.vedio-right-box {
width: 300px;
margin-left: 10%;
flex: 1;
display: flex;
align-items: center;
justify-content: center;
}
.vedio-line1 {
font-size: 20px;
font-weight: bold;
}
.vedio-line2 {
margin-top: 10px;
font-size: 14px;
margin-left: 5px;
}
.reference-example,
.photograph,
.takephoto {
display: flex;
flex: 1;
flex-direction: column;
justify-content: center;
align-items: center;
width: 30%;
}
.left-part {
display: flex;
align-items: center;
}
.icon-style {
margin-left: 0px;
position: relative;
color: #fd5065;
left: -6px;
}
.activedata {
margin-left: 4%;
}
.line-bottom {
width: 100%;
height: 1px;
background: #e0e1e2;
}
</style>
<template>
<div>
<title-bar title="网点查询" @clickLeft="onClick">
<van-icon slot="left" name="cross" size="24" />
</title-bar>
<!-- 百度地图-->
<baidu-map class="bm-view" ak="FP7zWR4e8lhxZ6v0IicoG1R5" :center="{ lng: this.upoint.lng, lat: this.upoint.lat }" :zoom="12" @ready="mapReady">
<bm-scale anchor="BMAP_ANCHOR_BOTTOM_LEFT"></bm-scale>
</baidu-map>
<div class="list">
<div class="list-top">
<van-tabs v-model="active">
<van-tab title="我的附近">
<nearby></nearby>
</van-tab>
<van-tab title="区域查询">
<Area></Area>
</van-tab>
<van-tab title="全部">
<all-outlets></all-outlets>
</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 { BaiduMap, BmScale } from "vue-baidu-map";
import AllOutlets from "@/components/workbench/company-common-functions/online-enquiry/AllOutlets.vue";
import Nearby from "@/components/workbench/company-common-functions/online-enquiry/Nearby.vue";
import Area from "@/components/workbench/company-common-functions/online-enquiry/Area.vue";
import { Tab, Tabs } from "vant";
Vue.use(Tab);
Vue.use(Tabs);
/**
* @Description 网点查询
* @Author JiangTao
* @Date 2021-11-10 下午 03:30
*/
@Component({
name: "OnlineEnquiry",
components: {
TitleBar,
BaiduMap,
BmScale,
AllOutlets,
Area,
Nearby,
},
})
export default class OnlineEnquiry extends Vue {
pageTitle = ""; // 页面标题
onClick() {
console.log(111111);
}
mounted() {
this.pageTitle = this.$route.meta?.name;
}
BMapGL: any = {};
map: any = {};
show = false;
upoint: any = { lng: 104.080998, lat: 30.595452 };
mapReady(bmap: any) {
this.BMapGL = bmap.BMap;
this.map = bmap.map;
}
}
</script>
<style scoped>
.bm-view {
position: absolute;
right: 0;
width: 71.8%;
height: calc(100vh - 60px);
}
.list {
height: calc(100vh - 60px);
width: 28.2%;
background-color: rgba(242, 242, 242, 1);
border-right: 1px solid rgb(217, 207, 207);
}
.list-top {
width: 100%;
/*padding: 0 5%;*/
padding-top: 2.5%;
margin-bottom: 3%;
background-color: white;
display: flex;
justify-content: space-around;
}
.list-top > * {
font-size: 115%;
color: #999999;
padding: 3%;
}
::v-deep .van-tabs--line {
width: 100%;
background-color: #f2f2f2;
padding: 0;
}
::v-deep .van-tab__text--ellipsis {
font-size: 16px;
}
::v-deep .van-tab--active {
color: #fd5065;
}
::v-deep .van-tabs__line {
width: 25%;
}
::v-deep .van-tabs__wrap {
margin-bottom: 3%;
}
</style>
<template>
<div class="d-page d-flex flex-column">
<title-bar :title="title" @clickLef="onClick">
<van-icon slot="left" name="cross" size="30" />
</title-bar>
<anchor-nav ref="anchorNav" :navList="navList">
<template slot="baseInfo">
<div class="flow-y-dhc">
<button class="verify-view-details" @click="HistoryClick">审批流程历史查询</button>
<table-double-view :data="dataBasic" :keyValue="keyValueDouble"></table-double-view>
</div>
</template>
</anchor-nav>
</div>
</template>
<script lang="ts">
import { Component, Vue } from "vue-property-decorator";
import BasicInformation from "@/components/customer-information/business-information/overview/BasicInformation.vue";
import TableDoubleView from "@/public/TableDoubleView.vue";
import TableSingleView from "@/public/TableSingleView.vue";
import Public from "@/public/ts/Public";
import nettyApi from "@/constants/api/ms-netty/netty.api";
import { NativeUI } from "@/public/ts/NativeUI";
import IF from "@/public/factory/InterFaceFactory";
import { toMillion } from "@/public/ts/money.util";
import { getText } from "@/stores";
import { forTime } from "@/public/ts/date.util";
/**
* @Description 流程查询信息
* @Author Kangzhirui
* @Date 2022-3-3 下午 21.48
*/
@Component({
name: "ProcessView",
components: { BasicInformation, TableDoubleView, TableSingleView }
})
export default class ProcessView extends Vue {
title = "流程查询信息"; // 页面标题
indexList = ["流程信息"];
custName = "";
custType = "";
custState = "";
resetvalue = false;
pageNo = 1;
pullup = true;
pulldown = true;
nodata = true;
IF: any;
//流程查询
pk_value = '';
cus_id = '';
list: any = [];
navList = [{ key: "baseInfo", titleText: "流程信息" }];
keyValueDouble = {
appl_type: '业务类型',
appl_type_cnName: '业务类型名称',
pk_value: '业务申请号',
cus_name: '客户名称',
cus_id: '客户号',
amt: '金额',
prenodename: '上一节点',
nodename: '当前节点',
currentnodeusers_displayname: '流程当前办理人',
wfi_apply_org_displayname: '客户经理所属机构',
instanceid: '流程实例编号',
nodeid: '节点编号',
wfsign: '流程标识',
nodestarttime: '当前任务开始时间'
};
dataBasic = {
appl_type: this.$store.getters.getCusInfo.appl_type,
appl_type_cnName: this.$store.getters.getCusInfo.appl_type_cnName,
pk_value: this.$store.getters.getCusInfo.pk_value,
cus_name: this.$store.getters.getCusInfo.cus_name,
cus_id: this.$store.getters.getCusInfo.cus_id,
amt: this.$store.getters.getCusInfo.amt,
prenodename: this.$store.getters.getCusInfo.prenodename,
nodename: this.$store.getters.getCusInfo.nodename,
currentnodeusers_displayname: this.$store.getters.getCusInfo.currentnodeusers_displayname,
wfi_apply_org_displayname: this.$store.getters.getCusInfo.wfi_apply_org_displayname,
instanceid: this.$store.getters.getCusInfo.instanceid,
nodeid: this.$store.getters.getCusInfo.nodeid,
wfsign: this.$store.getters.getCusInfo.wfsign, //流程标识
nodestarttime: this.$store.getters.getCusInfo.nodestarttime
};
HistoryClick() {
this.$router.push({
path: "HistoryView"
});
}
/**
* @Description 流程信息查询
* @Author Kangzhirui
* @Date 2022-03-03 下午 21:48
*/
/**
* @Description 对公流程列表查询
* @Author Kangzhirui
* @Date 2022-3-3 下午 21.48
*/
selectProcess(pageNo = 1) {
this.nodata = true;
const param = {
// user_code: sessionStorage.getItem('user_code'),
//流程查询
pk_value: this.$store.getters.getCusInfo.pk_value, //业务申请号
cus_id: this.cus_id, //客户号
maxLine: "10",//每页最大数据
targetPage: pageNo,//目标页
tc: nettyApi.TRADE_CODE.selectProcess
};
NativeUI.showWaiting("正在查询...");
return IF.transferDataInter(nettyApi.commonRq, param).then((res: any) => {
NativeUI.closeWaiting();
if (res.rc == "1") {
if (pageNo == 1) {
this.list = res.iCollWL__resultset;
} else {
this.list = this.list.concat(res.iCollWL__resultset);
}
} else {
NativeUI.toast(res.msg);
}
if (res.iCollWL__resultset && res.iCollWL__resultset.length < 10) {
this.pullup = false;
}
if (this.list.length == 0) {
this.nodata = false;
this.pulldown = false;
}
});
}
onClick() {
console.log(111111);
}
mounted() {
this.selectProcess();
}
}
</script>
<style scoped>
span {
color: #999999;
font-size: 16px;
}
.verify-view-details {
float: right;
margin-bottom: 10px;
color: #fd5065;
font-size: 12px;
border: 1px solid #fd5065;
border-radius: 4px;
background-color: white;
padding: 0.5% 0.8%;
font-family: "苹方 粗体", "苹方 中等", "苹方";
}
/*右侧导航栏*/
::v-deep .van-index-bar__sidebar {
top: 130px !important;
right: 5px !important;
transform: unset;
}
</style>
<template>
<div class="d-page d-flex flex-column">
<title-bar :title="title">
<van-icon slot="left" name="cross" size="24" />
</title-bar>
<div style="margin-left: 50px" v-if="repaymentInfo.length!=0">
<sub-title>随意分提用测算</sub-title>
<div class="content-box">
<table style="margin-left: 20px;width: 80%;margin-top: 30px" class="customer-management-information-form">
<tr>
<td>期次</td>
<td>偿还日期</td>
<td>偿还本息(元)</td>
<td>偿还利息(元)</td>
<td>偿还本金(元)</td>
</tr>
<tr v-if="repaymentInfo.length == 0">
<td style="text-align: center" colspan="6">暂无数据!</td>
</tr>
<tr
v-if="repaymentInfo.length != 0 && item"
v-for="(item, index) in repaymentInfo"
:key="index"
>
<td>{{ index + 1 }}</td>
<td>{{ getDate(item.date) }}</td>
<td>{{ item.CMoney }}</td>
<td>{{ item.money }}</td>
<td>{{ item.BMoney }}</td>
</tr>
</table>
</div>
</div>
<div v-else align="center">
<img
src="@/assets/images/nodata.png"
style="width: 40%; margin-top: 137px"
/>
</div>
</div>
</template>
<script lang="ts">
import { Component, Vue } from "vue-property-decorator";
import TitleBar from "@/components/general/TitleBar.vue";
import { NativeUI } from "@/public/ts/NativeUI";
import TableDoubleView from "@/public/TableDoubleView.vue";
import TableSingleView from "@/public/TableSingleView.vue";
import Public from "@/public/ts/Public";
/**
*@description: 随意分试算详情数据处理
*@author: wanghang
*@date: 2022/2/24
*/
@Component({
name: "RepaymentTrialDetail",
components: { TitleBar }
})
export default class RepaymentTrialDetail extends Vue {
title = "随意分提用试算"; // 页面标题
repaymentInfo = this.$store.getters.getCalculateRes;
mounted() {
console.log(this.repaymentInfo);
this.formatNum();
}
formatNum() {
for (let i = 0; i < this.repaymentInfo.length; i++) {
this.repaymentInfo[i].CMoney = Public.formatMoney(this.repaymentInfo[i].CMoney, ",");
this.repaymentInfo[i].BMoney = Public.formatMoney(this.repaymentInfo[i].BMoney, ",");
this.repaymentInfo[i].money = Public.formatMoney(this.repaymentInfo[i].money, ",");
}
}
getDate(date:any) {
return date.year + '' + date.monthValue + '' + date.dayOfMonth + '';
}
}
</script>
<style scoped>
::v-deep .van-index-bar__sidebar {
top: 130px !important;
right: 5px !important;
transform: unset;
}
.no-data-class {
width: 40%;
}
.content-box {
margin-bottom: 1.5%;
overflow-y: auto;
overflow: scroll;
height: calc(100vh - 170px);
}
.total-box{
width: 60%;
/*margin-top: 30px;*/
justify-content: space-around;
/*margin: 20px;*/
margin-right: 40%;
font-size: 16px;
display: flex
}
</style>
<template>
<div class="d-page d-flex flex-column">
<title-bar :title="title">
<van-icon slot="left" name="cross" size="20" />
</title-bar>
<div class="deal-with-top">
<div class="deal-with-top-left">
<div>
<svg class="icon iconsex" aria-hidden="true">
<use xlink:href="#icon-gongsimingcheng"></use>
</svg>
</div>
<div>{{ cusInfo.cus_name }}</div>
<div>任务编号:{{ cusInfo.serno }}</div>
</div>
<div
class="deal-with-top-right"
@click="
selectRiskProcess();
"
>
<button>提交</button>
</div>
</div>
<div class="deal-with-bottom">
<tab-nav :tabList="tabList" @tabClick="tabClick" />
</div>
<div
v-show="active == 0"
style="margin-right: 10%"
class="h-scroller flex-1-dhc activedata"
>
<!-- <van-index-bar highlight-color="#F79400" :index-list="indexListIOU1">-->
<div style="padding-bottom: 50px">
<sub-title>红色预警信号</sub-title>
<!-- <div class="content-line1" style="display: flex">-->
<!-- <span-->
<!-- :style="{-->
<!-- background: colorList[rewSignalList.rew_level / 10 - 1],-->
<!-- }"-->
<!-- class="round-point"-->
<!-- />-->
<!-- <span-->
<!-- :style="{ color: colorList[rewSignalList.rew_level / 10 - 1] }"-->
<!-- class="rule-name"-->
<!-- >{{ rewSignalList.rew_level_cnName }}预警</span-->
<!-- >-->
<!-- </div>-->
<!-- <table-double-view-->
<!-- :keyValue="rewSignalTitles"-->
<!-- :data="rewSignalList"-->
<!-- ></table-double-view>-->
<!-- rule_type: "规则大类",-->
<!-- data_source: "数据源",-->
<!-- incr_type_cnName: "触发类型",-->
<!-- rule_name: "规则名称",-->
<!-- occur_date: "信号生成日期",-->
<!-- rew_desc: "预警说明"-->
<div>
<table class="customer-management-information-form">
<tr>
<td>预警等级</td>
<td>规则大类</td>
<td>数据源</td>
<td>触发类型</td>
<td>规则名称</td>
<td>信号生成日期</td>
<td class="desc-width">预警说明</td>
<td style="width: 60px">处理</td>
</tr>
<tr v-if="rewSignalList.length == 0">
<td style="text-align: center" colspan="6">暂无数据!</td>
</tr>
<tr
v-if="rewSignalList.length != 0 && item"
v-for="(item,index) in rewSignalList"
:key="index"
>
<td style="width: 100px">
<div class="content-line1">
<span
:style="{
background: colorList[item.rew_level / 10 - 1],
}"
class="round-point"
/>
<span
:style="{
color: colorList[item.rew_level / 10 - 1],
}"
class="rule-name"
>{{ item.rew_level_cnName }}预警</span
>
</div>
</td>
<td>{{ item.rule_type }}</td>
<td>{{ item.data_source }}</td>
<td>{{ item.incr_type_cnName }}</td>
<td>{{ item.rule_name }}</td>
<td>{{ item.occur_date }}</td>
<td class="desc-width">{{ item.rew_desc }}</td>
<td class="risk-detail" @click="dealRedRisk(index)">处理</td>
</tr>
</table>
</div>
<van-form v-show="dealFlag" @submit="commitIfRelease">
<sub-title >红色预警处理</sub-title>
<div class="form-line1">
<van-cell
style="width: 40%; margin-left: 30px; font-size: 14px"
class="select_but"
center
title="是否属实"
>
<template #right-icon>
<span class="star-style">*</span>
<van-button
class="swich_but but_one"
size="small"
:type="
is_real == '1' || is_real == '' ? 'primary' : 'default'
"
native-type="button"
@click="ClickReal(1)"
>
</van-button
>
<van-button
class="swich_but"
size="small"
:type="is_real == '2' ? 'primary' : 'default'"
@click="ClickReal(2)"
native-type="button"
>
</van-button
>
</template>
</van-cell>
<div class="select-box">
<d-select
label="解除方式"
border="true"
:required="true"
v-model="release_type"
:rules="[{ required: true, message: '解除方式不能为空' }]"
:value="release_type"
labelAlign="right"
sfield="release_type"
size="small"
></d-select>
</div>
</div>
<div class="form-line1">
<div class="select-box2">
<d-select
label="提醒时间"
border="true"
:required="true"
v-model="delayTime"
:rules="[{ required: true, message: '提醒时间不能为空' }]"
:value="delayTime"
labelAlign="right"
sfield="next_date_type"
size="small"
></d-select>
</div>
</div>
<div class="butCommit">
<van-button
class="d-button"
block
type="info"
native-type="submit"
>
保存
</van-button>
</div>
</van-form>
</div>
<!-- </van-index-bar>-->
</div>
<div
v-show="active == 1"
style="margin-right: 10%;"
class="h-scroller flex-1-dhc activedata"
>
<!-- <van-index-bar highlight-color="#F79400" :index-list="indexListIOU2">-->
<div style="padding-bottom: 50px">
<!-- <van-index-anchor index="处理方案">-->
<sub-title>处理方案</sub-title>
<!-- </van-index-anchor>-->
<!-- <table-double-view
:keyValue="userInfoTitles"
:data="cusInfo"
></table-double-view> -->
<van-form class="bottom-form" @submit="commitClick">
<div class="desc-box">
<div class="line-1">
<van-field v-model="cus_name" label="客户名称" readonly />
<van-field
v-model="cust_mgr_cnName"
label="主管客户经理"
readonly
/>
</div>
<mobile-input
label="情况说明"
:rules="[{ required: true, message: '备注说明不能为空' }]"
type="textarea"
:maxlength="500"
:required="true"
:rows="3"
label-width="10px"
input-align="left"
name="REMAKE"
v-model="situation"
placeholder="情况说明"
size="small"
/>
</div>
<div class="but-line">
<van-cell
style="width: 40%; font-size: 14px"
class="select_but"
center
title="是否存在违约风险"
>
<template #right-icon>
<span class="star-style">*</span>
<van-button
class="swich_but but_one"
size="small"
:type="
have_due_risk == '1' || have_due_risk == ''
? 'primary'
: 'default'
"
native-type="button"
@click="ClickRisk(1)"
>
</van-button
>
<van-button
class="swich_but"
size="small"
:type="have_due_risk == '2' ? 'primary' : 'default'"
@click="ClickRisk(2)"
native-type="button"
>
</van-button
>
</template>
</van-cell>
<van-cell
style="width: 40%; font-size: 14px; margin-left: 70px"
class="select_but"
center
title="是否报送重大事项"
>
<template #right-icon>
<span class="star-style">*</span>
<van-button
class="swich_but but_one"
size="small"
:type="
have_sub_import_event == '1' ||
have_sub_import_event == ''
? 'primary'
: 'default'
"
native-type="button"
@click="ClickRisk(3)"
>
</van-button
>
<van-button
class="swich_but"
size="small"
:type="have_sub_import_event == '2' ? 'primary' : 'default'"
@click="ClickRisk(4)"
native-type="button"
>
</van-button
>
</template>
</van-cell>
</div>
<mobile-input
v-if="have_sub_import_event == '2'"
class="desc-box"
label="不报送说明"
:rules="[{ required: true, message: '不报送说明' }]"
type="textarea"
:maxlength="500"
:required="true"
:rows="3"
label-width="10px"
input-align="left"
name="REMAKE"
v-model="noSubDesc"
placeholder="不报送说明"
size="small"
/>
<!-- 处置方案的部分 -->
<div class="solution-line">
<van-cell style="width: 20%; margin-left: 10px"
>处置方案<span class="star-style">*</span></van-cell
>
<div class="buts-box">
<van-button
class="but-mark"
:class="{ changeStyle: markList.includes(index) }"
size="small"
native-type="button"
v-for="(item, index) in listInfo"
@click="ClickMark(index)"
:key="index"
>{{ item }}
<svg
v-show="markList.includes(index)"
class="icon svg-icon"
aria-hidden="true"
>
<use xlink:href="#icon-xuanzhongjiaobiao16x16"></use>
</svg>
</van-button>
</div>
</div>
<mobile-input
class="desc-box"
label="处置方案说明"
:rules="[{ required: true, message: '备注说明不能为空' }]"
type="textarea"
:maxlength="500"
:required="true"
:rows="3"
label-width="10px"
input-align="left"
name="REMAKE"
v-model="solution"
placeholder="处置方案说明"
size="small"
/>
<div class="butCommit">
<van-button
class="d-button"
block
type="info"
native-type="submit"
>
保存
</van-button>
</div>
</van-form>
</div>
<!-- </van-index-bar>-->
</div>
<div
v-show="active == 2"
class="table-box h-scroller flex-1-dhc"
>
<!-- <van-index-bar highlight-color="#F79400" :index-list="indexListIOU3">-->
<div style="padding-bottom: 50px">
<!-- <van-index-anchor index="风险预警信号">-->
<div style="display: flex; width: 60%">
<sub-title style="flex: 1">风险预警信号</sub-title>
<van-dropdown-menu style="flex: 2">
<van-dropdown-item
v-model="riskLevelType"
:options="riskLevels"
/>
<van-dropdown-item
v-model="releaseType"
:options="releaseTypes"
/>
</van-dropdown-menu>
</div>
<!-- </van-index-anchor>-->
<table class="customer-management-information-form">
<tr>
<td>预警等级</td>
<td>规则大类</td>
<td>数据源</td>
<td>触发类型</td>
<td>规则名称</td>
<td>信号生成日期</td>
<td>解除方式</td>
<td class="desc-width">预警说明</td>
<td style="width: 60px">详情</td>
</tr>
<tr v-if="chooseUnrelease.length == 0">
<td style="text-align: center" colspan="6">暂无数据!</td>
</tr>
<tr
v-if="chooseUnrelease.length != 0 && item"
v-for="(item, index) in chooseUnrelease"
:key="index"
>
<td style="width: 100px">
<div class="content-line1">
<span
:style="{
background: colorList[item.rew_level / 10 - 1],
}"
class="round-point"
/>
<span
:style="{
color: colorList[item.rew_level / 10 - 1],
}"
class="rule-name"
>{{ item.rew_level_cnName }}预警</span
>
</div>
</td>
<td>{{ item.rule_type }}</td>
<td>{{ item.data_source }}</td>
<td>{{ item.incr_type_cnName }}</td>
<td>{{ item.rule_name }}</td>
<td>{{ item.occur_date }}</td>
<td>{{ item.release_type_cnName }}</td>
<td class="desc-width">{{ item.rew_desc }}</td>
<td class="risk-detail" @click="goDetailPage(item)">详情</td>
</tr>
</table>
</div>
<!-- </van-index-bar>-->
</div>
<van-popup
v-model="commitPop"
:close-on-click-overlay="false"
:style="{ height: '55%', width: '70%' }"
>
<van-form @submit="commitRiskProcess">
<div class="popup-heater">风险预警流程提交</div>
<div class="popup-body">
<div class="popup-input-content">
<d-select
label="下一节点"
border="true"
:required="true"
v-model="nextNode"
:rules="[{ required: true, message: '下一节点不能为空' }]"
:options="nextNodeList"
size="small"
></d-select>
<d-select
label="下一处理人"
border="true"
:required="true"
v-model="nextPerson"
:options="nextPersonList"
:rules="[{ required: true, message: '下一处理人不能为空' }]"
size="small"
></d-select>
</div>
</div>
<div class="popup-footer">
<van-button
native-type="button"
type="info"
@click="cancelRiskProcess"
>取消
</van-button
>
<van-button native-type="submit" type="info">提交</van-button>
</div>
</van-form>
</van-popup>
</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 nettyApi from "@/constants/api/ms-netty/netty.api.ts";
import IF from "@/public/factory/InterFaceFactory";
import { NativeUI } from "@/public/ts/NativeUI";
import { DatetimePicker } from "vant";
import { DropdownMenu, DropdownItem } from "vant";
import BasicInformation from "@/components/customer-information/business-information/overview/BasicInformation.vue";
import TableDoubleView from "@/public/TableDoubleView.vue";
import BasePopup from "@/components/general/BasePopup.vue";
import { TabData } from "@/model/entity/TabData";
Vue.use(DatetimePicker);
Vue.use(DropdownMenu);
Vue.use(DropdownItem);
Vue.use(Tab);
Vue.use(Tabs);
/**
* @Description 催收详情
* @Author JiangTao
* @Date 2021-11-10 下午 03:51
*/
@Component({
name: "RiskWarningDetail",
components: { TitleBar, BasicInformation, TableDoubleView, BasePopup }
})
export default class RiskWarningDetail extends Vue {
title = "风险预警信息"; // 页面标题
// indexList = ["基本信息", "基本信息1"];
// titles = [
// { name: "红色预警处理", bsno: "1" },
// { name: "处理方案", bsno: "2" },
// { name: "所有未解除信号", bsno: "3" },
// ];
tabList: TabData[] = [
{ tabText: "红色预警处理", tabId: "1" },
{ tabText: "处理方案", tabId: "2" },
{ tabText: "所有未解除信号", tabId: "3" }
];
rewSignalTitles = {
rule_type: "规则大类",
data_source: "数据源",
incr_type_cnName: "触发类型",
rule_name: "规则名称",
occur_date: "信号生成日期",
rew_desc: "预警说明"
};
userInfoTitles = {
cus_name: "客户名称",
cust_mgr_cnName: "主管客户经理"
};
active = 0;
cusInfo = this.$store.getters.getCusInfo; //传来的用户信息
allUnrelease = []; //所有未解除
rewSignalList: any[] = []; //红色预警处理数组
curDealIndex: any = 0; //当前处理的红色预警序号
dealWay = {
cus_name: "",
disp_scheme_desc: "",
check_info: "",
have_due_risk: "",
have_sub_import_event: "",
disp_scheme: "",
no_sub_reason: ""
}; //处理方案查询
colorList = ["red", "orange", "yellow", "blue"];
is_real = "1";
selectTaskStatus = "";
release_type = ""; //解除方式
delayTime = ""; //提醒时间
situation = ""; //情况说明
solution = ""; //处置方案说明
have_due_risk = "1"; //是否存在风险
have_sub_import_event = "1"; //是否报送重大事项
listInfo = [
"停止提用未使用额度",
"对客户账户实施封闭式管理",
"对客户或保证人实施催收",
"采取资产保全或提起诉讼",
"提供再融资或宽限",
"拟订分期还款安排",
"追加或变更担保",
"其它"
];
markList: any = []; //处置方案
cus_name = this.cusInfo.cus_name;
cust_mgr_cnName = this.cusInfo.cust_mgr_cnName;
riskLevelType = ""; //筛选风险等级
releaseType = ""; //筛选解除方式
riskLevels = [
{ text: "全部级别", value: "" },
{ text: "红色", value: "10" },
{ text: "橙色", value: "20" },
{ text: "黄色", value: "30" },
{ text: "蓝色", value: "40" }
];
releaseTypes = [
{ text: "全部方式", value: "" },
{ text: "", value: "0" },
{ text: "自动解除", value: "10" },
{ text: "人工解除", value: "20" },
{ text: "不解除", value: "30" }
];
nextNode = ""; //下一节点
nextPerson = ""; //下一办理人
nextNodeList: any[] = []; //下一节点列表
nextPersonList: any[] = []; //下一办理人列表
instance_id = ""; //流程实例化编号
next_node_id = ""; //下一流程节点编号
next_node_user = ""; //下一流程节点受理人
commitPop = false; //提交框是否显示
flagSelect = false; //流程是否查询成功
indexListIOU1 = ["红色预警信号", "红色预警处理"];
indexListIOU2 = ["处理方案"];
indexListIOU3 = ["风险预警信号"];
noSubDesc = "";
dealFlag = false;
mounted() {
this.selectUnreleaseRisk();
}
//选中的方案列表
/**
* wanghang
* 2022/1/26
*/
get disp_schemes() {
var res = "";
for (let i = 0; i < this.markList.length; i++) {
res += "00" + (this.markList[i] + 1) + ",";
}
return res;
}
/**
*@description: 处理某一个红色预警
*@author: wanghang
*@date: 2022/3/1
*/
dealRedRisk(index:any){
this.curDealIndex = index;
this.giveValue();
this.dealFlag = true;
}
//筛选出来的未解除消息
//筛选预警信息
/**
* wanghang
* 2022/1/26
*/
get chooseUnrelease() {
var res: any = [];
var temp = [];
temp = this.allUnrelease;
for (let i = 0; i < temp.length; i++) {
if (this.riskLevelType != "" && this.releaseType != "") {
if (
(temp[i] as any).rew_level == this.riskLevelType &&
((temp[i] as any).release_type == this.releaseType ||
((temp[i] as any).release_type == "" &&
(this.releaseType as any) == 0))
) {
res.push(temp[i]);
}
} else if (this.riskLevelType != "") {
if ((temp[i] as any).rew_level == this.riskLevelType) {
res.push(temp[i]);
}
} else if (this.releaseType != "") {
if ((temp[i] as any).release_type == this.releaseType) {
res.push(temp[i]);
}
if (
(temp[i] as any).release_type == "" &&
(this.releaseType as any) == 0
) {
res.push(temp[i]);
}
} else {
res.push(temp[i]);
}
}
return res as any;
}
/**
* @Description 标签切换
* @Author JiangTao
* @Date 2022-01-17 下午 05:02
*/
change() {
if (this.active == 0) {
} else if (this.active == 1) {
} else if (this.active == 2) {
}
}
//对公未解除风险预警任务查询
/**
* wanghang
* 2022/1/26
*/
selectUnreleaseRisk() {
let param = {
serno: this.cusInfo.serno,
tc: nettyApi.TRADE_CODE.selectUnrelieveRisk
};
NativeUI.showWaiting("正在查询...");
return IF.transferDataInter(nettyApi.commonRq, param).then((res: any) => {
NativeUI.closeWaiting();
if (res.rc === "1") {
this.allUnrelease = res.RewSignalList0;
this.rewSignalList = res.RewSignalList;
this.dealWay = res.rewTaskIColl[0];
this.giveValue();
} else {
NativeUI.toast(res.msg);
}
});
}
//点击切换状态
/**
* wanghang
* 2022/1/26
*/
ClickReal(index: Number) {
if (index == 1) {
this.is_real = "1";
} else if (index == 2) {
this.is_real = "2";
}
}
//保存红色预警处理
/**
* wanghang
* 2022/1/26
*/
commitIfRelease() {
this.postDealRedInfo();
}
// 提交对公红色预警处理
/**
* wanghang
* 2022/1/26
*/
postDealRedInfo() {
let param = {
serno: (this.rewSignalList[this.curDealIndex] as any).serno,
is_real: this.is_real == "" ? "1" : this.is_real, //默认为真
release_type: this.release_type,
next_date_type: this.delayTime,
tc: nettyApi.TRADE_CODE.dealRedRisk
};
NativeUI.showWaiting("正在提交...");
IF.transferDataInter(nettyApi.commonRq, param).then((res: any) => {
NativeUI.closeWaiting();
if (res.rc === "1") {
NativeUI.toast(res.msg);
this.selectUnreleaseRisk();
} else {
NativeUI.toast(res.msg);
}
});
}
/**
* wanghang
* 2022/1/26
*/
// 数据回显
giveValue() {
//红色预警处理回显
this.release_type =
this.rewSignalList[this.curDealIndex] &&
this.rewSignalList[this.curDealIndex] &&
(this.rewSignalList[this.curDealIndex] as any).release_type
? (this.rewSignalList[this.curDealIndex] as any).release_type
: "";
this.delayTime =
this.rewSignalList[this.curDealIndex] &&
this.rewSignalList[this.curDealIndex] &&
(this.rewSignalList[this.curDealIndex] as any).next_date_type
? (this.rewSignalList[this.curDealIndex] as any).next_date_type
: "";
this.is_real =
this.rewSignalList[this.curDealIndex] &&
this.rewSignalList[this.curDealIndex] &&
(this.rewSignalList[this.curDealIndex] as any).is_real
? (this.rewSignalList[this.curDealIndex] as any).is_real
: "";
//处置方案回显
this.cus_name = this.dealWay.cus_name;
this.solution = this.dealWay.disp_scheme_desc; //处置方案说明
this.situation = this.dealWay.check_info; //情况说明
this.have_due_risk = this.dealWay.have_due_risk;
this.have_sub_import_event = this.dealWay.have_sub_import_event;
this.noSubDesc = this.dealWay.no_sub_reason;
var strs = this.dealWay.disp_scheme.split(",");
this.markList = [];
for (let i = 0; i < strs.length; i++) {
this.markList.push(parseInt(strs[i].slice(2, 3)) - 1);
}
}
//提交信息
/**
* wanghang
* 2022/1/26
*/
commitClick() {
this.postCustInfo();
this.selectUnreleaseRisk(); //刷新信息
}
//点击切换状态
/**
* wanghang
* 2022/1/26
*/
ClickRisk(i: Number) {
if (i === 1) {
this.have_due_risk = "1";
} else if (i === 2) {
this.have_due_risk = "2";
} else if (i === 3) {
this.have_sub_import_event = "1";
} else if (i === 4) {
this.have_sub_import_event = "2";
}
}
// 点击预警列表
/**
* wanghang
* 2022/1/26
*/
ClickMark(index: Number) {
//如果不在里面的话,加入数组中
if (this.markList.indexOf(index) != -1) {
this.markList.splice(this.markList.indexOf(index), 1);
} else {
this.markList.push(index);
}
}
//提交用户预警信息
/**
* wanghang
* 2022/1/26
*/
postCustInfo() {
let param = {
serno: this.cusInfo.serno,
have_due_risk: this.have_due_risk == "" ? "1" : this.have_due_risk, //如果为空的话,提交的时候赋值为1
check_info: this.situation,
have_sub_import_event:
this.have_sub_import_event == "" ? "1" : this.have_sub_import_event, //如果为空的话,提交的时候赋值为1
disp_scheme: this.disp_schemes,
disp_scheme_desc: this.solution, //处置方案说明
no_sub_reason: this.noSubDesc, //不报送重大事项说明
tc: nettyApi.TRADE_CODE.dealFXYJXX
};
IF.transferDataInter(nettyApi.commonRq, param).then((res: any) => {
NativeUI.closeWaiting();
if (res.rc === "1") {
NativeUI.toast(res.msg);
//交易成功后返回上一页,防止重复提交
setTimeout(function() {
NativeUI.toast(res.msg);
}, 1000);
this.$router.go(-1);
} else {
NativeUI.toast(res.msg);
}
});
}
//查询流程信息
selectRiskProcess() {
let param = {
serno: this.cusInfo.serno,
cus_id: this.cusInfo.cus_id,
cus_name: this.cusInfo.cus_name,
tc: nettyApi.TRADE_CODE.selectRiskProcess
};
NativeUI.showWaiting("正在查询...");
return IF.transferDataInter(nettyApi.commonRq, param).then((res: any) => {
NativeUI.closeWaiting();
if (res.rc === "1") {
this.flagSelect = true;
this.instance_id = res.instance_id;
this.nextPersonList = [];
let tempInfo = res.respIColl;
let nextNodeInfo = res.nextNodeInfo;
this.nextNodeList = [];
for (let i = 0; i < tempInfo.length; i++) {
if (tempInfo[i].node_id == '1356_a8') {
let b:any = {};
let tempTexts = this.parseUnStandredJSON(nextNodeInfo);
b.text = tempTexts['1356_a8'];
b.value = tempInfo[i].node_id;
this.nextNodeList.push(b);
let list:any[] = this.parseUnStandredJSONArray(tempInfo[i].node_list);
console.log(list.length);
for (let j = 0; j < list.length; j++) {
let a:any = {};
a.text = list[j].username;
a.value = list[j].userid;
this.nextPersonList.push(a);
}
}
}
console.log(this.nextNodeList,'-------------',this.nextNodeList);
this.commitPop = true;
} else {
NativeUI.toast(res.msg);
}
});
}
//对公客户-风险预警流程提交
commitRiskProcess() {
let param = {
tc: nettyApi.TRADE_CODE.commitRiskProcess,
next_node_id: this.nextNode,
next_node_user: this.nextPerson,
instance_id: this.instance_id,
serno: this.cusInfo.serno
};
NativeUI.showWaiting("正在提交...");
return IF.transferDataInter(nettyApi.commonRq, param).then((res: any) => {
NativeUI.closeWaiting();
if (res.rc === "1") {
NativeUI.toast("提交成功");
this.commitPop = false;
this.$router.go(-1);
} else {
NativeUI.toast(res.msg);
}
});
}
//对公客户-风险预警流程取消
cancelRiskProcess() {
//如果查询成功
if (this.flagSelect) {
let param = {
tc: nettyApi.TRADE_CODE.cancelRiskProcess,
instance_id: this.instance_id
};
NativeUI.showWaiting("正在取消...");
return IF.transferDataInter(nettyApi.commonRq, param).then((res: any) => {
NativeUI.closeWaiting();
if (res.rc === "1") {
this.commitPop = false;
} else {
NativeUI.toast(res.msg);
}
});
} else {
//如果查询失败,说明库里没有相关的流程数据
NativeUI.toast("取消成功");
this.commitPop = false;
}
}
//解析不标准json字符串
parseUnStandredJSON(str: String) {
let temp = str;
temp = temp.slice(1, temp.length - 1);
let res = {};
let strs = temp.split(",");
for (let i = 0; i < strs.length; i++) {
let room = strs[i].split(":");
res[room[0]] = room[1];
}
return res;
}
//解析不标准json数组字符串
parseUnStandredJSONArray(str: String) {
str = str.slice(1, str.length - 1);
str = str.replaceAll("},{", "}|{");
let strs = str.split("|");
let res = [];
for (let i = 0; i < strs.length; i++) {
res.push(this.parseUnStandredJSON(strs[i]));
}
return res;
}
tabClick(item: TabData) {
this.active = parseInt(item.tabId) - 1;
}
goDetailPage(item: any) {
this.$router.push({
path: "/RiskWarningItemDetail",
query: {
serno: item.serno
}
});
}
}
</script>
<style lang="scss" scoped>
.deal-with-top {
width: 100%;
display: flex;
justify-content: space-between;
align-items: center;
padding: 1% 1.5%;
border-bottom: 1px solid #efefef;
background-color: #fffafa;
/* z-index: 700; */
}
.deal-with-top-left {
width: 80%;
display: flex;
justify-content: flex-start;
align-items: flex-end;
}
.deal-with-top-left > div:nth-child(2) {
margin-left: 1%;
margin-right: 2%;
padding-top: 5px;
font-size: 129%;
line-height: 30px;
}
.deal-with-top-left > div:nth-child(3) {
}
.deal-with-top-left img {
width: 2.42%;
padding-top: -1%;
}
.deal-with-top-right {
width: 9.51%;
}
.deal-with-top-right button {
width: 100%;
font-size: 115%;
padding: 2.6% 0;
background-color: white;
border: 1px solid #fd5065;
color: #fd5065;
border-radius: 3px;
}
.label div {
margin-right: 1%;
background-color: white;
border: 1px solid #999999;
border-bottom: 0;
font-size: 115%;
padding: 0.58% 1.2%;
border-top-right-radius: 7px;
border-top-left-radius: 7px;
}
.deal-with-bottom {
width: 92%;
margin: 10px auto;
position: relative;
z-index: 2000;
}
.iconsex {
width: 35px;
height: 35px;
}
::v-deep .van-tabs {
width: 100%;
}
::v-deep .van-tab {
margin: 0 10px;
border: 1px solid #e1e2e3;
border-top-right-radius: 15px;
border-top-left-radius: 15px;
border-bottom: 0;
}
::v-deep .van-tab--active {
border-color: #ff574c;
border-bottom-color: white;
}
::v-deep .van-tabs__wrap {
border-bottom: 1px solid #e1e2e3;
padding-right: 55%;
}
::v-deep .van-tabs__line {
margin-bottom: -2px;
/* z-index: 99999999; */
}
::v-deep .van-dropdown-item__content {
width: 294px;
margin-left: 200px;
}
::v-deep .information-container {
padding-left: 10px !important;
}
.activedata {
margin-left: 4%;
overflow-x: hidden;
}
::v-deep .van-index-bar__sidebar {
top: 60% !important;
}
.imagedata {
width: 100%;
height: 75px;
border-bottom: 1px solid #e1e2e3;
display: flex;
justify-content: space-between;
align-items: center;
}
.round-point {
width: 12px;
height: 12px;
border-radius: 50%;
margin-right: 4px;
}
.round-red {
width: 12px;
height: 12px;
border-radius: 50%;
margin-right: 4px;
}
.rule-name {
font-size: 16px;
}
.content-line1 {
display: flex;
align-items: center;
}
.bottom-info {
padding-bottom: 20px;
margin-left: 50px;
margin-right: 200px;
}
.risk-introduction {
line-height: 40px;
height: 80px;
font-size: 14px;
}
.bottom-form {
margin-left: 30px;
margin-right: 50px;
}
.form-line1 {
height: 52px;
display: flex;
align-items: center;
font-size: 14px;
}
::v-deep .van-button--primary {
background-color: #ff574c;
border-color: #ff574c;
}
.van-cell__title {
font-size: 14px;
color: #999999;
}
.van-button--small {
width: 60px;
}
.select-box {
height: 52px;
width: 300px;
margin-left: 130px;
display: flex;
flex-direction: column;
align-items: center;
padding-top: 10px;
}
.select-box2 {
height: 52px;
width: 300px;
margin-left: 70px;
display: flex;
flex-direction: column;
align-items: center;
padding-top: 10px;
}
.butCommit {
margin-top: 50px;
margin-right: 100px;
margin-bottom: 20px;
bottom: 10px;
left: 0;
width: 100%;
}
.d-button {
width: 350px;
height: 40px;
margin: 0 auto;
color: #fff;
background: #ff574c;
border-color: #ff574c;
}
.bottom-info2 {
// margin-right: 100px;
}
.but-line {
display: flex;
line-height: 48px;
align-items: center;
}
.solution-line {
display: flex;
margin: 20px 0;
}
.buts-title {
display: flex;
justify-content: flex-start;
}
.buts-box {
width: 80%;
/* margin: 0 5%; */
}
.but-mark {
background-color: #eee;
width: 30%;
margin: 10px 5px;
border-radius: 6px;
}
.svg-icon ::v-deep .button-default-border-color {
border-color: #bbb;
}
.svg-icon {
width: 16px;
height: 16px;
bottom: -2px;
right: -2px;
position: absolute;
overflow: hidden;
}
.changeStyle {
background-color: #fff2f1;
border-color: #ff574c;
color: #ff574c;
}
.desc-width {
width: 85px;
}
.popup-input-content {
width: 50%;
margin: 0 25%;
margin-top: 60px;
align-items: center;
justify-content: center;
display: flex;
flex-direction: column;
}
.popup-heater {
width: 100%;
height: 13%;
line-height: 55px;
padding-left: 3%;
font-size: 18px;
font-family: "Arial Normal", "Arial";
border-bottom: 1px solid #d7d7d7;
}
.popup-body {
width: 96%;
height: 70%;
padding: 3.5% 0;
margin: 0 auto;
}
.popup-footer {
width: 50%;
margin: 0 auto;
display: flex;
justify-content: center;
align-content: center;
}
.popup-footer button {
flex: 1;
border-radius: 30px;
padding: 2% 0;
margin: 0 2%;
font-size: 14px;
}
.popup-footer > button:nth-child(1) {
border: 1px solid #d7d7d7;
color: #999999;
background-color: white;
}
.popup-footer > button:nth-child(2) {
border: 1px solid #fd5065;
color: white;
background-color: #fd5065;
}
.risk-detail {
width: 60px;
color: #ff574c;
}
.line-1 {
width: 92%;
display: flex;
justify-content: space-between;
}
::v-deep .van-field__label {
text-align: right;
font-size: 14px;
margin-right: 10px;
}
.star-style {
height: 16px;
font-size: 20px;
color: red;
left: -16px;
top: 4px;
}
::v-deep .van-cell__title {
text-align: right;
font-size: 14px;
}
::v-deep .van-cell__value {
text-align: right;
font-size: 14px;
}
.desc-box {
margin-left: 20px;
}
::v-deep .d-form-field .van-cell--required .van-field__body:before {
position: absolute;
height: 16px;
content: "*";
font-size: 20px;
color: red;
left: -10px;
top: 4px;
}
::v-deep .van-field__control {
font-size: 14px;
}
::v-deep .keyValueCls {
font-size: 14px;
}
::v-deep .dataInfoCls {
font-size: 14px;
}
.table-box {
margin-left: 50px;
margin-right: 10%;
}
</style>
<template>
<div>
<title-bar :title="title" @clickLeft="onClick">
<van-icon slot="left" name="cross" size="24" />
</title-bar>
<div class="text-content">
<div class="addSearch">
<mobile-input
label-width="10px"
:reset="resetvalue"
input-align="left"
name="value"
v-model="value"
placeholder="请输入关键字"
size="small"
/>
<div
style="
width: 200px;
display: flex;
justify-content: space-evenly;
align-items: self-start;
"
>
<van-button
color="#FF574C"
type="primary"
@click="reset"
plain
style="width: 70px; height: 34px"
size="small"
>重置
</van-button
>
<van-button
color="#FF574C"
type="primary"
@click="onSearch"
style="width: 70px; height: 34px"
size="small"
>查询
</van-button
>
</div>
</div>
<div class="afterLoanData">
<scroller-view
v-if="nodata"
v-calculate-height
:pulldown="pulldown"
:pullup="pullup"
:refresh-data="onrefreshdata"
:load-data="onloaddata"
>
<div
v-for="(item, index) in itemDataList"
:key="index"
class="customer-bottom-list"
>
<div>
<div class="customer-bottom-list-top">
<div>
<span style="color: #ff574c">{{ index + 1 }}</span>
</div>
<div>{{ item.CUSTOMERNAME }}</div>
<div>{{ item.BUSINESSTYPENAME }}</div>
</div>
<div class="customer-bottom-list-bottom">
<span>发放日期:{{ item.PUTOUTDATE }}</span>
<span>到期日期:{{ item.MATURITYDATE }}</span>
</div>
</div>
<div>
<van-button
@click="addCheckItem(item)"
round
color="#FF574C"
type="primary"
plain
style="width: 70px; height: 34px"
size="small"
>添加
</van-button
>
</div>
</div>
</scroller-view>
</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 { Sidebar, SidebarItem } from "vant";
Vue.use(Sidebar);
Vue.use(SidebarItem);
/**
* @Description 待办任务
* @Author JiangTao
* @Date 2021-10-25 下午 08:55
*/
@Component({
name: "AddContactCheckView",
components: { TitleBar }
})
export default class AddContactCheckView extends Vue {
INSPECTTYPE: any = "";
title = "新增"; // 页面标题
resetvalue = false;
value = "";
itemDataList = [];
pageNo = 1;
pullup = true;
pulldown = true;
nodata = true;
ADDFLAG = "1"; //新增页面默认为新增,不用用户选择
currentObjNo = ""; //要新增的对象的编号
cusType = this.$route.query.cusType; //个贷客户还是网贷客户
onClick() {
console.log(111111);
}
mounted() {
console.log(this.$route.query.cusType);
if ((this.$route.query.type as any).text != undefined) {
if (this.cusType == "1") {
this.title = "个贷" + (this.$route.query.type as any).text + "新增";
} else if (this.cusType == "2") {
this.title = "网贷" + (this.$route.query.type as any).text + "新增";
}
}
this.INSPECTTYPE = (this.$route.query.type as any).value;
if (this.cusType == "1") {
this.selectObjectList();
} else if (this.cusType == "2") {
this.selectNetObjectList();
}
}
/**
* @Description 添加数据
* @Author JiangTao
* @Date 2022-01-28 下午 02:58
*/
addCheckItem(item: any) {
NativeUI.confirm("", "确认添加?").then(() => {
this.currentObjNo = item.OBJECTNO;
if (this.cusType == "1") {
this.addLoanCheckItem();
this.selectObjectList(1);
} else if (this.cusType == "2") {
this.addNetLoanCheckItem();
this.selectNetObjectList(1);
}
});
}
/**
* @Description 重置
* @Author JiangTao
* @Date 2022-01-28 下午 03:04
*/
reset() {
this.resetvalue = true;
this.value = "";
this.selectObjectList();
}
/**
* @Description 搜索
* @Author JiangTao
* @Date 2022-01-28 下午 03:06
*/
selectObjectList(pageNo: any = 1) {
this.nodata = true;
this.pullup = true;
this.pulldown = true;
let param = {
ROWNUMSTART: (pageNo - 1) * 10,
ROWNUMEND: pageNo * 10,
CUSTOMERNAME: this.value,
INSPECTTYPE: this.INSPECTTYPE, //检查类型
tc: nettyApi.TRADE_CODE.selectAfterLoanCheck
};
NativeUI.showWaiting("正在查询...");
return IF.transferDataInter(nettyApi.commonRq, param).then((res: any) => {
console.log(res);
NativeUI.closeWaiting();
if (res.rc == "1") {
if (pageNo == 1) {
this.itemDataList = res.AFTER_LOAN_CHECK_ADD_LIST;
} else {
this.itemDataList = this.itemDataList.concat(
res.AFTER_LOAN_CHECK_ADD_LIST
);
}
} else {
NativeUI.toast(res.msg);
}
if (
res.AFTER_LOAN_CHECK_ADD_LIST &&
res.AFTER_LOAN_CHECK_ADD_LIST.length < 10
) {
this.pullup = false;
}
if (this.itemDataList.length == 0) {
this.nodata = false;
this.pulldown = false;
}
});
}
/**
*@description: //网贷借据/合作项目信息查询
*@author: wanghang
*@date: 2022-02-21
*/
selectNetObjectList(pageNo: any = 1) {
this.nodata = true;
this.pullup = true;
this.pulldown = true;
let param = {
ROWNUMSTART: (pageNo - 1) * 10,
ROWNUMEND: pageNo * 10,
CUSTOMERNAME: this.value,
INSPECTTYPE: this.INSPECTTYPE, //检查类型
tc: nettyApi.TRADE_CODE.selectNetLoanCheckSerial
};
NativeUI.showWaiting("正在查询...");
return IF.transferDataInter(nettyApi.commonRq, param).then((res: any) => {
console.log(res);
NativeUI.closeWaiting();
if (res.rc == "1") {
if (pageNo == 1) {
this.itemDataList = res.AFTER_LOAN_CHECK_ADD_LIST;
} else {
this.itemDataList = this.itemDataList.concat(
res.AFTER_LOAN_CHECK_ADD_LIST
);
}
} else {
NativeUI.toast(res.msg);
}
if (
res.AFTER_LOAN_CHECK_ADD_LIST &&
res.AFTER_LOAN_CHECK_ADD_LIST.length < 10
) {
this.pullup = false;
}
if (this.itemDataList.length == 0) {
this.nodata = false;
this.pulldown = false;
}
});
}
/**
* @Description 新增个贷贷后检查任务
* @Author JiangTao
* @Date 2022-01-28 下午 03:52
*/
addLoanCheckItem() {
let param = {
OBJECTNO: this.currentObjNo,
ADDFLAG: this.ADDFLAG, //是否新增,默认为新增
INSPECTTYPE: this.INSPECTTYPE, //检查类型
tc: nettyApi.TRADE_CODE.addLoanCheckInfo
};
NativeUI.showWaiting("正在查询...");
return IF.transferDataInter(nettyApi.commonRq, param).then((res: any) => {
NativeUI.closeWaiting();
if (res.rc == "1") {
NativeUI.toast("新增成功!");
this.selectObjectList();
} else {
NativeUI.toast(res.msg);
}
});
}
/**
*@description: 新增网贷贷后检查任务
*@author: wanghang
*@date: 2022-02-21
*/
addNetLoanCheckItem() {
let param = {
OBJECTNO: this.currentObjNo,
ADDFLAG: this.ADDFLAG, //是否新增,默认为新增
INSPECTTYPE: this.INSPECTTYPE, //检查类型
tc: nettyApi.TRADE_CODE.addNetLoanCheckInfo
};
NativeUI.showWaiting("正在查询...");
return IF.transferDataInter(nettyApi.commonRq, param).then((res: any) => {
NativeUI.closeWaiting();
if (res.rc == "1") {
NativeUI.toast("新增成功!");
this.selectNetObjectList();
} else {
NativeUI.toast(res.msg);
}
});
}
/**
* @Description 上拉加载
* @Author JiangTao
* @Date 2022-01-18 下午 04:04
*/
onloaddata() {
if (this.cusType == "1") {
this.pageNo = Math.ceil(this.itemDataList.length / 10) + 1;
return this.selectObjectList(this.pageNo);
} else if(this.cusType == "2"){
this.pageNo = Math.ceil(this.itemDataList.length / 10) + 1;
return this.selectNetObjectList(this.pageNo);
}
}
/**
* @Description 下拉刷新
* @Author JiangTao
* @Date 2022-01-17 下午 05:14
*/
onrefreshdata() {
if (this.cusType == "1") {
return this.selectObjectList();
} else if (this.cusType == "2"){
return this.selectNetObjectList();
}
}
/**
*@description: 调整查询
*@author: wanghang
*@date: 2022-02-25
*/
onSearch(){
if (this.cusType == "1") {
return this.selectObjectList();
} else if (this.cusType == "2"){
return this.selectNetObjectList();
}
}
}
</script>
<style scoped>
.text-content {
height: calc(100vh - 60px);
}
.addSearch {
height: 10%;
display: flex;
justify-content: space-around;
align-items: center;
}
.afterLoanData {
height: 89%;
}
::v-deep .scroller {
padding-top: 10px;
padding-left: 30px;
padding-right: 30px;
}
::v-deep .d-form-field {
width: 70%;
padding-top: 1.5rem;
}
.customer-bottom-list {
border-radius: 10px;
box-shadow: 0 0 6px #d7d7d7;
margin: 0 10px 16px 10px;
position: relative;
display: flex;
justify-content: space-between;
align-items: center;
}
.customer-bottom-list > div:nth-child(1) {
width: 80%;
}
.customer-bottom-list > div:nth-child(2) {
width: 20%;
display: flex;
justify-content: center;
}
.customer-bottom-list-top > div:nth-child(1) svg {
width: 40px;
height: 40px;
}
.customer-bottom-list-top > div:nth-child(2) {
font-size: 115%;
font-weight: bold;
font-family: "微软雅黑 Bold", "微软雅黑 Regular", "微软雅黑";
margin-left: 0.8%;
}
.customer-bottom-list-top {
width: 100%;
display: flex;
justify-content: flex-start;
align-items: center;
padding-top: 1.5%;
margin-left: 1.5%;
}
.customer-bottom-list-top > div:nth-child(3) {
width: auto;
padding: 3px 7px;
font-size: 12px;
margin-left: 1%;
color: #ff6e0d;
background-color: rgba(255, 247, 204, 1);
border-radius: 2px;
}
.customer-bottom-list-bottom {
width: 60%;
height: 26px;
display: flex;
margin: 10px 0;
padding-left: 50px;
justify-content: flex-start;
align-items: center;
}
.customer-bottom-list-bottom span {
margin-right: 30px;
}
.customer-bottom-list-top > div:nth-child(1) {
width: 30px;
height: 30px;
border: 1px solid #ff574c;
border-radius: 15px;
display: flex;
justify-content: center;
align-items: center;
}
.customer-bottom-list-top > div:nth-child(2) {
font-size: 16px;
font-weight: bold;
width: auto;
margin: 0 10px;
}
.customer-bottom-list-top > div:nth-child(3) {
color: #f59a23;
}
.customer-bottom-list-top {
width: 90%;
display: flex;
justify-content: flex-start;
align-items: center;
padding-top: 1.5%;
margin-left: 1.5%;
}
</style>
<template>
<div>
<title-bar title="业务查询" @clickLeft="onClick">
<van-icon slot="left" name="cross" size="24" />
</title-bar>
<div class="content">
<div style="padding: 0.5%; background-color: #fffafa"></div>
<van-tabs v-model="active">
<van-tab title="营销任务">
<marketing-task></marketing-task>
</van-tab>
<van-tab title="贷款催收">
<loan-application></loan-application>
</van-tab>
</van-tabs>
</div>
</div>
</template>
<script lang="ts">
import { Component, Vue } from "vue-property-decorator";
import TitleBar from "@/components/general/TitleBar.vue";
import MarketingTask from "@/components/workbench/personal-common-functions/business-inquiry/MarketingTask.vue";
import LoanApplication from "@/components/workbench/personal-common-functions/business-inquiry/LoanApplication.vue";
import { Tab, Tabs } from "vant";
Vue.use(Tab);
Vue.use(Tabs);
/**
* @Description 业务查询
* @Author JiangTao
* @Date 2021-10-23 下午 06:50
*/
@Component({
name: "BusinessInquiry",
components: { TitleBar, MarketingTask, LoanApplication },
})
export default class BusinessInquiry extends Vue {
pageTitle = ""; // 页面标题
onClick() {
console.log(111111);
}
mounted() {
this.pageTitle = this.$route.meta?.name;
}
active = 0;
}
</script>
<style scoped>
.content {
width: 100%;
height: calc(100vh - 60px);
}
::v-deep .van-tab__text {
font-size: 16px;
color: #999999;
font-family: "Arial Normal", "Arial";
}
::v-deep .van-tab--active span {
font-size: 18px;
color: #fd5065;
font-weight: bold;
}
::v-deep .van-tabs__line {
width: 30%;
}
::v-deep .van-tabs__wrap {
width: 100%;
padding-right: 70%;
padding-left: 1%;
background-color: #fffafa;
}
::v-deep .van-tab {
background-color: #fffafa;
}
</style>
<template>
<div class="d-page d-flex flex-column">
<title-bar :title="title">
<van-icon slot="left" name="cross" size="24" />
</title-bar>
<div class="divCls">
<div class="detailData" v-for="(item, index) in assetInfoList" :key="index">
<div class="detailName">{{ userInfo.GUARANTORNAME}}</div>
<div style="font-size: 18px;font-weight: bold;margin-left: 10%">抵质押物{{index+1}}</div>
<table-double-view :keyValue="assetInfoTitles" :data="item"></table-double-view>
</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 nettyApi from "@/constants/api/ms-netty/netty.api.ts";
import IF from "@/public/factory/InterFaceFactory";
import { NativeUI } from "@/public/ts/NativeUI";
import { DatetimePicker } from 'vant';
import BasicInformation from "@/components/customer-information/business-information/overview/BasicInformation.vue";
import TableDoubleView from "@/public/TableDoubleView.vue";
import DCalendar from "@/components/general/form/DCalendar.vue";
Vue.use(DatetimePicker);
Vue.use(Tab);
Vue.use(Tabs);
/**
* @Description 抵质押物详情
* @Author JiangTao
* @Date 2021-11-10 下午 03:51
*/
@Component({
name: "CollateralDetail",
components: { DCalendar, TitleBar, BasicInformation, TableDoubleView },
})
export default class CollateralDetail extends Vue {
title = "抵质押物详情"; // 页面标题
userInfo = this.$route.params.assetInfoList;
assetInfoTitles = {
SERIALNO: '抵质押物编号',
ASSETTYPE: '抵质押物类型',
STATUS: '状态',
GUARANTYAMOUNT: '担保债权金额(元)',
CONFIRMVALUE: '认定价值(元)',
GUARANTYPERCENT: '抵押率(%)'
}
assetInfoList = (this.$route.params.assetInfoList as any).ASSET_INFO_LIST;
activated() {
// this.userInfo = this.$store.getters.getCusInfo;
// this.selectHistoryContactInfo();
}
}
</script>
<style scoped>
.divCls {
width: 80%;
height: 90%;
margin: auto;
overflow-y: auto;
}
.detailData {
width: 100%;
height: auto;
}
.detailName {
width: 85%;
font-size: 24px;
font-weight: bold;
margin: 10px auto;
}
</style>
<template>
<div class="d-page d-flex flex-column">
<title-bar :title="title">
<van-icon slot="left" name="cross" size="24" />
</title-bar>
<div class="deal-with-top">
<div class="deal-with-top-left">
<div>
<svg
v-if="SEX ? SEX == '男' : true"
class="icon iconsex"
aria-hidden="true"
>
<use xlink:href="#icon-nanxing-gerentouxiangxpx"></use>
</svg>
<svg
v-if="SEX ? SEX == '女' : false"
class="icon iconsex"
aria-hidden="true"
>
<use xlink:href="#icon-nvxing-gerentouxiangxpx"></use>
</svg>
</div>
<div>{{ CUSTOMERNAME }}</div>
<div>客户编号:{{ SERIALNO }}</div>
</div>
</div>
<div class="deal-with-bottom">
<tab-nav :tabList="tabList" @tabClick="tabClick" />
</div>
<div
v-show="active == 0"
class="information-container h-scroller flex-1-dhc activedata"
>
<van-index-bar
highlight-color="#F79400"
:index-list="indexListCollection"
>
<div style="padding-bottom: 50px">
<van-index-anchor index="历史催收记录">
<sub-title>历史催收记录</sub-title>
</van-index-anchor>
<table class="customer-management-information-form">
<tr>
<td>催收时间</td>
<td>催收对象</td>
<td>催收方式</td>
<td style="width: 100px">催收结果</td>
<td>联系电话</td>
<td>催收人</td>
<td>客户解释</td>
<td style="width: 150px">备注说明</td>
<td>催收时点的欠款金额</td>
</tr>
<tr v-if="historyContactList.length == 0">
<td style="text-align: center" colspan="9">暂无数据!</td>
</tr>
<tr
v-if="historyContactList.length != 0"
v-for="(item, index) in historyContactList"
:key="index"
>
<td>{{ item.PROCESSDATE }}</td>
<td>{{ item.CONTACTORTYPE }}</td>
<td>{{ item.CONTACTMETHOD }}</td>
<td>{{ item.CONTACTRESULT }}</td>
<td>{{ item.CONTACTTELNO }}</td>
<td>{{ item.PROCESSUSERID }}</td>
<td>{{ item.EXPLANATIONCODE }}</td>
<td>{{ item.REMARK }}</td>
<td>{{ item.OVERSUM }}</td>
</tr>
</table>
<van-index-anchor index="该笔贷款历次还款承诺">
<sub-title>该笔贷款历次还款承诺</sub-title>
</van-index-anchor>
<div class="v-list d-page d-scroll-container">
<table class="customer-management-information-form">
<tr>
<td>编号</td>
<td>承诺还款金额</td>
<td>承诺还款日期</td>
<td>登记人</td>
<td>登记机构</td>
<td>登记日期</td>
</tr>
<tr v-if="allRepayRecord.length == 0">
<td style="text-align: center" colspan="6">暂无数据!</td>
</tr>
<tr
v-if="allRepayRecord.length != 0"
v-for="(item, index) in allRepayRecord"
:key="index"
>
<td>{{ item.SERIALNO }}</td>
<td>{{ item.REPAYAMOUNT }}</td>
<td>{{ item.REPAYDATE }}</td>
<td>{{ item.INPUTUSERNAME }}</td>
<td>{{ item.INPUTORGNAME }}</td>
<td>{{ item.INPUTDATE }}</td>
</tr>
</table>
</div>
</div>
</van-index-bar>
</div>
<div
v-show="active == 1"
class="information-container h-scroller flex-1-dhc activedata"
>
<van-index-bar highlight-color="#F79400" :index-list="indexListIOU">
<div style="padding-bottom: 50px">
<van-index-anchor index="借据基本信息">
<sub-title>借据基本信息</sub-title>
</van-index-anchor>
<table-double-view
:keyValue="serialInfoTitles"
:data="serialBasicInfo"
></table-double-view>
<van-index-anchor index="核销信息">
<sub-title>核销信息</sub-title>
</van-index-anchor>
<table-double-view
:keyValue="checkDeleteTitles"
:data="serialBasicInfo"
></table-double-view>
<van-index-anchor index="借据利率信息">
<sub-title>借据利率信息</sub-title>
</van-index-anchor>
<table-double-view
:keyValue="serialBasicInfoTitles"
:data="serialBasicInfo"
></table-double-view>
<van-index-anchor index="帐户信息">
<sub-title>帐户信息</sub-title>
</van-index-anchor>
<table-double-view
v-for="(item, index) in currentAcountInfo"
:key="index + 'a'"
:keyValue="currentRepayTitles"
:data="item"
></table-double-view>
<van-index-anchor index="共同还款人">
<sub-title>共同还款人</sub-title>
</van-index-anchor>
<table-double-view
v-for="(item, index) in abAcountInfo"
:key="index + 'b'"
:keyValue="abAcountTitles"
:data="item"
></table-double-view>
<van-index-anchor index="共同借款人">
<sub-title>共同借款人</sub-title>
</van-index-anchor>
<table-double-view
v-for="(item, index) in contractInfo"
:key="index + 'c'"
:keyValue="appAcountTitles"
:data="item"
></table-double-view>
</div>
</van-index-bar>
</div>
<div
v-show="active == 2"
class="table-box h-scroller flex-1-dhc activedata"
>
<!-- <van-index-bar highlight-color="#F79400" :index-list="indexListIOU1">-->
<div style="padding-bottom: 50px">
<sub-title>还款计划信息</sub-title>
<!-- <div v-for="(item, index) in repayPlanInfo">-->
<!-- <table-double-view-->
<!-- :key="index + 'd'"-->
<!-- :keyValue="repayPlanTitles"-->
<!-- :data="item"-->
<!-- >-->
<!-- </table-double-view>-->
<!-- <div class="borderStyle"></div>-->
<!-- </div>-->
<table class="customer-management-information-form">
<tr>
<td>期次</td>
<td>本期欠款合计</td>
<td>应还日期</td>
<td>应还本金</td>
<td>实还本金</td>
<td>本期剩余本金</td>
<td>应还利息</td>
<td>实还利息</td>
<td>应还罚息</td>
<td>实还罚息</td>
<td>应还复利</td>
<td>实还复利</td>
<td>结清日期</td>
</tr>
<tr v-if="repayPlanInfo.length == 0">
<td style="text-align: center" colspan="6">暂无数据!</td>
</tr>
<tr
v-if="repayPlanInfo.length != 0 && item"
v-for="(item, index) in repayPlanInfo"
:key="index"
>
<td>{{ item.PERIODNO }}</td>
<td>{{ item.BSUM }}</td>
<td>{{ item.PAYDATE }}</td>
<td>{{ item.PAYPRINCIPALAMT }}</td>
<td>{{ item.ACTUALPAYPRINCIPALAMT }}</td>
<td>{{ item.PRINCIPALBALANCE }}</td>
<td>{{ item.PAYINTERESTAMT }}</td>
<td>{{ item.ACTUALPAYINTERESTAMT }}</td>
<td>{{ item.PAYPRINCIPALPENALTYAMT }}</td>
<td>{{ item.ACTUALPAYPRINCIPALPENALTYAMT }}</td>
<td>{{ item.PAYINTERESTPENALTYAMT }}</td>
<td>{{ item.ACTUALPAYINTERESTPENALTYAMT }}</td>
<td>{{ item.FINISHDATE }}</td>
</tr>
</table>
</div>
<!-- </van-index-bar>-->
</div>
<div
v-show="active == 3"
class="table-box h-scroller flex-1-dhc activedata"
>
<!-- <van-index-bar highlight-color="#F79400" :index-list="indexListIOU2">-->
<!-- <div style="padding-bottom: 50px">-->
<!-- <van-index-anchor index="还款记录">-->
<!-- <sub-title>还款记录</sub-title>-->
<!-- </van-index-anchor>-->
<!-- <div v-for="(item, index) in detailInfo">-->
<!-- <table-double-view-->
<!-- :key="index + 'e'"-->
<!-- :keyValue="repayRecordTitles"-->
<!-- :data="item"-->
<!-- ></table-double-view>-->
<!-- <div class="borderStyle"></div>-->
<!-- </div>-->
<!-- </div>-->
<!-- </van-index-bar>-->
<div style="padding-bottom: 50px">
<sub-title>还款记录</sub-title>
<table class="customer-management-information-form">
<tr>
<td>期次</td>
<td>实还日期</td>
<td>实还本金</td>
<td>实还利息</td>
<td>实还罚息</td>
<td>应还未还罚息</td>
<td>应还复利</td>
<td>实还复利</td>
</tr>
<tr v-if="detailInfo.length == 0">
<td style="text-align: center" colspan="6">暂无数据!</td>
</tr>
<tr
v-if="detailInfo.length != 0 && item"
v-for="(item, index) in detailInfo"
:key="index"
>
<td>{{ item.CUR_REPAY_TIMES + 1 }}</td>
<td>{{ item.REPORT_DATE }}</td>
<td>{{ item.REC_AMT }}</td>
<td>{{ item.REC_INT }}</td>
<td>{{ item.REC_ODP }}</td>
<td>{{ item.ODP }}</td>
<td>{{ item.BILLED_ODI }}</td>
<td>{{ item.REC_ODI }}</td>
</tr>
</table>
</div>
</div>
<div v-show="active == 4" class="h-scroller flex-1-dhc activedata">
<div
style="
padding-bottom: 50px;
margin-right: 4%;
border-top: 1px solid #e1e2e3;
"
>
<div class="imagedata">
<div>
<div>
<svg
style="width: 40px; height: 40px"
class="icon icon_paizhao"
aria-hidden="true"
>
<use xlink:href="#icon-pxwenjianjia"></use>
</svg>
</div>
<div class="dataName">资料名称一</div>
<div class="dataNum">(图片: 0/0 视频: 0/0 音频: 0/0)</div>
</div>
<div>
<svg
style="width: 35px; height: 35px"
class="icon icon_paizhao"
aria-hidden="true"
>
<use xlink:href="#icon-a-02_paizhao"></use>
</svg>
</div>
</div>
</div>
</div>
<div v-show="active == 5" class="h-scroller flex-1-dhc activedata">
<div style="padding-bottom: 50px; margin-right: 4%">
<van-form @submit="onSubmit">
<sub-title>本次催收登记</sub-title>
<div class="v-list d-page d-scroll-container doubleRow">
<d-datetime-picker
:rules="[{ required: true, message: '催收时间不能为空' }]"
v-model="PROCESSDATE"
label="催收时间"
placeholder="请选择催收时间"
:startDate = "new Date()"
:border="true"
:required="true"
></d-datetime-picker>
<d-select
label="催收对象"
:rules="[{ required: true, message: '催收对象不能为空' }]"
placeholder="请选择催收对象"
:required="true"
border="true"
v-model="CONTACTORTYPE"
sfield="CONTACTORTYPE"
size="small"
></d-select>
<d-select
label="催收方式"
:rules="[{ required: true, message: '催收方式不能为空' }]"
placeholder="请选择催收方式"
:required="true"
border="true"
v-model="CONTACTMETHOD"
sfield="CONTACTMETHOD"
size="small"
></d-select>
<d-select
label="催收结果"
:rules="[{ required: true, message: '催收结果不能为空' }]"
placeholder="请选择催收结果"
:required="true"
border="true"
v-model="CONTACTRESULT"
sfield="CONTACTRESULT"
size="small"
></d-select>
<mobile-input
label="联系电话"
:rules="[{ validator: testPhoneNum, message: '格式错误,请输入' }]"
type="digit"
label-width="10px"
:required="true"
input-align="left"
name="CONTACTTELNO"
v-model="CONTACTTELNO"
placeholder="请输入联系电话"
size="small"
/>
<mobile-input
label="催收人"
label-width="10px"
input-align="left"
name="PROCESSUSERID"
:readonly="true"
:border="false"
v-model="PROCESSUSERID"
size="small"
/>
<d-select
label="客户解释"
:rules="[{ required: true, message: '客户解释不能为空' }]"
placeholder="请选择解释内容"
:required="true"
border="true"
v-model="EXPLANATIONCODE"
sfield="EXPLANATIONCODE"
size="small"
></d-select>
<mobile-input
label="备注说明"
:rules="[{ required: true, message: '备注说明不能为空' }]"
type="textarea"
:maxlength="500"
:required="true"
:rows="3"
label-width="10px"
input-align="left"
name="REMAKE"
v-model="REMAKE"
placeholder="备注说明"
size="small"
/>
</div>
<div v-if="CONTACTRESULT == '0301'">
<sub-title>帐户信息</sub-title>
</div>
<div
v-if="CONTACTRESULT == '0301'"
class="v-list d-page d-scroll-container doubleRow"
>
<mobile-input
label="承诺还款金额"
:rules="[{ required: true, message: '' }]"
type="number"
:maxlength="30"
:required="true"
label-width="10px"
input-align="left"
name="repayMoney"
v-model="repayMoney"
placeholder="请输入承诺还款金额"
size="small"
/>
<d-datetime-picker
label="承诺还款日期"
:rules="[{ required: true, message: '' }]"
v-model="repayDate"
placeholder="请选择承诺还款日期"
:border="true"
:required="true"
></d-datetime-picker>
<mobile-input
label="备注"
class="remarks"
:rules="[{ required: true, message: '' }]"
:required="true"
type="textarea"
:maxlength="500"
:rows="3"
label-width="10px"
input-align="left"
name="introduction"
v-model="introduction"
placeholder="请输入"
size="small"
/>
</div>
<div style="display: flex; justify-content: center">
<van-button color="#ff574c" style="width: 100px" round type="info"
>提交
</van-button
>
</div>
</van-form>
</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 nettyApi from "@/constants/api/ms-netty/netty.api.ts";
import IF from "@/public/factory/InterFaceFactory";
import { NativeUI } from "@/public/ts/NativeUI";
import { DatetimePicker } from "vant";
import BasicInformation from "@/components/customer-information/business-information/overview/BasicInformation.vue";
import TableDoubleView from "@/public/TableDoubleView.vue";
import DCalendar from "@/components/general/form/DCalendar.vue";
import Public from "@/public/ts/Public";
import { TabData } from "@/model/entity/TabData";
Vue.use(DatetimePicker);
Vue.use(Tab);
Vue.use(Tabs);
/**
* @Description 催收详情
* @Author JiangTao
* @Date 2021-11-10 下午 03:51
*/
@Component({
name: "CollectionDetails",
components: { DCalendar, TitleBar, BasicInformation, TableDoubleView }
})
export default class CollectionDetails extends Vue {
title = "催收详情"; // 页面标题
indexListCollection = ["历史催收记录", "该笔贷款历次还款承诺"];
indexListIOU = [
"借据基本信息",
"核销信息",
"借据利率信息",
"帐户信息",
"共同还款人",
"共同借款人"
];
indexListIOU1 = ["还款计划信息"];
indexListIOU2 = ["还款记录"];
tabList: TabData[] = [
{ tabText: "催收记录", tabId: "1" },
{ tabText: "借据信息", tabId: "2" },
{ tabText: "还款计划", tabId: "3" },
{ tabText: "还款记录", tabId: "4" },
{ tabText: "影像资料", tabId: "5" },
{ tabText: "催收登记", tabId: "6" }
];
active = 0;
//催收记录
historyContactList = [];
allRepayRecord = []; //历次还款承诺查询
BUSINESSTYPE = this.$store.getters.getCusInfo.BUSINESSTYPE || "";
CUSTOMERNAME = this.$store.getters.getCusInfo.CUSTOMERNAME || "";
SEX = this.$store.getters.getCusInfo.SEX || "";
SERIALNO = this.$store.getters.getCusInfo.SERIALNO || ""; //任务编号
OBJECTNO = this.$store.getters.getCusInfo.OBJECTNO || ""; //任务编号
repayMoney = ""; //还款金额
repayDate = ""; //还款日期
calendarShow = false; //时间选择器
minDate = new Date(); //至少从今天开始选
maxDate = new Date(2050, 12, 1);
// currentDate = new Date();
currentDate = "";
introduction = ""; //备注
//借据信息
//借据基本信息标题
serialInfoTitles = {
SERIALNO: "借据编号",
BUSINESSTYPE: "一手住房按揭贷款",
BUSINESSSUM: "借款金额",
BUSINESSTERM: "贷款期限",
PUTOUTDATE: "借据发放日期",
MATURITYDATE: "借据到期日期",
BUSINESSSTATUS: "业务形态",
OVERDUEDAYS: "逾期天数",
LCATIMES: "当前逾期期数",
BALANCE: "借据余额",
OVERDUEBALANCE: "逾期本金金额",
NORMALBALANCE: "正常本金金额",
INTERESTBALANCE1: "表内欠息余额",
INTERESTBALANCE2: "表外欠息余额",
FINEBALANCE1: "罚息余额",
FINEBALANCE2: "复利余额"
};
//核销信息
checkDeleteTitles = {
WRITEOFFPRINCIPALAMOUNT: "核销本金金额",
WRITEOFFINTERESTAMOUNT: "核销利息金额",
WRITEOFFFINEAMOUNT: "核销罚息金额",
WRITEOFFCOMPAMOUNT: "核销复利金额",
ISCANCEL: "是否核销"
};
//借据利率基本信息
serialBasicInfoTitles = {
LoanRateTermID: "利率类型",
BASERATETYPE: "基准利率类型",
RATEUNIT: "利率单位",
LPRTERMTYPE: "期限品种",
BASERATE: "基准利率",
LPREFFECTDATE: "LPR基础日期",
RATEFLOAT: "浮动幅度(点/比)",
BUSINESSRATE: "执行利率",
RepriceType: "利率调整方式",
DefaultRepriceDate: "利率调整日期",
sRATEFLOAT: "罚息浮动幅度",
sBUSINESSRATE: "罚息利率"
};
//帐户信息
currentRepayTitles = {
ACCOUNTINDICATOR: "帐户类别",
ACCOUNTNO: "还款卡号",
ACCOUNTNAME: "还款帐户名称"
};
//共同还款人
abAcountTitles = {
ACCOUNTNO: "还款卡号",
ACCOUNTNAME: "还款帐户名称",
ACCOUNT: "账号"
};
//共同借款人
appAcountTitles = {
SERIALNO: "流水号",
APPLICANTID: "客户号",
APPLICANTNAME: "客户姓名",
INPUTUSERNAME: "登记人",
INPUTORGNAME: "登记机构"
};
//还款计划信息
repayPlanTitles = {
BSUM: "本期欠款合计",
PERIODNO: "期次",
PAYDATE: "应还日期",
PAYPRINCIPALAMT: "应还本金",
ACTUALPAYPRINCIPALAMT: "实还本金",
PRINCIPALBALANCE: "本期剩余本金",
PAYINTERESTAMT: "应还利息",
ACTUALPAYINTERESTAMT: "实还利息",
PAYPRINCIPALPENALTYAMT: "应还罚息",
ACTUALPAYPRINCIPALPENALTYAMT: "实还罚息",
PAYINTERESTPENALTYAMT: "应还复利",
ACTUALPAYINTERESTPENALTYAMT: "实还复利",
FINISHDATE: "结清日期"
};
//还款记录
repayRecordTitles = {
CUR_REPAY_TIMES: "期次",
REPORT_DATE: "实还日期",
REC_AMT: "实还本金",
REC_INT: "实还利息",
REC_ODP: "实还罚息",
ODP: "应还未还罚息",
BILLED_ODI: "应还复利",
REC_ODI: "实还复利"
};
repayPlanInfo: any[] = []; //还款计划信息
detailInfo: any[] = []; //还款记录信息
abAcountInfo = []; //共同还款人
contractInfo = []; //共同借款人
currentAcountInfo = []; //帐户信息,该笔贷款本次还款承诺
serialBasicInfo = {}; //借据基本信息查询
//催收登记
PROCESSDATE = ""; //催收时间
CONTACTORTYPE = ""; //催收对象
CONTACTMETHOD = ""; //催收方式
CONTACTRESULT = ""; //催收结果
CONTACTTELNO = ""; //联系电话
PROCESSUSERID = sessionStorage.getItem("userName"); //催收人
EXPLANATIONCODE = ""; //客户解释
REMAKE = ""; //备注说明
PROCESSORGID = sessionStorage.getItem("branchNo"); //催收人机构号
style = {
border: "1px solid #fd5065",
color: "#fd5065",
borderBottom: "2px solid #ffffff"
};
others = false;
onClick() {
}
activated() {
console.log(this.CONTACTTELNO);
// this.selectRepayAmount(); //历次还款承诺查询
}
/**
* @description: 点击tab时切换
* @author LiShenghui
* @date 2022/2/14 15:12
*/
tabClick(item: TabData) {
this.active = parseInt(item.tabId) - 1;
if (this.active == 0) {
this.selectRepayAmount(); //历次还款承诺查询
this.selectHistoryContactInfo(); //催收过程查询
} else if (this.active == 1) {
this.selectSerialBasicInfo(); //借据基本信息查询
this.selectAccountInfo(); //该笔贷款本次还款承诺
this.selectABAcountInfo(); //共同还款人
this.selectContractInfo(); //共同借款人
} else if (this.active == 2) {
console.log("---");
this.selectRepayPlan(); //还款计划信息查询
} else if (this.active == 3) {
this.selectRepayRecord(); //还款记录查询
}
}
onSubmit() {
//先提交本次还款承诺
if (this.CONTACTRESULT == "0301") {
this.saveRepayment();
} else {
this.saveContactInfo();
}
}
//保存还款承诺
saveRepayment() {
let me = this;
let param = {
REPAYAMOUNT: this.repayMoney,
REPAYDATE: this.repayDate,
MEMO: this.introduction,
INPUTUSERID: sessionStorage.getItem("workcode"), //登记人
INPUTORGID: sessionStorage.getItem("branchNo"), //登记机构
TASKSERIALNO: this.SERIALNO, //催收编号
tc: nettyApi.TRADE_CODE.saveRepay
};
NativeUI.showWaiting("正在查询...");
return IF.transferDataInter(nettyApi.commonRq, param).then((res: any) => {
console.log(param);
console.log(res);
NativeUI.closeWaiting();
if (res.rc == "1") {
me.saveContactInfo();
} else {
NativeUI.toast(res.msg);
}
});
}
/**
* @Description 保存本次催收登记
* @Author JiangTao
* @Date 2022-01-21 下午 09:58
*/
saveContactInfo() {
let param = {
PROCESSDATE: this.PROCESSDATE,
CONTACTORTYPE: this.CONTACTORTYPE,
CONTACTMETHOD: this.CONTACTMETHOD,
CONTACTRESULT: this.CONTACTRESULT,
CONTACTTELNO: this.CONTACTTELNO,
PROCESSUSERID: sessionStorage.getItem("workcode"),
EXPLANATIONCODE: this.EXPLANATIONCODE,
REMAKE: this.REMAKE,
TASKSERIALNO: this.SERIALNO,
PROCESSORGID: this.PROCESSORGID,
tc: nettyApi.TRADE_CODE.saveContactInfo
};
NativeUI.showWaiting("正在查询...");
return IF.transferDataInter(nettyApi.commonRq, param).then((res: any) => {
NativeUI.closeWaiting();
if (res.rc == "1") {
NativeUI.toast("提交成功!");
} else {
NativeUI.toast(res.msg);
}
});
}
//催收信息
/**
* @Description 催收过程查询
* @Author JiangTao
* @Date 2022-01-22 下午 03:42
*/
selectHistoryContactInfo(pageNo = 1) {
let param = {
OBJECTNO: this.OBJECTNO,
ROWNUMSTART: (pageNo - 1) * 10,
ROWNUMEND: pageNo * 10,
tc: nettyApi.TRADE_CODE.selectContactInfo
};
NativeUI.showWaiting("正在查询...");
return IF.transferDataInter(nettyApi.commonRq, param).then((res: any) => {
NativeUI.closeWaiting();
if (res.rc == "1") {
if (pageNo == 1) {
this.historyContactList = res.COLL_TASK_PROCESS_ARRAY;
}
} else {
NativeUI.toast(res.msg);
}
});
}
/**
* @Description 历次还款承诺查询
* @Author JiangTao
* @Date 2022-01-18 下午 09:36
*/
selectRepayAmount(pageNo = 1) {
let param = {
TASKSERIALNO: this.SERIALNO,
OBJECTNO: this.OBJECTNO,
ROWNUMSTART: (pageNo - 1) * 10,
ROWNUMEND: pageNo * 10,
tc: nettyApi.TRADE_CODE.selectRepayList
};
NativeUI.showWaiting("正在查询...");
return IF.transferDataInter(nettyApi.commonRq, param).then((res: any) => {
console.log(res);
NativeUI.closeWaiting();
if (res.rc == "1") {
if (pageNo == 1) {
this.allRepayRecord = res.COLL_REPAY_SCH_ARRAY;
}
} else {
NativeUI.toast(res.msg);
}
});
}
//借据信息
/**
* @Description 借据基本信息查询
* @Author JiangTao
* @Date 2022-01-19 上午 11:29
*/
selectSerialBasicInfo(pageNo = 1) {
let param = {
TASKSERIALNO: this.SERIALNO,
OBJECTNO: this.OBJECTNO,
tc: nettyApi.TRADE_CODE.selectSerialInfo
};
NativeUI.showWaiting("正在查询...");
return IF.transferDataInter(nettyApi.commonRq, param).then((res: any) => {
console.log(res);
NativeUI.closeWaiting();
if (res.rc == "1") {
if (pageNo == 1) {
this.serialBasicInfo = res;
}
} else {
NativeUI.toast(res.msg);
}
});
}
/**
* @Description 该笔贷款本次还款承诺
* @Author JiangTao
* @Date 2022-01-19 上午 11:35
*/
selectAccountInfo(pageNo = 1) {
let param = {
OBJECTNO: this.OBJECTNO,
ROWNUMSTART: (pageNo - 1) * 10,
ROWNUMEND: pageNo * 10,
tc: nettyApi.TRADE_CODE.selectAccountInfo
};
NativeUI.showWaiting("正在查询...");
return IF.transferDataInter(nettyApi.commonRq, param).then((res: any) => {
NativeUI.closeWaiting();
if (res.rc == "1") {
if (pageNo == 1) {
this.currentAcountInfo = res.AccountInfo;
}
} else {
NativeUI.toast(res.msg);
}
});
}
/**
* @Description 共同还款人
* @Author JiangTao
* @Date 2022-01-19 上午 11:36
*/
selectABAcountInfo(pageNo = 1) {
let param = {
OBJECTNO: this.OBJECTNO,
ROWNUMSTART: (pageNo - 1) * 10,
ROWNUMEND: pageNo * 10,
tc: nettyApi.TRADE_CODE.selectABAcountInfo
};
NativeUI.showWaiting("正在查询...");
return IF.transferDataInter(nettyApi.commonRq, param).then((res: any) => {
NativeUI.closeWaiting();
if (res.rc == "1") {
if (pageNo == 1) {
this.abAcountInfo = res.ABAccountInfo;
}
} else {
NativeUI.toast(res.msg);
}
});
}
/**
* @Description 共同借款人
* @Author JiangTao
* @Date 2022-01-19 上午 11:37
*/
selectContractInfo(pageNo = 1) {
let param = {
OBJECTNO: this.OBJECTNO,
ROWNUMSTART: (pageNo - 1) * 10,
ROWNUMEND: pageNo * 10,
tc: nettyApi.TRADE_CODE.selectContractInfo
};
NativeUI.showWaiting("正在查询...");
return IF.transferDataInter(nettyApi.commonRq, param).then((res: any) => {
NativeUI.closeWaiting();
if (res.rc == "1") {
if (pageNo == 1) {
this.contractInfo = res.ContractInfo;
}
} else {
NativeUI.toast(res.msg);
}
});
}
/**
* @Description 还款计划信息查询
* @Author JiangTao
* @Date 2022-01-19 上午 11:38
*/
selectRepayPlan(pageNo = 1) {
let param = {
OBJECTNO: this.OBJECTNO,
ROWNUMSTART: (pageNo - 1) * 10,
ROWNUMEND: pageNo * 10,
tc: nettyApi.TRADE_CODE.selectRepayPlan
};
NativeUI.showWaiting("正在查询...");
return IF.transferDataInter(nettyApi.commonRq, param).then((res: any) => {
NativeUI.closeWaiting();
if (res.rc == "1") {
if (pageNo == 1) {
this.repayPlanInfo = res.ScheduleInfo;
for (let i = 0; i < this.repayPlanInfo.length; i++) {
this.repayPlanInfo[i].PERIODNO = parseInt(
this.repayPlanInfo[i].PERIODNO
);
this.repayPlanInfo[i].PAYPRINCIPALAMT = Public.formatMoney(
this.repayPlanInfo[i].PAYPRINCIPALAMT,
","
);
this.repayPlanInfo[i].ACTUALPAYPRINCIPALAMT = Public.formatMoney(
this.repayPlanInfo[i].ACTUALPAYPRINCIPALAMT,
","
);
this.repayPlanInfo[i].PRINCIPALBALANCE = Public.formatMoney(
this.repayPlanInfo[i].PRINCIPALBALANCE,
","
);
this.repayPlanInfo[i].PAYINTERESTAMT = Public.formatMoney(
this.repayPlanInfo[i].PAYINTERESTAMT,
","
);
this.repayPlanInfo[i].ACTUALPAYINTERESTAMT = Public.formatMoney(
this.repayPlanInfo[i].ACTUALPAYINTERESTAMT,
","
);
this.repayPlanInfo[i].PAYPRINCIPALPENALTYAMT = Public.formatMoney(
this.repayPlanInfo[i].PAYPRINCIPALPENALTYAMT,
","
);
this.repayPlanInfo[i].ACTUALPAYPRINCIPALPENALTYAMT =
Public.formatMoney(
this.repayPlanInfo[i].ACTUALPAYPRINCIPALPENALTYAMT,
","
);
}
console.log(this.repayPlanInfo);
}
} else {
NativeUI.toast(res.msg);
}
});
}
/**
* @Description 还款记录查询
* @Author JiangTao
* @Date 2022-01-19 上午 11:39
*/
selectRepayRecord(pageNo = 1) {
let param = {
OBJECTNO: this.OBJECTNO,
ROWNUMSTART: (pageNo - 1) * 10,
ROWNUMEND: pageNo * 10,
tc: nettyApi.TRADE_CODE.selectRepayRecord
};
NativeUI.showWaiting("正在查询...");
return IF.transferDataInter(nettyApi.commonRq, param).then((res: any) => {
NativeUI.closeWaiting();
if (res.rc == "1") {
if (pageNo == 1) {
this.detailInfo = res.DetailInfo;
for (let i = 0; i < this.detailInfo.length; i++) {
this.detailInfo[i].CUR_REPAY_TIMES = parseInt(
this.detailInfo[i].CUR_REPAY_TIMES
);
this.detailInfo[i].REC_AMT = Public.formatMoney(
this.detailInfo[i].REC_AMT,
","
);
this.detailInfo[i].REC_INT = Public.formatMoney(
this.detailInfo[i].REC_INT,
","
);
this.detailInfo[i].REC_ODP = Public.formatMoney(
this.detailInfo[i].REC_ODP,
","
);
this.detailInfo[i].ODP = Public.formatMoney(
this.detailInfo[i].ODP,
","
);
this.detailInfo[i].BILLED_ODI = Public.formatMoney(
this.detailInfo[i].BILLED_ODI,
","
);
this.detailInfo[i].REC_ODI = Public.formatMoney(
this.detailInfo[i].REC_ODI,
","
);
}
}
} else {
NativeUI.toast(res.msg);
}
});
}
testPhoneNum(telno: any) {
let patrn = /^0?(13[0-9]|15[012356789]|18[0123456789]|14[57]|17[012356789]|16[6])[0-9]{8}$/,
patrn1 = /^(0[1-9]{2})-\d{8}$|^(0[1-9]{3}-(\d{7,8}))$/,
patrn2 = /^(0[1-9]{2})\d{8}$|^(0[1-9]{3}(\d{7,8}))$|^([0-9](\d{6,7}))$/;
if (!patrn.test(telno) && !patrn1.test(telno) && !patrn2.test(telno)) {
return false;
}
return true;
}
}
</script>
<style scoped>
.deal-with-top {
width: 100%;
display: flex;
justify-content: space-between;
align-items: center;
padding: 1% 1.5%;
border-bottom: 1px solid #efefef;
background-color: #fffafa;
z-index: 2000;
}
.deal-with-top-left {
width: 80%;
display: flex;
justify-content: flex-start;
align-items: flex-end;
}
.deal-with-top-left > div:nth-child(2) {
margin-left: 1%;
margin-right: 2%;
padding-top: 5px;
font-size: 129%;
line-height: 30px;
}
.deal-with-top-left > div:nth-child(3) {
}
.deal-with-top-left img {
width: 2.42%;
padding-top: -1%;
}
.deal-with-top-right {
width: 9.51%;
}
.deal-with-top-right button {
width: 100%;
font-size: 115%;
padding: 2.6% 0;
background-color: white;
border: 1px solid #fd5065;
color: #fd5065;
border-radius: 3px;
}
.label div {
margin-right: 1%;
background-color: white;
border: 1px solid #999999;
border-bottom: 0;
font-size: 115%;
padding: 0.58% 1.2%;
border-top-right-radius: 7px;
border-top-left-radius: 7px;
}
.deal-with-bottom {
width: 92%;
margin: 10px auto;
position: relative;
z-index: 2000;
}
.iconsex {
width: 35px;
height: 35px;
}
::v-deep .van-tabs {
width: 100%;
}
::v-deep .van-tab {
margin: 0 10px;
border: 1px solid #e1e2e3;
border-top-right-radius: 15px;
border-top-left-radius: 15px;
border-bottom: 0;
}
::v-deep .van-tab--active {
border-color: #ff574c;
border-bottom-color: white;
}
::v-deep .van-tabs__wrap {
border-bottom: 1px solid #e1e2e3;
padding-right: 30%;
z-index: 2000;
}
::v-deep .van-tabs__line {
margin-bottom: -2px;
z-index: 2000;
}
::v-deep .information-container {
padding-left: 10px !important;
}
.activedata {
margin-left: 4%;
}
::v-deep .van-index-bar__sidebar {
top: 60% !important;
}
.imagedata {
padding: 0 15px;
width: 100%;
height: 75px;
border-bottom: 1px solid #e1e2e3;
display: flex;
justify-content: space-between;
align-items: center;
}
.imagedata > div:nth-child(1) {
width: 90%;
display: flex;
justify-content: flex-start;
align-items: center;
}
.dataName {
max-width: 50%;
max-height: 40px;
overflow-y: auto;
font-size: 16px;
color: #000000;
margin: 0 20px;
word-break: break-word;
}
.dataNum {
max-width: 30%;
max-height: 40px;
overflow-y: auto;
font-size: 14px;
color: #999999;
word-break: break-word;
}
::v-deep .d-form-field .van-field__label span {
font-size: 14px;
}
::v-deep .van-field__label {
width: 25%;
text-align: right;
}
::v-deep .van-field__body {
padding: 4px 0;
}
::v-deep .d-form-field .van-field.field-small .van-field__label,
.d-form-field .van-field.field-small .van-field__control {
padding-right: 5px;
}
::v-deep .van-cell::after {
border: 0;
}
.doubleRow {
display: grid;
width: 80%;
grid-template-columns: 50% 50%;
margin: 0 auto;
}
.doubleRow > div:nth-child(8) {
grid-column-start: 1;
grid-column-end: 3;
grid-row-start: 6;
grid-row-end: 7;
}
::v-deep .doubleRow > div:nth-child(8) > div:nth-child(1) .van-field__label {
width: 12% !important;
}
::v-deep .remarks > div:nth-child(1) .van-field__label {
width: 12% !important;
}
.remarks {
grid-column-start: 1;
grid-column-end: 3;
grid-row-start: 3;
grid-row-end: 4;
}
.borderStyle {
border-top: 1px solid #e1e2e3;
}
.table-box {
margin-left: 50px;
margin-right: 10%;
}
</style>
<template>
<div>
<title-bar :title="title" @clickLeft="onClick">
<van-icon slot="left" name="cross" size="24" />
</title-bar>
<div class="text-content">
<div class="text-content-left">
<van-sidebar @change="onChange" style="width: 100%" line-height="100px" v-model="activeKey">
<van-sidebar-item v-for="(item, index) in CommonFunctionsList" :key="index" class="label" :title="item.name" />
</van-sidebar>
</div>
<div class="text-content-right">
<!-- 贷款催收 -->
<collection-management v-if="CommonFunctionsList[activeKey].menuId == MENUS.PERSONAL_LOAN_COLLECTION.code"></collection-management>
<!-- 贷后检查 -->
<AfterLoan v-if="CommonFunctionsList[activeKey].menuId == MENUS.PERSONAL_LOAN_CHECK_CY.code"></AfterLoan>
<!-- 中小营销 -->
<SMEMarketingPool v-if="CommonFunctionsList[activeKey].menuId == MENUS.ZX_MARKETING_CY.code"></SMEMarketingPool>
</div>
</div>
</div>
</template>
<script lang="ts">
import { Component, Vue } from "vue-property-decorator";
import TitleBar from "@/components/general/TitleBar.vue";
import { Sidebar, SidebarItem } from "vant";
import CollectionManagement from "@/components/workbench/personal-common-functions/agency-task/CollectionManagement.vue";
import AfterLoan from "@/components/workbench/personal-common-functions/agency-task/AfterLoan.vue";
import SMEMarketingPool from "@/components/workbench/SME-common-functions/SMEMarketingPool.vue";
import {MENU} from "@/constants/enum/menu.enum";
Vue.use(Sidebar);
Vue.use(SidebarItem);
/**
* @Description 常用功能
* @Author JiangTao
* @Date 2021-10-25 下午 08:55
*/
@Component({
name: "CommonFunctions",
components: { TitleBar, CollectionManagement, AfterLoan, SMEMarketingPool },
})
export default class CommonFunctions extends Vue {
activeKey: any = 0;
title = "常用功能"; // 页面标题
CommonFunctionsList: any = [
// {AgencyName: "催收管理", iconName: "", actionType: "CSGL", path: "/CollectionManagement"},
// {AgencyName: "个人贷后检查", iconName: "", actionType: "DHJC", path: "/AfterLoan"},
// {AgencyName: "中小营销", iconName: "", actionType: "ZXYX", path: "/AfterLoan"},
];
MENUS = MENU;
onClick() {
console.log(111111);
this.$router.go(-1);
}
created() {
const data: any = sessionStorage.getItem('menuListYx')
this.CommonFunctionsList = JSON.parse(data);
console.log(this.CommonFunctionsList);
console.log(this.$route.query.menuName);
const menuName = this.$route.query.menuName,
_this = this;
for (const index in this.CommonFunctionsList){
if(this.CommonFunctionsList[index].name == menuName){
_this.activeKey = index;
}
}
}
onChange() {
sessionStorage.setItem("CYactiveKey", this.activeKey);
}
}
</script>
<style scoped>
.text-content {
width: 100%;
height: calc(100vh - 60px);
display: flex;
justify-content: flex-start;
}
.text-content-left {
width: 25%;
background-color: rgba(245, 245, 245, 1);
border: 1px solid rgba(222, 222, 222, 1);
}
.text-content-right {
width: 75%;
}
.label {
border-bottom: 1px solid #e0e1e2;
}
van-sidebar-item {
}
::v-deep .van-sidebar-item--select::before {
background-color: #FF574C;
height: 100%;
}
::v-deep .van-sidebar-item__text {
font-size: 18px;
}
::v-deep .text-content-left {
z-index: 2100;
height: calc(100vh - 60px);
overflow-y: auto;
}
::v-deep .van-sidebar-item__text:before {
content: "😊";
/*content: url("../../../../assets/images/logo.png");*/
width: 30px;
height: 30px;
border-radius: 5px;
}
::v-deep .van-sidebar-item--select > div:before {
background-color: #00a3ff;
}
</style>
<template>
<div>
<title-bar title="客户体检" @clickLeft="onClick">
<van-icon slot="left" name="cross" size="24" />
</title-bar>
<div>
<img class="photoa" src="../../../../assets/images/idcardpeople.png" />
<div style="position: absolute" class="textA">拍摄人像面</div>
</div>
<div>
<img class="photob" src="../../../../assets/images/idcardcountry.png" />
<div style="position: absolute" class="textB">拍摄国徽面</div>
</div>
<div class="inputValue">
<p class="wordType">证件类型</p>
<input type="text" disabled="true" placeholder="身份证" class="inputPosition" />
<p class="idNo">证件号码</p>
<input type="text" class="inputPositionA" />
<p class="customName">客户名称</p>
<input type="text" class="inputPositionB" />
</div>
<div>
<van-button type="info" round style="position: absolute; left: 27%; top: 74%; width: 47%; height: 6%; background-color: rgba(255, 87, 108, 1)" @click="onChang">确定</van-button>
</div>
<div></div>
</div>
</template>
<script lang="ts">
import { Component, Vue } from "vue-property-decorator";
/**
* @Description:客户体检
* @author pd
* @date 2021-11-06 16:42:57
*/
@Component({
name: "CustomCheck",
})
export default class CustomCheck extends Vue {
flag = false;
onChang() {
this.$router.push({
path: "/workbench/commonly-used/personal/custom-check-info",
});
}
onClick() {
console.log(111111);
}
}
</script>
<style lang="scss" scoped>
.top {
width: 20%;
}
.photoa {
position: absolute;
left: 28%;
top: 15%;
width: 22%;
height: 30%;
}
.photob {
position: absolute;
left: 50%;
top: 15%;
width: 22%;
height: 30%;
}
.textA {
left: 35%;
top: 40%;
font-family: "Arial Normal", "Arial";
font-weight: 400;
font-style: normal;
letter-spacing: normal;
color: #333333;
text-align: center;
line-height: normal;
text-transform: none;
}
.textB {
left: 56%;
top: 40%;
font-family: "Arial Normal", "Arial";
font-weight: 400;
font-style: normal;
letter-spacing: normal;
color: #333333;
text-align: center;
line-height: normal;
text-transform: none;
}
.inputValue {
border-width: 0;
position: absolute;
left: 22%;
top: 47%;
width: 50%;
height: 50%;
display: flex;
font-size: 10%;
color: #999999;
line-height: 10%;
}
.inputPosition {
position: absolute;
left: 20%;
top: 2%;
width: 83%;
height: 11%;
padding: 3% 2% 3% 2%;
font-family: "Arial Normal", "Arial";
font-weight: 900;
font-style: normal;
font-size: 13%;
letter-spacing: normal;
color: #000000;
text-align: center;
text-transform: none;
/*background-color: transparent;
border-color: transparent;*/
}
.inputPositionA {
position: absolute;
left: 20%;
top: 19%;
width: 83%;
height: 11%;
padding: 3% 2% 3% 2%;
font-family: "Arial Normal", "Arial";
font-weight: 900;
font-style: normal;
font-size: 13%;
letter-spacing: normal;
color: #000000;
text-align: center;
text-transform: none;
/*background-color: transparent;
border-color: transparent;*/
}
.inputPositionB {
position: absolute;
left: 20%;
top: 35%;
width: 83%;
height: 11%;
padding: 3% 2% 3% 2%;
font-family: "Arial Normal", "Arial";
font-weight: 900;
font-style: normal;
font-size: 13%;
letter-spacing: normal;
color: #000000;
text-align: center;
text-transform: none;
/*background-color: transparent;
border-color: transparent;*/
}
.wordType {
position: absolute;
left: 8%;
top: 7%;
}
.idNo {
position: absolute;
left: 8%;
top: 25%;
}
.customName {
position: absolute;
left: 8%;
top: 41%;
}
.button {
border-radius: 2% 2% 2% 2%;
position: absolute;
left: 27%;
top: 74%;
width: 47%;
height: 6%;
background-color: rgba(255, 87, 108, 1);
}
</style>
<template>
<div>
<title-bar title="个人客户风险检查" @clickLeft="onClick">
<van-icon slot="left" name="cross" size="24" />
</title-bar>
<img class="svgClass" src="../../../../assets/svg/explore.svg" />
<img class="past" src="../../../../assets/svg/past.svg" />
<p class="word">年龄(18-60)是否通过;</p>
<img class="pastA" src="../../../../assets/svg/past.svg" />
<p class="wordA">名单核查是否通过(与随意分检查规则一致);</p>
<img class="pastA" src="../../../../assets/svg/past.svg" style="left: 26%; top: 46%" />
<p class="wordA" style="left: 31%; top: 50%">司法核查是否通过(名下是否有失信被执行记录、名下是否有执行记录);</p>
<img class="pastA" src="../../../../assets/svg/past.svg" style="left: 26%; top: 51%" />
<p class="wordA" style="left: 31%; top: 55%">是否属于我行关联人;</p>
<img class="pastA" src="../../../../assets/svg/past.svg" style="left: 26%; top: 56%" />
<p class="wordA" style="left: 31%; top: 60%">是否属于我行特殊关联自然人;</p>
<img class="pastA" src="../../../../assets/svg/past.svg" style="left: 26%; top: 61%" />
<p class="wordA" style="left: 31%; top: 65%">是否我行员工;</p>
<van-button type="info" round style="position: absolute; left: 27%; top: 74%; width: 47%; height: 6%; background-color: rgba(255, 87, 108, 1)" @click="goBack">知道了</van-button>
</div>
</template>
<script lang="ts">
import { Component, Vue } from "vue-property-decorator";
/**
* @Description:个人客户风险检查
* @author pd
* @date 2021-11-06 16:43:14
*/
@Component({
name: "CustomCheckInfo",
})
export default class CustomCheckInfo extends Vue {
onClick() {
console.log(111111);
}
goBack() {
this.$router.go(-1);
}
}
</script>
<style lang="scss" scoped>
.svgClass {
position: absolute;
left: 39%;
top: 12%;
width: 22%;
height: 23%;
}
.past {
position: absolute;
left: 26%;
top: 36%;
width: 4%;
height: 12%;
}
.pastA {
position: absolute;
left: 26%;
top: 41%;
width: 4%;
height: 12%;
}
.word {
font-family: "苹方-简";
font-weight: 400;
font-size: 138%;
line-height: 62%;
left: 31%;
top: 40%;
position: absolute;
}
.wordA {
font-family: "苹方-简";
font-weight: 400;
font-size: 138%;
line-height: 62%;
left: 31%;
top: 45%;
position: absolute;
}
</style>
<template>
<!-- 客户查询页面 -->
<div>
<title-bar title="客户查询" @clickLeft="onClick">
<van-icon slot="left" name="cross" size="24" />
</title-bar>
<van-tabs v-model:active="active" class="tabs-style" type="card">
<van-tab title="个贷客户"></van-tab>
<van-tab title="网贷客户"></van-tab>
</van-tabs>
<van-form @submit="selectCustInfo">
<table>
<tr style="width: 500px">
<td style="display: flex">
<div class="image-box" style="margin: 10px 20px">
<img class="photoa" src="@/assets/images/prefix-idcard.png" />
<div style="width: 100%; text-align: center; margin-top: 20px">
拍摄人像面
</div>
</div>
<div class="image-box" style="margin: 10px 20px">
<img class="photob" src="@/assets/images/suffix-idcard.png" />
<div style="width: 100%; text-align: center; margin-top: 20px">
拍摄国徽面
</div>
</div>
</td>
</tr>
<tr>
<td>
<mobile-input
type="text"
label="证件类型"
placeholder="身份证"
readonly
size="small"
/>
</td>
</tr>
<tr>
<td>
<mobile-input
:required="true"
:rules="[{ validator, message: '证件号码输入有误' }]"
v-model="IdentNo"
label="证件号码"
type="text"
size="small"
/>
</td>
</tr>
<tr>
<td>
<mobile-input
:required="true"
v-model="CstNm"
label="客户名称"
:rules="[{ required: true, message: '客户名称不能为空' }]"
type="text"
size="small"
/>
</td>
</tr>
<tr>
<td>
<!-- <button type="info" round @click="onChang(3)">查询</button> -->
<button type="info" native-type="submit" round>查询</button>
</td>
</tr>
</table>
</van-form>
<base-popup
v-model="flagPopup2"
:showConfirm="true"
@confirm="onConfirm"
confirmText="知道了"
>
<div class="popup-content2">
<div>
<svg class="icon" aria-hidden="true">
<use xlink:href="#icon-a-tishi60x60ziyuan51"></use>
</svg>
</div>
<div>系统未查询到客户相关信息,请前往个贷系统开户</div>
</div>
</base-popup>
<base-popup
v-model="flagPopup3"
:showCancel="true"
:showConfirm="true"
cancelText="知道了"
confirmText="获取客户授权"
title="客户信息"
@confirm="authorization"
>
<div class="popup-content3">
<div>获取客户授权可以查看全景视图信息</div>
<div class="card">
<div class="card-heater">
<div><img src="@/assets/svg/personal-title-1.svg" alt="" /></div>
<div>孙小红</div>
<div class="label">
<div>小微企业主</div>
<div>代发工资</div>
<div>优易贷客户</div>
<div>住房按揭</div>
</div>
</div>
<div class="card-body">
<div>
23岁&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;未婚&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;身份证号:2345****0988
</div>
<div>手机号码:187****0987</div>
<div>成为我行客户时间:2010年8月</div>
</div>
</div>
</div>
</base-popup>
<base-popup v-model="flagPopup4" title="授权提示">
<div class="popup-content4">
<div @click="face_recognition" class="face-recognition">
<div></div>
<div>客户人脸识别</div>
</div>
<div @click="sms_verification" class="sms-verification">
<div></div>
<div>客户短信验证</div>
</div>
</div>
</base-popup>
</div>
</template>
<script lang="ts">
import { Component, Vue } from "vue-property-decorator";
import BasePopup from "@/components/general/BasePopup.vue";
import nettyApi from "@/constants/api/ms-netty/netty.api.ts";
import IF from "@/public/factory/InterFaceFactory";
import { NativeUI } from "@/public/ts/NativeUI";
import { Popup } from "vant";
/**
* @Description:客户查询
* @author wanghang
* @date 2022-2-12
*/
@Component({
name: "Customerinquiry",
components: { BasePopup },
})
export default class Customerinquiry extends Vue {
i = 0;
flagPopup2 = false;
flagPopup3 = false;
flagPopup4 = false;
IdentNo = ""; //证件号码
CstNm = ""; //客户名称
userInfo = {
YN: "",
BUSINESSTYPE: "",
}; //用户信息
userType = "";
titles = [
{ name: "个贷客户", bsno: "1" },
{ name: "网贷客户", bsno: "2" },
];
active: any = 0;
change() {
// this.active
}
onChang(i: any) {
if (i == 2) {
this.flagPopup2 = true;
} else if (i == 3) {
this.flagPopup3 = true;
}
}
activated() {
this.$router.beforeEach((to, from, next) => {
if (from.path == "/main/workbench") {
this.CstNm = "";
this.IdentNo = "";
}
next();
});
}
onClick() {
console.log(111111);
}
authorization() {
this.flagPopup4 = true;
}
sms_verification() {
this.$router.push({
path: "/workbench/commonly-used/personal/post-note",
});
}
face_recognition() {
console.log("人脸识别");
}
//查询客户信息,根据不同的用户类别执行不同的方法
selectCustInfo() {
if (this.active == 0) {
this.selectPersonalCustInfo(); //等于0查询个贷客户
} else {
this.selectNetCust(); //等于1查询网贷客户
}
}
//查询个贷客户
selectPersonalCustInfo() {
const param = {
ROWNUMSTART: 0,
ROWNUMEND: 1,
CUSTOMERNAME: this.CstNm,
custidcardno: this.IdentNo,
CXTYPE: "2", //2为个人客户查询
tc: nettyApi.TRADE_CODE.selectPersonalList,
};
NativeUI.showWaiting();
return IF.transferDataInter(nettyApi.commonRq, param).then((res: any) => {
NativeUI.closeWaiting();
if (res.rc == "1") {
if (res.CustomerInfoArray.length == 0) {
//没有返回数据,直接提示
this.flagPopup2 = true;
} else {
//加一个判断,如果是经办经理直接跳转到详情页,如果不是经办经理就跳转到简要显示页面
this.userInfo = res.CustomerInfoArray[0];
this.userType = res.CustomerInfo[0];
// this.$store.commit("setCustInfo", {});
// this.$store.commit("setCustInfo", [this.userInfo, this.userType]);
if (this.userInfo.YN == "") {
//如果不是经办经理就去简要页面
this.$store.commit("setEmpty");
this.$store.commit("setCusInfo", this.userInfo);
this.$router.push({
name: "PersonSimplifyView",
});
} else if (this.userInfo.YN == "Y") {
//如果是经办经理直接去详情页
this.$store.commit("setEmpty");
this.$store.commit("setCusInfo", this.userInfo);
this.$router.push({
path: "/PersonalDetails",
query: {
active: this.active,
},
});
}
}
// this.CustomerListArray = res.CustomerListArray;
} else {
NativeUI.toast(res.msg);
}
});
}
//验证身份证号
validator(val: any) {
return /^([1-6][1-9]|50)\d{4}(18|19|20)\d{2}((0[1-9])|10|11|12)(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$/.test(
val
);
}
//查询网贷客户
selectNetCust() {
const param = {
ROWNUMSTART: 0,
ROWNUMEND: 1,
CUSTOMERNAME: this.CstNm,
custidcardno: this.IdentNo,
CXTYPE: "2", //2为个人客户查询
tc: nettyApi.TRADE_CODE.selectNetCustList,
};
NativeUI.showWaiting();
return IF.transferDataInter(nettyApi.commonRq, param).then((res: any) => {
NativeUI.closeWaiting();
if (res.rc == "1") {
if (res.CustomerInfoArray.length == 0) {
//没有返回数据,直接提示
this.flagPopup2 = true;
} else {
//加一个判断,如果是经办经理直接跳转到详情页,如果不是经办经理就跳转到简要显示页面
this.userInfo = res.CustomerInfoArray[0];
this.userType = res.CustomerInfo[0];
// this.$store.commit("setCustInfo", {});
// this.$store.commit("setCustInfo", [this.userInfo, this.userType]);
if (this.userInfo.YN == "") {
//如果不是经办经理就去简要页面
this.$store.commit("setEmpty");
this.$store.commit("setCusInfo", this.userInfo);
this.$router.push({
name: "PersonSimplifyView",
});
} else if (this.userInfo.YN == "Y") {
//如果是经办经理直接去详情页
this.$store.commit("setEmpty");
this.$store.commit("setCusInfo", this.userInfo);
this.$router.push({
path: "/PersonalDetails",
query: {
active: this.active,
},
});
}
}
// this.CustomerListArray = res.CustomerListArray;
} else {
NativeUI.toast(res.msg);
}
});
}
onConfirm() {
this.flagPopup2 = false;
}
}
</script>
<style lang="scss" scoped>
.photoa {
width: 100%;
}
.photob {
width: 100%;
}
button {
width: 47%;
background-color: rgba(255, 87, 108, 1);
}
.popup-content2 div {
text-align: center;
}
.popup-content2 > div:nth-child(2) {
font-size: 20px;
color: #333333;
font-family: "Arial Normal", "Arial";
}
.popup-content3 {
width: 90%;
margin: 0 auto;
}
.popup-content3 > div:nth-child(1) {
color: #f59701;
}
.card {
width: 100%;
padding: 2%;
margin-top: 2%;
border-radius: 10px;
border: 0;
box-shadow: 0px 0px 5px rgb(170 170 170 / 35%);
}
.card-heater {
width: 100%;
display: flex;
justify-content: flex-start;
align-items: center;
}
.card-heater > div:nth-child(1) {
width: 3.5%;
border-radius: 20px;
padding: 0.3% 0.6%;
background-color: #f59a23;
}
.card-heater > div:nth-child(1) img {
width: 90%;
}
.card-heater > div:nth-child(2) {
font-weight: bold;
margin-left: 1%;
font-size: 18px;
color: #333333;
font-family: "Arial Normal", "Arial";
}
.label {
width: 42%;
display: flex;
justify-content: center;
align-items: center;
}
.label div {
margin: 0 1%;
background-color: #d9f4ff;
color: #169bd5;
border-radius: 5px;
padding: 0.2% 2% 0.1% 2%;
font-size: 12px;
}
.card-body div {
font-family: "Arial Normal", "Arial";
color: #333333;
font-size: 14px;
margin: 1.5% 0;
}
.popup-content4 {
width: 55%;
margin: 0 auto;
display: flex;
justify-content: space-around;
align-items: center;
}
.popup-content4 div {
width: 45%;
}
.face-recognition > div:nth-child(1),
.sms-verification > div:nth-child(1) {
width: 100%;
padding-top: 100%;
padding-bottom: 20%;
border: 1px solid rgba(215, 215, 215, 1);
border-radius: 10px;
}
.face-recognition > div:nth-child(2),
.sms-verification > div:nth-child(2) {
width: 100%;
text-align: center;
color: #333333;
font-family: "Arial Normal", "Arial";
margin-top: 5%;
}
table {
width: 35%;
margin: 0 auto;
}
button {
width: 100%;
margin: 0 auto;
border-radius: 30px;
border: 1px solid #fd5065;
color: white;
font-size: 20px;
padding: 1.5% 0;
}
.tab-box {
margin: 10px 0;
}
::v-deep .van-tabs--line .van-tabs__wrap {
width: 20%;
}
::v-deep .van-tab--active {
font-weight: bold;
}
::v-deep .van-tab {
font-size: 16px;
}
.image-box {
margin: 10px 20px;
width: 160px;
height: 160px;
}
.tabs-style {
margin: 20px 30%;
}
</style>
<template>
<!-- 个人业务查询-->
<div>
<title-bar :title="title">
<van-icon slot="left" name="cross" size="24" />
</title-bar>
<div class="text-content">
<div class="text-content-left">
<van-sidebar @change="onChange" style="width: 100%" line-height="100px" v-model="active">
<van-sidebar-item v-for="(item, index) in CommonFunctionsList" :key="index" class="label" :title="item.AgencyName" />
</van-sidebar>
</div>
<div class="text-content-right">
<!-- 电话查询历史查询 -->
<MarketingQuery v-if="active == 0"></MarketingQuery>
<!-- 个贷催收列表 -->
<CollectionManagement v-if="active == 1"></CollectionManagement>
</div>
</div>
</div>
</template>
<script lang="ts">
import { Component, Vue } from "vue-property-decorator";
import TitleBar from "@/components/general/TitleBar.vue";
import { Sidebar, SidebarItem } from "vant";
import MarketingQuery from "@/components/workbench/personal-common-functions/agency-task/telemarketing/MarketingQuery.vue";
import SMEMarketingPool from "@/components/workbench/SME-common-functions/SMEMarketingPool.vue";
import CollectionManagement from "@/components/workbench/personal-common-functions/agency-task/CollectionManagement.vue";
Vue.use(Sidebar);
Vue.use(SidebarItem);
/**
* @Description 个人业务查询
* @Author JiangTao
* @Date 2021-10-25 下午 08:55
*/
@Component({
name: "GDBusinessQuery",
components: { TitleBar, MarketingQuery,CollectionManagement, SMEMarketingPool },
})
export default class CommonFunctions extends Vue {
active: any=0;
activeKey: any = 0;
title = "个人业务查询"; // 页面标题
CommonFunctionsList = [
{AgencyName: "电话营销列表历史查询", iconName: "", actionType: "CSGL", path: "/CollectionManagement"},
{AgencyName: "个贷催收列表", iconName: "", actionType: "DHJC", path: "/AfterLoan"},
];
onClick() {
console.log(111111);
}
mounted() {
// this.activeKey = sessionStorage.getItem("CYactiveKey") || 0;
this.active = sessionStorage.getItem('GDCXactiveKey') ? Number(sessionStorage.getItem('GDCXactiveKey')) : 0;
console.log('abcde', this.active);
}
onChange() {
sessionStorage.setItem("GDCXactiveKey", this.active);
}
}
</script>
<style scoped>
.text-content {
width: 100%;
height: calc(100vh - 60px);
display: flex;
justify-content: flex-start;
}
.text-content-left {
width: 25%;
background-color: rgba(245, 245, 245, 1);
border: 1px solid rgba(222, 222, 222, 1);
}
.text-content-right {
width: 75%;
}
.label {
border-bottom: 1px solid #e0e1e2;
}
van-sidebar-item {
}
::v-deep .van-sidebar-item--select::before {
background-color: #FF574C;
height: 100%;
}
::v-deep .van-sidebar-item__text {
font-size: 18px;
}
::v-deep .text-content-left {
z-index: 2100;
height: calc(100vh - 60px);
overflow-y: auto;
}
::v-deep .van-sidebar-item__text:before {
content: "😊";
/*content: url("../../../../assets/images/logo.png");*/
width: 30px;
height: 30px;
border-radius: 5px;
}
::v-deep .van-sidebar-item--select > div:before {
background-color: #00a3ff;
}
</style>
<template>
<div class="d-page d-flex flex-column">
<title-bar :title="title">
<van-icon slot="left" name="cross" size="24" />
</title-bar>
<div class="deal-with-top">
<div class="deal-with-top-left">
<div>
<svg
v-if="SEX ? SEX == '男' : true"
class="icon iconsex"
aria-hidden="true"
>
<use xlink:href="#icon-nanxing-gerentouxiangxpx"></use>
</svg>
<svg
v-if="SEX ? SEX == '女' : false"
class="icon iconsex"
aria-hidden="true"
>
<use xlink:href="#icon-nvxing-gerentouxiangxpx"></use>
</svg>
</div>
<div>{{ CUSTOMERNAME }}</div>
<div>任务编号:{{ SERIALNO }}</div>
</div>
</div>
<div class="deal-with-bottom">
<tab-nav :tabList="tabList" @tabClick="tabClick" />
</div>
<div v-show="active == 0" class="h-scroller flex-1-dhc activedata">
<anchor-nav ref="anchorNav" :navList="navList">
<template>
<div slot="evaluation">
<!-- 总体评价 -->
<div class="v-list d-page d-scroll-container">
<van-form @submit="onSubmit">
<d-select
label="检查结论"
:rules="[{ required: true, message: '' }]"
placeholder="请选择检查结论"
:required="true"
border="true"
v-model="checkResult"
:sfield="sfieldName"
size="small"
></d-select>
<mobile-input
class="remarks"
label="说明"
type="textarea"
:maxlength="500"
:rows="3"
label-width="10px"
input-align="left"
name="introduction"
v-model="introduction"
placeholder="请输入"
size="small"
/>
<div style="display: flex; justify-content: center">
<van-button
color="#ff574c"
style="width: 100px"
round
type="info"
>保存
</van-button
>
</div>
</van-form>
</div>
</div>
<div slot="syfDetailInfo">
<!-- 随意分项下贷款详情 -->
<table class="customer-management-information-form">
<tr>
<td>贷款合同编号</td>
<td>借据编号</td>
<!-- <td>客户名称</td> -->
<td>证件编号</td>
<td>方案产品</td>
<td>贷款金额</td>
<td>贷款余额</td>
<td>贷款发放日</td>
<td>贷款到期日</td>
<td>受理机构</td>
<td>客户经理</td>
</tr>
<tr v-if="syfInfo.length != 0">
<td style="text-align: center" colspan="9">暂无数据!</td>
</tr>
<tr
v-if="syfInfo.length != 0"
v-for="(item, index) in syfInfo"
:key="index"
>
<!-- <td>{{ item.CONTRACTNO }}</td> -->0
<td>{{ item.BDSERIALNO }}</td>
<!-- <td>{{ item.CUSTOMERNAME }}</td> -->
<td>{{ item.CERTID }}</td>
<td>{{ item.BUSINESSTYPENAME }}</td>
<td>{{ item.BUSINESSSUM }}</td>
<td>{{ item.BALANCE }}</td>
<td>{{ item.PUTOUTDATE }}</td>
<td>{{ item.MATURITYDATE }}</td>
<td>{{ item.OPERATEORGNAME }}</td>
<td>{{ item.OPERATEUSERNAME }}</td>
</tr>
</table>
</div>
</template>
</anchor-nav>
</div>
<div v-show="active == 1" class="h-scroller flex-1-dhc activedata">
<div v-if="contractInfo.length != 0">
<sub-title>合同详情</sub-title>
<table-double-view
v-for="(item, index) in contractInfo"
:key="index"
:keyValue="contractTitles"
:data="item"
></table-double-view>
</div>
<div v-else align="center">
<img
src="@/assets/images/nodata.png"
style="width: 40%; margin-top: 137px"
/>
</div>
</div>
<div v-show="active == 2" class="h-scroller flex-1-dhc activedata">
<div v-if="duebillInfo.length != 0">
<sub-title>借据基本信息</sub-title>
<table-double-view
v-for="(item, index) in duebillInfo"
:key="index"
:keyValue="duebillTitles"
:data="item"
></table-double-view>
</div>
<div v-else align="center">
<img
src="@/assets/images/nodata.png"
style="width: 40%; margin-top: 137px"
/>
</div>
</div>
<div v-show="active == 3" class="h-scroller flex-1-dhc activedata">
<div style="width: 100%; margin-top: 50px; text-align: center">
暂无数据!
</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 nettyApi from "@/constants/api/ms-netty/netty.api.ts";
import IF from "@/public/factory/InterFaceFactory";
import { NativeUI } from "@/public/ts/NativeUI";
import { DatetimePicker } from "vant";
import BasicInformation from "@/components/customer-information/business-information/overview/BasicInformation.vue";
import TableDoubleView from "@/public/TableDoubleView.vue";
import DCalendar from "@/components/general/form/DCalendar.vue";
import { TabData } from "@/model/entity/TabData";
import Public from "@/public/ts/Public";
Vue.use(DatetimePicker);
Vue.use(Tab);
Vue.use(Tabs);
/**
* @Description 催收详情
* @Author JiangTao
* @Date 2021-11-10 下午 03:51
*/
@Component({
name: "PostLoanDetailsView",
components: { DCalendar, TitleBar, BasicInformation, TableDoubleView }
})
export default class PostLoanDetailsView extends Vue {
title = "贷后检查详情"; // 页面标题
indexListCollection = ["总体评价", "历史催收记录"];
indexListIOU = ["基本信息", "担保信息"];
tabList: TabData[] = [
{ tabText: "检查详情", tabId: "1" },
{ tabText: "合同详情", tabId: "2" },
{ tabText: "借据详情", tabId: "3" },
{ tabText: "影像上传", tabId: "4" }
];
activeType: any = "";
active = 0;
userInfo = ""; //客户数据
SERIALNO = this.$store.getters.getCusInfo.SERIALNO || ""; //任务编号
BUSINESSTYPE = this.$store.getters.getCusInfo.BUSINESSTYPE || "";
CUSTOMERNAME = this.$store.getters.getCusInfo.CUSTOMERNAME || "";
SEX = this.$store.getters.getCusInfo.SEX || "";
//检查详情
checkResult = ""; //检查结论
introduction = ""; //备注
syfInfo: any[] = []; //随意分详情
contractInfo: any[] = []; //合同信息详情
duebillInfo: any[] = []; //借据信息
sfieldName = this.$store.getters.getCusInfo.INSPECTTYPE == "随意分贷款检查" ? "SYFINSPECTATION" : "INSPECTATION";
//合同详情
//合同信息详情
contractTitles = {
CONTRACTARTIFICIALNO: "合同文本编号",
CONTRACTDATE: "起始日期",
MATURITYDATE: "到期日期",
PRODUCTID: "方案产品",
PRODUCTIDNAME: "方案产品名",
OCCURTYPE: "发生类型",
BUSINESSTERM: "合同期限(月)",
BUSINESSCURRENCY: "币种",
BUSINESSSUM: "合同金额(元)",
ADVANCENOPAY: "提前还款手续费(元)",
ADVANCEPAYRATE: "提前还款手续费率(%)",
ADVANCEPAYRULER: "提前还款手续费规则",
APPLICATIONCARDPRODUCT: "适用卡产品",
CHARGETERM: "计费周期",
COUNTERFEETYPE: "手续费收取方式",
// CUSTOMERNAME: '客户名称',
CUSTOMERSOURCE: "客户来源",
CYCLENDATE: "信用卡账单日",
FEERATE: "费率(%)",
FIXTERM: "是否固定期限",
INDUSTRYTYPE: "客户所属行业",
INSTALAPPLYTERM: "分期申请期限(月)",
INSTALPAYMENTTYPE: "信用卡还款方式",
ISINCD: "是否成都市公积金",
ISNEEDNORMALCARD: "是否需要标准信用卡",
MERCHANTID: "分期商户编号",
NONSTDINDICATOR: "特殊业务标识",
OTHERBREAKSUM: "其它违约金(元)",
OVERDRAFTID: "透支科目号",
VOUCHTYPE: "担保方式"
};
//借据详情
duebillTitles = {
DUEBILLSERIALNO: "借据编号",
BUSINESSTYPE: "产品名称",
BUSINESSSUM: "借据金额(元)",
BUSINESSCURRENCY: "币种",
BUSINESSTERM: "贷款期限(月)",
PUTOUTDATE: "借据发放日期",
MATURITYDATE: "借据到期日期",
ACCOUNTINGORGID: "账务机构",
BUSINESSSTATUS: "业务形态",
MONTHCLASS: "月初贷款形态",
OVERDUEDAYS: "逾期天数",
HISOVERDUEDAYS: "历史最高逾期天数",
LCATIMES: "当前逾期期数",
TATIMES: "累计逾期期数",
MAXODTIMES: "历史最高逾期期数",
BALANCE: "借据余额(元)",
OVERDUEBALANCE: "逾期本金金额(元)",
NORMALBALANCE: "正常本金金额(元)",
INTERESTBALANCE1: "表内欠息余额(元)",
INTERESTBALANCE2: "表外欠息余额(元)",
FINEBALANCE1: "罚息余额(元)",
FINEBALANCE2: "复利余额(元)"
};
syfTitles = {
CONTRACTNO: "贷款合同编号",
BDSERIALNO: "借据编号",
// CUSTOMERNAME: '客户名称',
CERTID: "证件编号",
BUSINESSTYPENAME: "方案产品",
BUSINESSSUM: "贷款金额",
BALANCE: "贷款余额",
PUTOUTDATE: "贷款发放日",
MATURITYDATE: "贷款到期日",
OPERATEORGNAME: "受理机构",
OPERATEUSERNAME: "客户经理"
};
// 检查详情
navList = [
{ key: "evaluation", titleText: "总体评价" },
{ key: "syfDetailInfo", titleText: "随意分项下贷款详情" }
];
// 合同详情
navList1 = [
{ key: "basicInfo", titleText: "基本信息" },
{ key: "guaranteeInfo", titleText: "担保信息" }
];
mounted() {
this.selectLoancheckDetail().then(() => {
console.log(this.introduction);
this.SERIALNO = this.$store.getters.getCusInfo.SERIALNO || ""; //任务编号
this.activeType = sessionStorage.getItem("activeType");
this.userInfo = this.$store.getters.getCusInfo;
});
}
/**
* @description: 点击tab时切换
* @author LiShenghui
* @date 2022/2/14 15:12
*/
tabClick(item: TabData) {
this.active = parseInt(item.tabId) - 1;
// if (this.active == 0) {
// } else if (this.active == 1) {
// this.selectLoancheckDetail(); //贷后详情查询
// } else if (this.active == 2) {
// this.selectLoancheckDetail(); //贷后详情查询
// }
}
onSubmit() {
this.saveLoanCheckInfo().then(() => {
setTimeout(() => {
this.$router.go(-1);
}, 2500);
});
}
//保存贷后检查信息
saveLoanCheckInfo() {
let param = {
OBJECTNO: this.SERIALNO, //上传任务号
ADDFLAG: "2", //是否新增,默认为保存
INSPECTACTION: this.checkResult, //检查结论
OPINION: this.introduction, //说明
tc: nettyApi.TRADE_CODE.addNetLoanCheckInfo
};
NativeUI.showWaiting("正在查询...");
return IF.transferDataInter(nettyApi.commonRq, param).then((res: any) => {
NativeUI.closeWaiting();
if (res.rc == "1") {
//新增成功后重新查询一次
NativeUI.toast("保存成功!");
} else {
NativeUI.toast(res.msg);
}
});
}
//网贷贷后详情查询
selectLoancheckDetail() {
let param = {
SERIALNO: this.SERIALNO,
tc: nettyApi.TRADE_CODE.selectNetLoanCheckDetail
};
NativeUI.showWaiting("正在查询...");
return IF.transferDataInter(nettyApi.commonRq, param).then((res: any) => {
console.log(res);
NativeUI.closeWaiting();
if (res.rc == "1") {
this.syfInfo = res.SYF_DUEBILL_LIST; //随意分详情
this.contractInfo = res.CONTRACT_INFO_LIST; //合同信息详情
this.duebillInfo = res.DUEBILL_INFO_LIST; //借据详情
this.checkResult = res.INSPECTACTION; //检查结论
// this.guarantyInfo = res.GUARANTY_CONTRACT_LIST; //担保信息
this.introduction = res.OPINION; //说明
//改变数据格式
//随意分
for (let i = 0; i < this.syfInfo.length; i++) {
this.syfInfo[i].BALANCE = Public.formatMoney(
this.syfInfo[i].BALANCE,
","
);
this.syfInfo[i].BUSINESSSUM = Public.formatMoney(
this.syfInfo[i].BUSINESSSUM,
","
);
}
//合同详情
for (let i = 0; i < this.contractInfo.length; i++) {
// this.contractInfo[i].BALANCE = Public.formatMoney(this.contractInfo[i].BALANCE);
this.contractInfo[i].BUSINESSSUM = Public.formatMoney(
this.contractInfo[i].BUSINESSSUM,
","
);
if (this.contractInfo[i].CHARGETERM == "1") {
this.contractInfo[i].CHARGETERM = "按日";
} else if (this.contractInfo[i].CHARGETERM == "2") {
this.contractInfo[i].CHARGETERM = "按期";
}
if (this.contractInfo[i].FIXTERM == "1") {
this.contractInfo[i].FIXTERM = "";
} else if (this.contractInfo[i].FIXTERM == "2") {
this.contractInfo[i].FIXTERM = "";
}
this.contractInfo[i].INSTALAPPLYTERM = parseInt(
this.contractInfo[i].INSTALAPPLYTERM
);
if (this.contractInfo[i].COUNTERFEETYPE == "1") {
this.contractInfo[i].COUNTERFEETYPE = "一次性";
} else if (this.contractInfo[i].COUNTERFEETYPE == "2") {
this.contractInfo[i].COUNTERFEETYPE = "分期收取";
}
this.contractInfo[i].ADVANCENOPAY = Public.formatMoney(
this.contractInfo[i].ADVANCENOPAY,
","
);
this.contractInfo[i].OTHERBREAKSUM = Public.formatMoney(
this.contractInfo[i].OTHERBREAKSUM,
","
);
if (this.contractInfo[i].ADVANCEPAYRULER == "1") {
this.contractInfo[i].ADVANCEPAYRULER = "剩余本金";
} else if (this.contractInfo[i].ADVANCEPAYRULER == "2") {
this.contractInfo[i].ADVANCEPAYRULER = "分期总金额";
}
if (this.contractInfo[i].VOUCHTYPE == "1") {
this.contractInfo[i].VOUCHTYPE = "抵押";
} else if (this.contractInfo[i].VOUCHTYPE == "2") {
this.contractInfo[i].VOUCHTYPE = "质押";
} else if (this.contractInfo[i].VOUCHTYPE == "3") {
this.contractInfo[i].VOUCHTYPE = "保证";
} else if (this.contractInfo[i].VOUCHTYPE == "D") {
this.contractInfo[i].VOUCHTYPE = "信用";
}
}
//借据详情数据处理
for (let i = 0; i < this.duebillInfo.length; i++) {
this.duebillInfo[i].BUSINESSSUM = Public.formatMoney(
this.duebillInfo[i].BUSINESSSUM,
","
);
this.duebillInfo[i].BUSINESSTERM = parseInt(
this.duebillInfo[i].BUSINESSTERM
);
this.duebillInfo[i].OVERDUEDAYS = parseInt(
this.duebillInfo[i].OVERDUEDAYS
);
// this.duebillInfo[i].HISOVERDUEDAYS = parseInt(this.duebillInfo[i].HISOVERDUEDAYS);
this.duebillInfo[i].LCATIMES = parseInt(this.duebillInfo[i].LCATIMES);
// this.duebillInfo[i].TATIMES = parseInt(this.duebillInfo[i].TATIMES);
// this.duebillInfo[i].MAXODTIMES = parseInt(this.duebillInfo[i].MAXODTIMES);
this.duebillInfo[i].BALANCE = Public.formatMoney(
this.duebillInfo[i].BALANCE,
","
);
this.duebillInfo[i].OVERDUEBALANCE = Public.formatMoney(
this.duebillInfo[i].OVERDUEBALANCE,
","
);
this.duebillInfo[i].INTERESTBALANCE1 = Public.formatMoney(
this.duebillInfo[i].INTERESTBALANCE1,
","
);
this.duebillInfo[i].INTERESTBALANCE2 = Public.formatMoney(
this.duebillInfo[i].INTERESTBALANCE2,
","
);
this.duebillInfo[i].FINEBALANCE1 = Public.formatMoney(
this.duebillInfo[i].FINEBALANCE1,
","
);
this.duebillInfo[i].FINEBALANCE2 = Public.formatMoney(
this.duebillInfo[i].FINEBALANCE2,
","
);
}
} else {
NativeUI.toast(res.msg);
}
});
}
detail(item: any) {
console.log(item);
//只有存在抵押物的时候
if (item.ASSET_INFO_LIST.length != 0) {
this.$router.push({
name: "CollateralDetail",
params: {
assetInfoList: item
}
});
} else {
NativeUI.toast("暂无抵质押物!");
}
// this.$router.push({
// path: "/CollateralDetail",
// });
}
}
</script>
<style scoped>
.deal-with-top {
width: 100%;
display: flex;
justify-content: space-between;
align-items: center;
padding: 1% 1.5%;
border-bottom: 1px solid #efefef;
background-color: #fffafa;
z-index: 2000;
}
.deal-with-top-left {
width: 80%;
display: flex;
justify-content: flex-start;
align-items: flex-end;
}
.deal-with-top-left > div:nth-child(2) {
margin-left: 1%;
margin-right: 2%;
padding-top: 5px;
font-size: 129%;
line-height: 30px;
}
.deal-with-top-left > div:nth-child(3) {
}
.deal-with-top-left img {
width: 2.42%;
padding-top: -1%;
}
.deal-with-top-right {
width: 9.51%;
}
.deal-with-top-right button {
width: 100%;
font-size: 115%;
padding: 2.6% 0;
background-color: white;
border: 1px solid #fd5065;
color: #fd5065;
border-radius: 3px;
}
.label div {
margin-right: 1%;
background-color: white;
border: 1px solid #999999;
border-bottom: 0;
font-size: 115%;
padding: 0.58% 1.2%;
border-top-right-radius: 7px;
border-top-left-radius: 7px;
}
.deal-with-bottom {
width: 92%;
margin: 10px auto;
position: relative;
z-index: 2000;
}
.iconsex {
width: 35px;
height: 35px;
}
::v-deep .van-tabs {
width: 100%;
}
::v-deep .van-tab {
margin: 0 10px;
border: 1px solid #e1e2e3;
border-top-right-radius: 15px;
border-top-left-radius: 15px;
border-bottom: 0;
}
::v-deep .van-tab--active {
border-color: #ff574c;
border-bottom-color: white;
}
::v-deep .van-tabs__wrap {
border-bottom: 1px solid #e1e2e3;
padding-right: 60%;
z-index: 2000;
}
::v-deep .van-tabs__line {
margin-bottom: -2px;
z-index: 2000;
}
::v-deep .information-container {
padding-left: 10px !important;
}
.activedata {
margin-left: 4%;
}
::v-deep .van-index-bar__sidebar {
top: 60% !important;
}
.imagedata {
padding: 0 15px;
width: 100%;
height: 75px;
border-bottom: 1px solid #e1e2e3;
display: flex;
justify-content: space-between;
align-items: center;
}
.imagedata > div:nth-child(1) {
width: 90%;
display: flex;
justify-content: flex-start;
align-items: center;
}
.dataName {
max-width: 50%;
max-height: 40px;
overflow-y: auto;
font-size: 16px;
color: #000000;
margin: 0 20px;
word-break: break-word;
}
.dataNum {
max-width: 30%;
max-height: 40px;
overflow-y: auto;
font-size: 14px;
color: #999999;
word-break: break-word;
}
::v-deep .d-form-field .van-field__label span {
font-size: 14px;
}
::v-deep .van-field__label {
width: 8%;
text-align: right;
}
::v-deep .van-field__body {
padding: 4px 0;
}
::v-deep .d-form-field .van-field.field-small .van-field__label,
.d-form-field .van-field.field-small .van-field__control {
padding-right: 5px;
}
::v-deep .van-cell::after {
border: 0;
}
::v-deep .van-form {
display: grid;
width: 90%;
grid-template-columns: 50% 50%;
margin: 0 auto;
}
::v-deep .remarks > div:nth-child(1) .van-field__label {
width: 12% !important;
}
.remarks {
grid-column-start: 1;
grid-column-end: 3;
grid-row-start: 3;
grid-row-end: 4;
}
::v-deep .van-field__label {
width: 25%;
text-align: right;
}
::v-deep .van-form > div:nth-child(3) {
grid-column-start: 1;
grid-column-end: 3;
grid-row-start: 4;
grid-row-end: 5;
}
::v-deep .van-index-bar__sidebar {
top: 200px !important;
right: 5px !important;
transform: unset;
}
::v-deep .d-subtitle > span {
width: 5px;
background: #f79400;
height: 12px;
margin-right: 10px;
}
::v-deep .d-subtitle {
margin-left: 20px;
}
</style>
<!--个贷-网贷简版视图-->
<template>
<div>
<title-bar title="客户简版信息" @clickLeft="onClick">
<van-icon slot="left" name="cross" size="24" />
</title-bar>
<div class="content-box">
<div class="tips-text"><span>获取客户授权可以查看全景视图信息</span></div>
<div class="userInfo-box">
<div class="user-name">
<svg
class="icon"
style="width: 36px; height: 36px"
aria-hidden="true"
>
<use xlink:href="#icon-yonghu"></use>
</svg>
<div class="text-1">{{ userInfo.CUSTOMERNAME }}</div>
<div :class="{ activeClass: arrowStatus }" class="badge-box">
<span
v-if="userSelectedInfo.IS_LOAN_OVDUE == '1'"
class="d-tag tag-green tag-position"
>贷款逾期</span
>
<span
v-if="userSelectedInfo.IS_CRDCD_OVDUE == '1'"
class="d-tag tag-gold tag-position"
>信用卡逾期</span
>
<span
v-if="userSelectedInfo.IS_BLKLIST_CST == '1'"
class="d-tag tag-blue tag-position"
>名单客户</span
>
<span
v-if="userSelectedInfo.IS_PAYROLL_SALARY == '1'"
class="d-tag tag-green tag-position"
>代发工资</span
>
<span
v-if="userSelectedInfo.HAS_HOS_FUND_ACCT == '1'"
class="d-tag tag-gold tag-position"
>公积金存款帐户</span
>
<span
v-if="userSelectedInfo.IS_HOS_LOAN_CST == '1'"
class="d-tag tag-blue tag-position"
>住房按揭帐户</span
>
<span
v-if="userSelectedInfo.HAS_OFFI_CARD == '1'"
class="d-tag tag-green tag-position"
>公务卡</span
>
<span
v-if="userSelectedInfo.CRDCD_FLAG == '1'"
class="d-tag tag-gold tag-position"
>信用卡</span
>
</div>
</div>
<div class="user-line1">
<div>{{ getAge }}</div>
<div style="margin-left: 25px">{{ userInfo.SEX }}</div>
<div style="margin-left: 25px">{{ userInfo.MARRIAGE }}</div>
<div style="margin-left: 25px">
<span>身份证号: {{ getCertId }}</span>
</div>
</div>
<div class="user-line1">
<div>
<span>手机号码: {{ getPhoneNum }}</span>
</div>
</div>
<div class="user-line2">
<div>
<span>成为我行客户时间: {{ getTime }}</span>
</div>
</div>
</div>
<div class="tableCls">
<van-button class="submitstyle2" round type="info" @click="onClick">
知道了
</van-button>
<van-button class="submitstyle" round type="info" @click="getRight">
获取用户授权
</van-button>
</div>
<van-dialog
:show-cancel-button="false"
:show-confirm-button="false"
v-model="dialogShow"
>
<div class="dialog-box" style="position: relative">
<div class="dialog-title">发送验证码</div>
<div class="tips-style">验证码将发送至客户手机:{{ getPhoneNum }}</div>
<div class="message-box">
<van-field
v-model="vertifyCode"
center
type="digit"
clearable
label=""
placeholder="请输入验证码"
>
<template #button>
<div
class="send-font-style"
v-if="showSendBut"
@click="sendMessage"
>
获取验证码
</div>
<div class="send-font-style" v-if="!showSendBut" disabled>
<CountDown
:time="time"
@finish="finish"
format="ss秒后重新获取"
/>
</div>
</template>
</van-field>
<div class="content-line" />
</div>
<div class="dialog-but-box">
<van-button
class="submitstyle3"
size="small"
round
block
native-type="button"
@click="dialogShow = false"
>
取消
</van-button>
<van-button
@click="onConfirm"
color="#ff574c"
native-type="button"
class="submitstyle3"
style="color: #fff"
round
size="small"
type="default"
>确认</van-button
>
</div>
</div>
</van-dialog>
<base-popup v-model="flagPopup4" title="授权提示">
<div class="popup-content4">
<div @click="face_recognition" class="face-recognition">
<div></div>
<div>客户人脸识别</div>
</div>
<div @click="sms_verification" class="sms-verification">
<div></div>
<div>客户短信验证</div>
</div>
</div>
</base-popup>
</div>
</div>
</template>
<script lang="ts">
import { Component, Vue } from "vue-property-decorator";
import BasePopup from "@/components/general/BasePopup.vue";
import nettyApi from "@/constants/api/ms-netty/netty.api.ts";
import systemApi from "@/constants/api/ms-system/system.api.ts";
import IF from "@/public/factory/InterFaceFactory";
import { NativeUI } from "@/public/ts/NativeUI";
import { Popup } from "vant";
import { CountDown } from "vant";
/**
* @Description:客户验证
* @author wanghang
* @date 2021-2-09 11:32:27
*/
@Component({
name: "PersonSimplifyView",
components: { BasePopup, CountDown, Popup },
})
export default class PersonSimplifyView extends Vue {
IdentTp = ""; //证件类型
IdentTp_list = [
//证件类型
{ value: "20", text: "身份证" },
{ value: "26", text: "其它 " },
];
IdentNo = ""; //证件号码
CstNm = this.$route.query.CUSTOMERNAME; //客户名称
vtype = "";
placeholder = "请输入";
ret_code = "";
shouFlag = "";
show = false;
userInfo = this.$store.getters.getCusInfo;
dialogShow = false;
vertifyCode = "";
dialogTitle = "输入验证码";
dialogMessage = "请输入";
customerId = this.$route.query.customerId;
time = 1000 * 60; //一分钟失效
showSendBut = true;
arrowStatus = false; //箭头方向,下为false
userSelectedInfo = {}; //个人客户信息查询
typeInfo = this.$route.params.typeInfo;
phoneNum = "";
title = "客户信息";
flagPopup4 = false;
activated() {
this.dialogShow = false;
this.flagPopup4 = false;
}
onClick() {
this.$router.go(-1);
}
//验证验证码是否正确
onConfirm() {
if (this.vertifyCode != "") {
this.checkCode();
} else {
NativeUI.toast("验证码不能空");
}
}
finish() {
this.showSendBut = !this.showSendBut; //发送验证码按钮返回原状
}
sendMessage() {
this.sendPersonalCustInfo();
}
sendPersonalCustInfo() {
const param = {
funCode: "S2021122316564680",
mobileNo: this.phoneNum,
params: {
NAME: this.userInfo.CUSTOMERNAME,
},
tc: nettyApi.TRADE_CODE.sendMessage,
};
NativeUI.showWaiting("正在发送...");
return IF.transferDataInter(nettyApi.commonRq, param).then((res: any) => {
NativeUI.closeWaiting();
if (res.rc == "1") {
NativeUI.toast("发送成功!");
this.showSendBut = !this.showSendBut;
} else {
NativeUI.closeWaiting();
NativeUI.toast("验证码发送失败");
}
});
}
//验证发送的短信验证码
checkCode() {
const param = {
tc: "MCEP",
checkNum: this.vertifyCode,
mobileNo: this.phoneNum,
mcepAuthInfo: {
channel: "1",
authSystem: "002",
authType: "1",
authorName: this.userInfo.CUSTOMERNAME,
authCustno: this.userInfo.CUSTOMERID,
passiveAuthorName: sessionStorage.getItem("userName"),
passiveAuthorNo: sessionStorage.getItem("workcode"),
authTime: "1",
authEvent: "个人用户验证",
},
};
NativeUI.showWaiting("正在查询...");
return IF.transferDataInter(systemApi.checkVerifactionCode, param).then(
(res: any) => {
NativeUI.closeWaiting();
if (res.data.rc == 1) {
this.$store.commit("setEmpty");
this.$store.commit("setCusInfo", this.userInfo);
this.$router.push({
path: "/PersonalDetails",
// params: {
// userInfo: this.userInfo,
// },
});
} else {
// NativeUI.toast(res.data.message);
NativeUI.toast("验证码输入错误");
}
}
);
}
//处理时间格式
formatDate(date: any) {
let month = (date.getMonth() + 1).toString();
if (month.length == 1) {
month = "0" + month;
}
let day = date.getDate().toString();
// if (day.length == 1) {
// day = "0" + day;
// }
return date.getFullYear() + month + day;
}
getRight() {
this.flagPopup4 = true;
}
face_recognition() {
console.log("人脸识别");
}
sms_verification() {
this.flagPopup4 = false;
this.dialogShow = true;
}
// 个人客户信息查询
selectPeronalInfo() {
const param = {
CUST_NO: this.userInfo.CUSTOMERID, //'1001785074',
CUST_NAME: this.userInfo.CUSTOMERNAME, //'杨章'
tc: nettyApi.TRADE_CODE.selectPeronInfo,
};
NativeUI.showWaiting("正在查询...");
return IF.transferDataInter(nettyApi.commonRq, param).then((res: any) => {
NativeUI.closeWaiting();
if (res.rc == "1") {
this.userSelectedInfo = res;
} else {
NativeUI.closeWaiting();
NativeUI.toast(res.msg);
}
});
}
// 查询手机号码
selectPersonInfo() {
let param = {
CUSTOMERID: this.userInfo.CUSTOMERID,
tc: nettyApi.TRADE_CODE.selectPersonInfoDetail,
};
NativeUI.showWaiting("正在查询...");
return IF.transferDataInter(nettyApi.commonRq, param).then((res: any) => {
NativeUI.closeWaiting();
if (res.rc == "1") {
this.phoneNum = res.MOBILETELEPHONE;
NativeUI.closeWaiting();
} else {
NativeUI.closeWaiting();
NativeUI.toast(res.msg);
}
});
}
mounted() {
this.selectPeronalInfo();
this.selectPersonInfo();
}
get getAge() {
var temp = this.userInfo.CERTID;
temp = temp.slice(6, 14);
var now = this.formatDate(new Date());
let res = now.slice(0, 4) - temp.slice(0, 4);
if (
now.slice(4, 6) == temp.slice(4, 6) &&
now.slice(6, 8) < temp.slice(6, 8)
) {
res -= 1;
}
return res;
}
get getCertId() {
//返回加密的身份证号
var res = "";
for (let i = 0; i < this.userInfo.CERTID.length; i++) {
if (i >= 4 && i <= 13) {
res += "*";
} else {
res += this.userInfo.CERTID[i];
}
}
return res;
}
//返回加星号的手机号
get getPhoneNum() {
var res = "";
let num = this.phoneNum;
for (let i = 0; i < num.length; i++) {
if (i >= 3 && i <= 6) {
res += "*";
} else {
res += num[i];
}
}
return res;
}
//返回客户时间
get getTime() {
var res = "";
var strs = this.userInfo.INPUTDATE.split("/");
res += strs[0] + "";
res += strs[1] + "";
res += strs[2] + "";
return res;
}
}
</script>
<style scoped>
.d-button {
margin: 40px auto;
}
.tableCls {
margin: 0 20%;
display: flex;
justify-content: space-around;
}
.submitstyle {
margin-top: 50px;
z-index: 1000;
width: 40%;
height: 46px;
color: #fff;
background-color: #ff574c;
border-color: #ff574c;
font-size: 16px;
text-align: center;
font-weight: 400;
}
.submitstyle2 {
margin-top: 50px;
z-index: 1000;
width: 40%;
height: 46px;
color: #999;
background-color: #fff;
border-color: #999;
font-size: 16px;
text-align: center;
font-weight: 400;
}
.userInfo-box {
width: auto;
height: auto;
margin: 0 15px;
border-radius: 10px;
box-shadow: 0 0 15px rgba(170, 170, 170, 0.349);
}
.tips-text {
font-size: 14px;
color: #f59701;
margin: 15px;
}
.user-name {
padding-top: 20px;
margin-left: 25px;
line-height: 48px;
display: flex;
align-items: center;
}
.text-1 {
margin-left: 5px;
font-size: 18px;
font-weight: bold;
}
.text-2 {
margin-left: 5px;
color: #169bd5;
background-color: #ddf3f7;
font-size: 12px;
}
.user-line1 {
display: flex;
line-height: 36px;
margin-left: 65px;
font-size: 14px;
}
.user-line2 {
display: flex;
line-height: 36px;
padding-bottom: 20px;
margin-left: 65px;
font-size: 14px;
}
.dialog-but-box {
width: 100%;
margin-top: 10px;
height: 40px;
display: flex;
justify-content: space-around;
align-items: center;
}
::v-deep .van-button--small {
width: 83px;
}
.badge-box {
/* width: 90%; */
line-height: 18px;
margin-left: 55px;
margin-right: 20px;
height: auto;
font-size: 12px;
display: flex;
align-items: center;
flex-wrap: nowrap;
}
.tag-position {
margin-left: 5px;
margin-top: 5px;
}
.up-down-box {
width: 10%;
}
.activeClass {
height: auto;
}
.dialog-box {
margin: 0 auto;
background: #fff;
display: flex;
flex-direction: column;
align-items: center;
width: 300px;
height: 200px;
}
.dialog-content {
font-size: 16px;
color: #333;
margin: 30px 0;
}
.dialog-content2 {
font-size: 16px;
color: #333;
margin-bottom: 20px;
}
.dialog-but {
background-color: #ff574c;
border-color: #ff574c;
width: 205px;
height: 36px;
font-size: 14px;
}
.submitstyle3 {
width: 40%;
}
.dialog-title {
margin-top: 10%;
font-size: 16px;
font-weight: bold;
color: #333;
}
.send-font-style {
color: #ff574c;
flex: 1;
}
.message-box {
margin-top: 5px;
margin-left: 20px;
}
::v-deep .van-field__button {
width: 120px;
}
.content-line {
height: 1px;
background-color: rgb(230, 225, 225);
margin-left: 10px;
width: 80%;
}
.tips-style {
font-size: 14px;
line-height: 24px;
margin-left: 50px;
margin-top: 10px;
display: flex;
width: 100%;
justify-content: flex-start;
}
::v-deep .van-count-down {
color: #ff574c;
}
.content-box {
margin: 30px 10%;
margin-top: 80px;
}
.popup-content4 {
width: 55%;
margin: 0 auto;
display: flex;
justify-content: space-around;
align-items: center;
}
.popup-content4 div {
width: 45%;
}
.face-recognition > div:nth-child(1),
.sms-verification > div:nth-child(1) {
width: 100%;
padding-top: 100%;
padding-bottom: 20%;
border: 1px solid rgba(215, 215, 215, 1);
border-radius: 10px;
}
.face-recognition > div:nth-child(2),
.sms-verification > div:nth-child(2) {
width: 100%;
text-align: center;
color: #333333;
font-family: "Arial Normal", "Arial";
margin-top: 5%;
}
</style>
<template>
<div class="d-page d-flex flex-column">
<title-bar :title="title">
<van-icon slot="left" name="cross" size="24" />
</title-bar>
<div class="deal-with-top">
<div class="deal-with-top-left">
<div>
<svg
v-if="SEX ? SEX == '男' : true"
class="icon iconsex"
aria-hidden="true"
>
<use xlink:href="#icon-nanxing-gerentouxiangxpx"></use>
</svg>
<svg
v-if="SEX ? SEX == '女' : false"
class="icon iconsex"
aria-hidden="true"
>
<use xlink:href="#icon-nvxing-gerentouxiangxpx"></use>
</svg>
</div>
<div>{{ CUSTOMERNAME }}</div>
<div>任务编号:{{ SERIALNO }}</div>
</div>
</div>
<div class="deal-with-bottom">
<tab-nav :tabList="tabList" @tabClick="tabClick" />
</div>
<div v-if="active == 0" class="h-scroller flex-1-dhc activedata">
<anchor-nav ref="anchorNav" :navList="navList">
<template>
<div slot="evaluation">
<!-- 总体评价 -->
<div class="v-list d-page d-scroll-container">
<van-form @submit="onSubmit">
<d-select
label="检查结论"
:rules="[{ required: true, message: '' }]"
placeholder="请选择检查结论"
:required="true"
border="true"
v-model="checkResult"
:sfield="sfieldName"
size="small"
></d-select>
<mobile-input
class="remarks"
label="说明"
type="textarea"
:maxlength="500"
:rows="3"
label-width="10px"
input-align="left"
name="introduction"
v-model="introduction"
placeholder="请输入"
size="small"
/>
<div style="display: flex; justify-content: center">
<van-button
color="#ff574c"
style="width: 100px"
round
type="info"
native-type="submit"
>保存
</van-button
>
</div>
</van-form>
</div>
</div>
<div slot="historyRecord">
<!-- 历史催收记录 -->
<table class="customer-management-information-form">
<tr>
<td>催收时间</td>
<td>催收对象</td>
<td>催收方式</td>
<td>催收结果</td>
<td>联系电话</td>
<td>催收人</td>
<td>客户解释</td>
<td style="width: 15%">备注说明</td>
<td>催收时点的欠款金额</td>
</tr>
<tr v-if="historyContactList.length == 0">
<td style="text-align: center" colspan="9">暂无数据!</td>
</tr>
<tr
v-if="historyContactList.length != 0"
v-for="(item, index) in historyContactList"
:key="index"
>
<td>{{ item.PROCESSDATE }}</td>
<td>{{ item.CONTACTORTYPE }}</td>
<td>{{ item.CONTACTMETHOD }}</td>
<td>{{ item.CONTACTRESULT }}</td>
<td>{{ item.CONTACTTELNO }}</td>
<td>{{ item.PROCESSUSERID }}</td>
<td>{{ item.EXPLANATIONCODE }}</td>
<td>{{ item.REMAKE }}</td>
<td>{{ item.OVERSUM }}</td>
</tr>
</table>
</div>
</template>
</anchor-nav>
</div>
<div
v-if="active == 1 && activeType == '0'"
class="h-scroller flex-1-dhc activedata"
>
<anchor-nav ref="anchorNav" :navList="navList1">
<template>
<div slot="basicInfo">
<!-- 基本信息 -->
<div>
<table-double-view
:keyValue="serialInfoTitles"
:data="contractInfo"
></table-double-view>
</div>
</div>
<div slot="guaranteeInfo">
<!-- 担保信息 -->
<table class="customer-management-information-form">
<tr>
<td>担保合同号</td>
<td>担保类型</td>
<td>担保方式</td>
<td>担保人名称</td>
<td>担保金额</td>
<td>担保合同状态</td>
<td>抵质押物</td>
</tr>
<tr v-if="guarantyInfo.length == 0">
<td style="text-align: center" colspan="7">暂无数据!</td>
</tr>
<tr
v-if="guarantyInfo.length != 0"
v-for="(item, index) in guarantyInfo"
:key="index"
>
<td>{{ item.SERIALNO }}</td>
<td>{{ item.CONTRACTTYPE }}</td>
<td>{{ item.GUARANTYTYPE }}</td>
<td>{{ item.GUARANTORNAME }}</td>
<td>{{ item.GUARANTYVALUE }}</td>
<td>{{ item.CONTRACTSTATUS }}</td>
<td style="color: #00a3ff" @click="detail(item)">详情</td>
</tr>
</table>
</div>
</template>
</anchor-nav>
</div>
<div
v-if="active == 1 && activeType == '1'"
class="h-scroller flex-1-dhc"
>
<div
style="
width: 80%;
border: 1px solid #e1e2e3;
border-radius: 15px;
margin: 0 auto 15px auto;
"
v-for="(item, index) in prtInfo"
:key="index"
>
<table-double-view
:keyValue="prtInfoTitles"
:data="item"
></table-double-view>
</div>
</div>
<div
v-if="active == 2 && activeType == '0'"
class="h-scroller flex-1-dhc activedata"
>
<sub-title>借据基本信息</sub-title>
<table-double-view
:keyValue="duebillTitles"
:data="duebillInfo"
></table-double-view>
</div>
<div
v-if="active == 2 && activeType == '1'"
class="h-scroller flex-1-dhc"
>
<div
style="
width: 80%;
border: 1px solid #e1e2e3;
border-radius: 15px;
margin: 0 auto 15px auto;
"
v-for="(item, index) in entInfo"
:key="index"
>
<table-double-view
:keyValue="entInfoTitles"
:data="item"
></table-double-view>
</div>
</div>
<div v-show="active == 3" class="h-scroller flex-1-dhc activedata">
<div style="width: 100%; margin-top: 50px; text-align: center">
暂无数据!
</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 nettyApi from "@/constants/api/ms-netty/netty.api.ts";
import IF from "@/public/factory/InterFaceFactory";
import { NativeUI } from "@/public/ts/NativeUI";
import { DatetimePicker } from "vant";
import BasicInformation from "@/components/customer-information/business-information/overview/BasicInformation.vue";
import TableDoubleView from "@/public/TableDoubleView.vue";
import DCalendar from "@/components/general/form/DCalendar.vue";
import { TabData } from "@/model/entity/TabData";
Vue.use(DatetimePicker);
Vue.use(Tab);
Vue.use(Tabs);
/**
* @Description 催收详情
* @Author JiangTao
* @Date 2021-11-10 下午 03:51
*/
@Component({
name: "PostLoanDetailsView",
components: { DCalendar, TitleBar, BasicInformation, TableDoubleView }
})
export default class PostLoanDetailsView extends Vue {
title = "贷后检查详情"; // 页面标题
indexListCollection = ["总体评价", "历史催收记录"];
indexListIOU = ["基本信息", "担保信息"];
titles = [
{ name: "检查详情", bsno: "1" },
{ name: "合同详情", bsno: "2" },
{ name: "借据详情", bsno: "3" },
{ name: "影像上传", bsno: "4" }
];
tabList: TabData[] = [
{ tabText: "催收记录", tabId: "1" },
{ tabText: "借据信息", tabId: "2" },
{ tabText: "还款计划", tabId: "3" },
{ tabText: "还款记录", tabId: "4" },
{ tabText: "影像资料", tabId: "5" },
{ tabText: "催收登记", tabId: "6" }
];
activeType: any = "";
active = 0;
userInfo: any = ""; //客户数据
SERIALNO = this.$store.getters.getCusInfo.SERIALNO || ""; //任务编号
BUSINESSTYPE = this.$store.getters.getCusInfo.BUSINESSTYPE || "";
CUSTOMERNAME = this.$store.getters.getCusInfo.CUSTOMERNAME || "";
SEX = this.$store.getters.getCusInfo.SEX || "";
//检查详情
checkResult = ""; //检查结论
historyContactList = [];
introduction = ""; //备注
sfieldName = this.$store.getters.getCusInfo.INSPECTTYPE == "合作项目检查" ? "CheckResult" : "INSPECTATION";
//合同详情
//基本信息
serialInfoTitles = {
CONTRACTSERIALNO: "合同号",
CONTRACTDATE: "起始日期",
MATURITYDATE: "到期日期",
PRODUCTID: "方案产品",
PRODUCTIDNAME: "方案产品名",
OCCURTYPE: "发生类型",
BUSINESSTERM: "合同期限",
BUSINESSCURRENCY: "币种",
BUSINESSSUM: "合同金额(元)",
SUBVOUCHTYPE: "担保方式",
ACCOUNTINGORGID: "入账机构",
ACCOUNTINGORGNAME: "入账机构名称",
PURPOSETYPE: "贷款用途",
CONTRACTBUSINESSRATE: "执行利率",
CONTRACTTERMID: "还款方式"
};
contractInfo = {}; //基本信息
guarantyInfo = []; //担保信息
//借据详情
duebillTitles = {
DUEBILLSERIALNO: "借据编号",
BUSINESSTYPE: "产品名称",
BUSINESSSUM: "借据金额(元)",
BUSINESSCURRENCY: "币种",
BUSINESSTERM: "贷款期限(月)",
PUTOUTDATE: "借据发放日期",
MATURITYDATE: "借据到期日期",
ACCOUNTINGORGID: "账务机构",
DUEBILLBUSINESSRATE: "执行利率",
DUEBILLTERMID: "还款方式",
BUSINESSSTATUS: "业务形态",
MONTHCLASS: "月初贷款形态",
OVERDUEDAYS: "逾期天数",
HISOVERDUEDAYS: "历史最高逾期天数",
LCATIMES: "当前逾期期数",
TATIMES: "累计逾期期数",
MAXODTIMES: "历史最高逾期期数",
BALANCE: "借据余额(元)",
OVERDUEBALANCE: "逾期本金金额(元)",
NORMALBALANCE: "正常本金金额(元)",
INTERESTBALANCE1: "表内欠息余额(元)",
INTERESTBALANCE2: "表外欠息余额(元)",
FINEBALANCE1: "罚息余额(元)",
FINEBALANCE2: "复利余额(元)"
};
duebillInfo = {};
//合同项目详情
prtInfoTitles = {
CUSTOMERID: "合作方编号",
SERIALNO: "合作项目流水号",
CUSTOMERNAME: "合作方名称",
PROJECTTYPE: "合作项目类型",
PROJECTNAME: "合作项目名称",
EFFECTDATE: "项目起始日期",
EXPIRYDATE: "项目截止日期",
ISGUARANTY: "是否提供担保",
LARGESTPERCENTAGE: "最高贷款成数"
};
prtInfo = []; //合作项目详情
entInfoTitles = {
SERIALNO: "项目编号",
PROJECTTYPE: "项目类型",
PROJECTNAME: "项目名称",
CUSTOMERID: "所属合作方",
STATUS: "合作项目状态",
INPUTUSERNAME: "录入人",
INPUTORGNAME: "录入机构",
INPUTDATE: "2010/09/21",
UPDATEUSERNAME: "更新人",
UPDATEDATE: "更新时间"
};
entInfo = []; //合作方详情
// 检查详情
navList = [
{ key: "evaluation", titleText: "总体评价" },
{ key: "historyRecord", titleText: "历史催收记录" }
];
// 合同详情
navList1 = [
{ key: "basicInfo", titleText: "基本信息" },
{ key: "guaranteeInfo", titleText: "担保信息" }
];
mounted() {
this.selectLoancheckDetail().then(() => {
console.log(this.introduction);
this.SERIALNO = this.$store.getters.getCusInfo.SERIALNO || ""; //任务编号
this.activeType = sessionStorage.getItem("activeType");
if (this.activeType == "0") {
this.tabList = [
{ tabText: "检查详情", tabId: "1" },
{ tabText: "合同详情", tabId: "2" },
{ tabText: "借据详情", tabId: "3" },
{ tabText: "影像上传", tabId: "4" }
];
} else {
this.tabList = [
{ tabText: "检查详情", tabId: "1" },
{ tabText: "合同项目详情", tabId: "2" },
{ tabText: "合同方详情", tabId: "3" },
{ tabText: "影像上传", tabId: "4" }
];
}
this.userInfo = this.$store.getters.getCusInfo;
this.selectHistoryContactInfo();
});
}
/**
* @description: 点击tab时切换
* @author LiShenghui
* @date 2022/2/14 15:12
*/
tabClick(item: TabData) {
this.active = parseInt(item.tabId) - 1;
if (this.active == 0) {
this.selectHistoryContactInfo();
} else if (this.active == 1) {
this.selectLoancheckDetail(); //贷后详情查询
} else if (this.active == 2) {
this.selectLoancheckDetail(); //贷后详情查询
}
}
onSubmit() {
this.saveLoanCheckInfo();
// .then(() => {
// setTimeout(() => {
// this.$router.go(-1);
// }, 2500);
// });
}
//保存贷后检查信息
saveLoanCheckInfo() {
let param = {
OBJECTNO: this.SERIALNO, //上传任务号
ADDFLAG: "2", //是否新增,默认为保存
INSPECTACTION: this.checkResult, //检查结论
OPINION: this.introduction, //说明
tc: nettyApi.TRADE_CODE.addLoanCheckInfo
};
NativeUI.showWaiting("正在查询...");
return IF.transferDataInter(nettyApi.commonRq, param).then((res: any) => {
NativeUI.closeWaiting();
if (res.rc == "1") {
//新增成功后重新查询一次
NativeUI.toast("保存成功!");
// this.selectLoancheckDetail();
} else {
NativeUI.toast(res.msg);
}
});
}
/**
* @Description 催收过程查询
* @Author JiangTao
* @Date 2022-01-22 下午 03:42
*/
selectHistoryContactInfo(pageNo = 1) {
let param = {
OBJECTNO: this.SERIALNO,
ROWNUMSTART: (pageNo - 1) * 10,
ROWNUMEND: pageNo * 10,
tc: nettyApi.TRADE_CODE.selectContactInfo
};
NativeUI.showWaiting("正在查询...");
return IF.transferDataInter(nettyApi.commonRq, param).then((res: any) => {
console.log(res);
NativeUI.closeWaiting();
if (res.rc == "1") {
if (pageNo == 1) {
this.historyContactList = res.COLL_TASK_PROCESS_ARRAY;
}
} else {
NativeUI.toast(res.msg);
}
});
}
//贷后详情查询
selectLoancheckDetail() {
let param = {
SERIALNO: this.SERIALNO,
tc: nettyApi.TRADE_CODE.selectGDLoanCheckDetail
};
NativeUI.showWaiting("正在查询...");
return IF.transferDataInter(nettyApi.commonRq, param).then((res: any) => {
console.log(res);
NativeUI.closeWaiting();
if (res.rc == "1") {
this.entInfo = res.PRJ_BASCI_LIST;
this.prtInfo = res.PRJ_INFO_LIST;
this.contractInfo = res.CONTRACT_INFO_LIST[0];
this.duebillInfo = res.DUEBILL_INFO_LIST[0];
this.checkResult = res.INSPECTACTION; //检查结论
this.introduction = res.OPINION; //说明
this.guarantyInfo = res.GUARANTY_CONTRACT_LIST; //担保信息
} else {
NativeUI.toast(res.msg);
}
});
}
detail(item: any) {
console.log(item);
//只有存在抵押物的时候
if (item.ASSET_INFO_LIST.length != 0) {
this.$router.push({
name: "CollateralDetail",
params: {
assetInfoList: item
}
});
} else {
NativeUI.toast("暂无抵质押物!");
}
// this.$router.push({
// path: "/CollateralDetail",
// });
}
//获取对应文件的sfileldName
getSfield() {
if (this.userInfo.INSPECTTYPE == "合作项目检查") {
return "CheckResult";
} else {
return "INSPECTATION";
}
}
}
</script>
<style scoped>
.deal-with-top {
width: 100%;
display: flex;
justify-content: space-between;
align-items: center;
padding: 1% 1.5%;
border-bottom: 1px solid #efefef;
background-color: #fffafa;
z-index: 2000;
}
.deal-with-top-left {
width: 80%;
display: flex;
justify-content: flex-start;
align-items: flex-end;
}
.deal-with-top-left > div:nth-child(2) {
margin-left: 1%;
margin-right: 2%;
padding-top: 5px;
font-size: 129%;
line-height: 30px;
}
.deal-with-top-left > div:nth-child(3) {
}
.deal-with-top-left img {
width: 2.42%;
padding-top: -1%;
}
.deal-with-top-right {
width: 9.51%;
}
.deal-with-top-right button {
width: 100%;
font-size: 115%;
padding: 2.6% 0;
background-color: white;
border: 1px solid #fd5065;
color: #fd5065;
border-radius: 3px;
}
.label div {
margin-right: 1%;
background-color: white;
border: 1px solid #999999;
border-bottom: 0;
font-size: 115%;
padding: 0.58% 1.2%;
border-top-right-radius: 7px;
border-top-left-radius: 7px;
}
.deal-with-bottom {
width: 92%;
margin: 10px auto;
position: relative;
z-index: 2000;
}
.iconsex {
width: 35px;
height: 35px;
}
::v-deep .van-tabs {
width: 100%;
}
::v-deep .van-tab {
margin: 0 10px;
border: 1px solid #e1e2e3;
border-top-right-radius: 15px;
border-top-left-radius: 15px;
border-bottom: 0;
}
::v-deep .van-tab--active {
border-color: #ff574c;
border-bottom-color: white;
}
::v-deep .van-tabs__wrap {
border-bottom: 1px solid #e1e2e3;
padding-right: 60%;
z-index: 2000;
}
::v-deep .van-tabs__line {
margin-bottom: -2px;
z-index: 2000;
}
::v-deep .information-container {
padding-left: 10px !important;
}
.activedata {
margin-left: 4%;
}
::v-deep .van-index-bar__sidebar {
top: 60% !important;
}
.imagedata {
padding: 0 15px;
width: 100%;
height: 75px;
border-bottom: 1px solid #e1e2e3;
display: flex;
justify-content: space-between;
align-items: center;
}
.imagedata > div:nth-child(1) {
width: 90%;
display: flex;
justify-content: flex-start;
align-items: center;
}
.dataName {
max-width: 50%;
max-height: 40px;
overflow-y: auto;
font-size: 16px;
color: #000000;
margin: 0 20px;
word-break: break-word;
}
.dataNum {
max-width: 30%;
max-height: 40px;
overflow-y: auto;
font-size: 14px;
color: #999999;
word-break: break-word;
}
::v-deep .d-form-field .van-field__label span {
font-size: 14px;
}
::v-deep .van-field__label {
width: 8%;
text-align: right;
}
::v-deep .van-field__body {
padding: 4px 0;
}
::v-deep .d-form-field .van-field.field-small .van-field__label,
.d-form-field .van-field.field-small .van-field__control {
padding-right: 5px;
}
::v-deep .van-cell::after {
border: 0;
}
::v-deep .van-form {
display: grid;
width: 90%;
grid-template-columns: 50% 50%;
margin: 0 auto;
}
::v-deep .remarks > div:nth-child(1) .van-field__label {
width: 12% !important;
}
.remarks {
grid-column-start: 1;
grid-column-end: 3;
grid-row-start: 3;
grid-row-end: 4;
}
::v-deep .van-field__label {
width: 25%;
text-align: right;
}
::v-deep .van-form > div:nth-child(3) {
grid-column-start: 1;
grid-column-end: 3;
grid-row-start: 4;
grid-row-end: 5;
}
::v-deep .van-index-bar__sidebar {
top: 200px !important;
right: 5px !important;
transform: unset;
}
</style>
<template>
<div>
<title-bar title="短信验证" @clickLeft="onClick">
<van-icon slot="left" name="cross" size="24" />
</title-bar>
<div style="width: 40%; padding-top: 10%; margin: 0 auto">
<van-form @submit="onSubmit">
<mobile-input label="客户名称" placeholder="李海峰" readonly />
<mobile-input label="证件类型" placeholder="身份证" readonly />
<mobile-input label="证件号码" placeholder="123123123123123123123" readonly />
<mobile-input label="联系电话" />
<mobile-input v-model="sms" center clearable label="短信验证码">
<template #button>
<van-button size="small" type="primary">获取验证码</van-button>
</template>
</mobile-input>
<div class="button">
<button type="info" round @click="onChang">确定</button>
</div>
</van-form>
</div>
</div>
</template>
<script lang="ts">
import { Component, Vue } from "vue-property-decorator";
import { Button } from "vant";
/**
* @Description:短信验证
* @author pd
* @date 2021-11-06 16:43:37
*/
Vue.use(Button);
@Component({
name: "PostNote",
})
export default class PostNote extends Vue {
username = "李四";
sms = "";
formatter() {}
onSubmit() {
console.log("111");
}
onClick() {
console.log("1111");
}
onChang() {
console.log("111");
}
}
</script>
<style lang="scss" scoped>
.content {
width: 60%;
padding-top: 10%;
margin: 0 auto;
}
.word {
//position: absolute;
top: 30%;
left: 32%;
//border-width: 1%;
position: absolute;
width: 9%;
height: 9%;
//display: flex;
font-size: 160%;
color: #999999;
line-height: 6%;
}
.input {
border-width: 0px;
position: absolute;
left: 41%;
top: 26%;
width: 34%;
height: 7%;
display: flex;
font-size: 160%;
text-align: left;
line-height: 22%;
background-color: #f2f3f5;
}
.inputA {
position: absolute;
left: 41%;
top: 26%;
width: 34%;
height: 7%;
font-family: "Arial Normal", "Arial";
font-weight: 400;
font-style: normal;
font-size: 160%;
letter-spacing: normal;
color: #000000;
//vertical-align: none;
//text-align: left;
box-sizing: border-box;
border-style: solid;
border-width: 1px;
text-transform: none;
background-color: rgba(255, 255, 255, 1);
border-color: rgba(215, 215, 215, 1);
}
.messageNo {
border-width: 0px;
position: absolute;
left: 62%;
top: 65%;
width: 13%;
height: 8%;
background: inherit;
background-color: rgba(197, 228, 245, 1);
border: none;
border-radius: 5%;
-moz-box-shadow: none;
-webkit-box-shadow: none;
box-shadow: none;
font-size: 140%;
color: #666666;
}
.text {
position: absolute;
align-self: center;
padding: 14% 2% 2% 24%;
box-sizing: border-box;
width: 100%;
}
.button button {
background-color: #fd5065;
border: 1px solid #fd5065;
color: white;
border-radius: 30px;
width: 100%;
padding: 1.5% 0;
font-size: 20px;
}
</style>
<template>
<div>
<title-bar :title="title" @clickLeft="onClick">
<van-icon slot="left" name="cross" size="24" />
</title-bar>
</div>
</template>
<script lang="ts">
import { Component, Vue } from "vue-property-decorator";
import TitleBar from "@/components/general/TitleBar.vue";
/**
* @Description 待办详情
* @Author JiangTao
* @Date 2021-10-25 下午 08:55
*/
@Component({
name: "TelMarketingDetail",
components: { TitleBar },
})
export default class TelMarketingDetail extends Vue {
title = "待办详情"; // 页面标题
onClick() {
console.log(111111);
}
activated() {
}
mounted() {
}
}
</script>
<style scoped>
</style>
<template>
<div>
<title-bar :title="title" @click-right="onClick">
<van-icon slot="left" name="cross" size="24" />
</title-bar>
<div class="text-content">
<div class="text-content-left">
<van-sidebar @change="onChange" style="width: 100%" line-height="100px" v-model="activeKey">
<van-sidebar-item v-for="(item, index) in UpcomingTaskList" :key="index" class="label" :title="item.name" />
</van-sidebar>
</div>
<div v-if="UpcomingTaskList.length!=0" class="text-content-right">
<!--个人催收-->
<div v-if="UpcomingTaskList[activeKey].menuId == MENUS.LOAN_COLLECTION_DB.code">
<collection-management></collection-management>
</div>
<!--个人贷后检查-->
<div v-if="UpcomingTaskList[activeKey].menuId == MENUS.PERSONAL_LOAN_CHECK.code">
<AfterLoan></AfterLoan>
</div>
<!--个人电话营销-->
<div v-if="UpcomingTaskList[activeKey].menuId == MENUS.TEL_MARKETING.code">
<MarketingQuery></MarketingQuery>
</div>
<!-- 风险预警 -->
<div v-if="UpcomingTaskList[activeKey].menuId == MENUS.RISK_WARNING.code">
<upcoming-risk-warning></upcoming-risk-warning>
</div>
<!-- 贷后检查 -->
<div v-if="UpcomingTaskList[activeKey].menuId == MENUS.COMPANY_LOAN_CHECK.code">
<upcoming-periodic-inspection></upcoming-periodic-inspection>
</div>
<!-- 对公上门营销 -->
<div v-if="UpcomingTaskList[activeKey].menuId == MENUS.COM_MARKETING.code">
<ComMarketingView></ComMarketingView>
</div>
<!-- 个人上门营销 -->
<div v-if="UpcomingTaskList[activeKey].menuId == MENUS.FTF_MARKETING.code">
<PerMarketing></PerMarketing>
</div>
<!-- 中小营销 -->
<div v-if="UpcomingTaskList[activeKey].menuId == MENUS.ZX_MARKETING.code">
<SMEMarketingPool></SMEMarketingPool>
</div>
<!-- 面签 -->
<div v-if="UpcomingTaskList[activeKey].menuId == MENUS.FACE_SIGN.code">
<face-sign-list-view></face-sign-list-view>
</div>
<!-- 面签复核 -->
<div v-if="UpcomingTaskList[activeKey].menuId == MENUS.FACE_SIGN_REVIEW.code">
<face-sign-review-list-view></face-sign-review-list-view>
</div>
</div>
</div>
</div>
</template>
<script lang="ts">
import { Component, Vue } from "vue-property-decorator";
import TitleBar from "@/components/general/TitleBar.vue";
import { Sidebar, SidebarItem } from "vant";
import CollectionManagement
from "@/components/workbench/personal-common-functions/agency-task/CollectionManagement.vue";
import AfterLoan from "@/components/workbench/personal-common-functions/agency-task/AfterLoan.vue";
import MarketingQuery
from "@/components/workbench/personal-common-functions/agency-task/telemarketing/MarketingQuery.vue";
import UpcomingRiskWarning
from "@/components/workbench/upcoming-tasks-content/company-business/upcoming/UpcomingRiskWarning.vue";
import UpcomingMarketingTask
from "@/components/workbench/upcoming-tasks-content/company-business/upcoming/UpcomingMarketingTask.vue";
import UpcomingPeriodicInspection
from "@/components/workbench/upcoming-tasks-content/company-business/upcoming/UpcomingPeriodicInspection.vue";
import ComMarketingView
from "@/components/workbench/upcoming-tasks-content/company-business/upcoming/ComMarketingView.vue";
import PerMarketing from "@/components/workbench/personal-common-functions/agency-task/PerMarketing.vue";
import SMEMarketingPool from "@/components/workbench/SME-common-functions/SMEMarketingPool.vue";
import FaceSignListView
from "@/components/workbench/upcoming-tasks-content/personal-business/personal-upcoming/FaceSignListView.vue";
import FaceSignReviewListView
from "@/components/workbench/upcoming-tasks-content/personal-business/personal-upcoming/FaceSignReviewListView.vue";
import { MENU } from "@/constants/enum/menu.enum";
Vue.use(Sidebar);
Vue.use(SidebarItem);
/**
* @Description 待办任务
* @Author JiangTao
* @Date 2021-10-25 下午 08:55
*/
@Component({
name: "UpcomingTask",
components: {
FaceSignReviewListView,
TitleBar,
CollectionManagement,
AfterLoan,
MarketingQuery,
UpcomingRiskWarning,
UpcomingMarketingTask,
UpcomingPeriodicInspection,
ComMarketingView,
PerMarketing,
SMEMarketingPool,
FaceSignListView
}
})
export default class UpcomingTask extends Vue {
activeKey: any = 0;
title = "待办任务"; // 页面标题
UpcomingTaskList: any[] = [];
MENUS = MENU;
onClick() {
}
mounted() {
this.UpcomingTaskList = (this.$route.query.menuList as any);
this.activeKey = (this.$route.query.activeKey as any);
}
activated() {
this.$router.beforeEach((to, from, next) => {
if (from.path == "/main/workbench") {
this.UpcomingTaskList = (to.query.menuList as any);
this.activeKey = (to.query.activeKey as any);
}
next();
});
}
onChange() {
}
}
</script>
<style scoped>
.text-content {
width: 100%;
height: calc(100vh - 60px);
display: flex;
justify-content: flex-start;
}
.text-content-left {
width: 25%;
background-color: rgba(245, 245, 245, 1);
border: 1px solid rgba(222, 222, 222, 1);
}
.text-content-right {
width: 75%;
height: 100%;
}
.text-content-right > div {
height: 100%;
}
.label {
border-bottom: 1px solid #e0e1e2;
}
van-sidebar-item {
}
::v-deep .van-sidebar-item--select::before {
background-color: #FF574C;
height: 100%;
}
::v-deep .van-sidebar-item__text {
font-size: 18px;
}
::v-deep .text-content-left {
z-index: 2100;
height: calc(100vh - 60px);
overflow-y: auto;
}
::v-deep .van-sidebar-item__text:before {
content: "😊";
/*content: url("../../../../assets/images/logo.png");*/
width: 30px;
height: 30px;
border-radius: 5px;
}
::v-deep .van-sidebar-item--select > div:before {
background-color: #00a3ff;
}
</style>
<template>
<div>
<title-bar title="新增面签" @clickLeft="onClick">
<van-icon slot="left" name="cross" size="24" />
</title-bar>
<van-form class="form-sty" @submit="confirmAddFaceSignTask">
<table>
<tr style="width: 500px">
<td style="display: flex">
<div class="image-box" style="margin: 10px 20px" @click="takePersonPhoto('身份证正面')">
<img class="photoa" :src="imageUrlZm" />
<div style="width: 100%; text-align: center; margin-top: 20px">
拍摄人像面
</div>
</div>
<div class="image-box" style="margin: 10px 20px" @click="takePersonPhoto('身份证反面')">
<img class="photob" :src="imageUrlFm" />
<div style="width: 100%; text-align: center; margin-top: 20px">
拍摄国徽面
</div>
</div>
</td>
</tr>
<tr>
<td>
<mobile-input
type="text"
label="证件类型"
placeholder="身份证"
readonly
size="small"
/>
</td>
</tr>
<tr>
<td>
<mobile-input
:required="true"
:rules="[{ required: true, message: '证件号码不能为空' }]"
v-model="IdentNo"
label="证件号码"
@blur.native.capture="identNoChanged"
type="digit"
size="small"
/>
</td>
</tr>
<tr>
<td>
<mobile-input
:required="true"
v-model="CstNm"
label="客户名称"
:rules="[{ required: true, message: '客户名称不能为空' }]"
type="text"
size="small"
/>
</td>
</tr>
<tr>
<td>
<mobile-input
:required="true"
v-model="phone"
label="手机号码"
:rules="[{ required: true, message: '手机号码不能为空' }]"
type="tel"
size="small"
/>
</td>
</tr>
<!-- <tr>-->
<!-- <td style="display: flex">-->
<!-- <mobile-input-->
<!-- :required="true"-->
<!-- v-model="phone"-->
<!-- label="短信验证码"-->
<!-- :rules="[{ required: true, message: '短信验证码不能为空' }]"-->
<!-- type="text"-->
<!-- size="small"-->
<!-- />-->
<!-- <div class="code-sty" @click="getSMSVerificationCode()">获取验证码</div>-->
<!-- </td>-->
<!-- </tr>-->
<tr>
<td>
<!-- <button type="info" round @click="onChang(3)">查询</button> -->
<button class="but-sty" type="info" native-type="submit" round>查询</button>
</td>
</tr>
</table>
</van-form>
</div>
</template>
<script lang="ts">
import { Component, Vue } from "vue-property-decorator";
import BasePopup from "@/components/general/BasePopup.vue";
import nettyApi from "@/constants/api/ms-netty/netty.api";
import {NativeUI} from "@/public/ts/NativeUI";
import IF from "@/public/factory/InterFaceFactory";
import nativeService from "@/services/native.service";
import {MediaFile} from "@/model/entity/MediaFile";
import Public from "@/public/ts/Public";
/**
* @Description:客户查询
* @author pd
* @date 2021-11-06 16:43:27
*/
@Component({
name: "AddContractFaceSign",
components: { BasePopup },
})
export default class AddContractFaceSign extends Vue {
i = 0;
IdentNo = ''; //证件号码
CstNm = ''; //客户名称
phone = '';
code = '';
flagPopup = false;
faceSignInfo = {
OBJECTNO: '',
SIGNYPE: '',
CUSTOMERNAME: '',
CUSTOMERID: '',
CERTID: '',
TELPHONE: '',
GJJTYPE: '',
SEX: '',
BUSINESSSUM: '',
COMPANYNAME: '',
COMPANYADD: '',
BUSINESSDATE: ''
};
imageUrlZm = require("@/assets/images/prefix-idcard.png");
imageUrlFm = require("@/assets/images/suffix-idcard.png");
idCardZmFile: any;
idCardFmFile: any;
isTakePhoto = 0;
created() {
console.log("---------------",Public.getLocation());
}
onClick() {}
getSMSVerificationCode(){}
//查询面签任务
identNoChanged(){
let param = {
tc: nettyApi.TRADE_CODE.selectAddTaskInfo,
CUSCERTID: this.IdentNo
},
_this = this;
NativeUI.showWaiting("正在查询...");
return IF.transferDataInter(nettyApi.commonRq, param).then((res: any) => {
NativeUI.closeWaiting();
if (res.rc == '1'){
NativeUI.confirm("温馨提示","是否对客户"+res.COMPANYNAME+"做随意分面签新增").then(() => {
_this.faceSignInfo = res;
_this.IdentNo = res.CERTID;
_this.phone = res.TELPHONE;
_this.CstNm = res.CUSTOMERNAME;
})
}else{
NativeUI.toast(res.msg);
}
});
}
//确认新增面签任务
confirmAddFaceSignTask(){
if(this.isTakePhoto == 2){
let data = this.faceSignInfo,
param = {
tc: nettyApi.TRADE_CODE.confirmAddTask,
USERCODE: sessionStorage.getItem("gdUserCode"),
ORGCODE: sessionStorage.getItem("gdORGCode"),
OBJECTNO: data.OBJECTNO,
SIGNYPE: data.SIGNYPE,
CUSTOMERNAME: data.CUSTOMERNAME,
CUSTOMERID: data.CUSTOMERID,
CERTID: data.CERTID,
TELPHONE: data.TELPHONE,
GJJTYPE: data.GJJTYPE,
SEX: data.SEX,
BUSINESSSUM: data.BUSINESSSUM,
COMPANYNAME: data.COMPANYNAME,
COMPANYADD: data.COMPANYADD,
BUSINESSDATE: data.BUSINESSDATE
},
imgInfo = [
{
file: this.idCardZmFile,
fileName: '身份证正面',
mulId: 'idFile'
},
{
file: this.idCardFmFile,
fileName: '身份证反面',
mulId: 'idOthFile'
}
];
NativeUI.showWaiting("正在查询...");
return IF.transferDataInter(nettyApi.commonRq, param).then((res: any) => {
NativeUI.closeWaiting();
if(res.rc == "1"){
this.$store.commit("setFaceSignInfo",data);
this.$store.commit("setImageFileObj",imgInfo);
this.$router.push({
path: "/FaceSignView",
});
}else {
NativeUI.toast(res.msg);
}
});
}else{
NativeUI.toast("请先采集身份证照片")
}
}
//采集证件照片
takePersonPhoto(fileName: string){
const data = new MediaFile();
data.objId = "1111";
data.userId = "000000";
data.address = "定位信息";
data.userName = "拍摄人";
const _this = this;
this.$native.capturePhoto(data).then((res: any) => {
if(res.length > 0 && res[0].filePath){
let file = Public.imgUrlToFile(res[0].filePath, fileName);
if(fileName == '身份证正面'){
_this.imageUrlZm = res[0].filePath;
_this.idCardZmFile = file;
this.isTakePhoto += 1;
} else{
this.isTakePhoto += 1;
_this.imageUrlFm = res[0].filePath;
_this.idCardFmFile = file;
}
}else {
NativeUI.toast("拍照失败,请重试。")
}
})
}
custNameChange(){
console.log("客户信息")
}
}
</script>
<style lang="scss" scoped>
.photoa {
width: 100%;
}
.photob {
width: 100%;
}
button {
width: 47%;
background-color: rgba(255, 87, 108, 1);
}
.popup-content2 div {
text-align: center;
}
.popup-content2 > div:nth-child(2) {
font-size: 20px;
color: #333333;
font-family: "Arial Normal", "Arial";
}
.popup-content3 {
width: 90%;
margin: 0 auto;
}
.popup-content3 > div:nth-child(1) {
color: #f59701;
}
.card {
width: 100%;
padding: 2%;
margin-top: 2%;
border-radius: 10px;
border: 0;
box-shadow: 0px 0px 5px rgb(170 170 170 / 35%);
}
.card-heater {
width: 100%;
display: flex;
justify-content: flex-start;
align-items: center;
}
.card-heater > div:nth-child(1) {
width: 3.5%;
border-radius: 20px;
padding: 0.3% 0.6%;
background-color: #f59a23;
}
.card-heater > div:nth-child(1) img {
width: 90%;
}
.card-heater > div:nth-child(2) {
font-weight: bold;
margin-left: 1%;
font-size: 18px;
color: #333333;
font-family: "Arial Normal", "Arial";
}
.label {
width: 42%;
display: flex;
justify-content: center;
align-items: center;
}
.label div {
margin: 0 1%;
background-color: #d9f4ff;
color: #169bd5;
border-radius: 5px;
padding: 0.2% 2% 0.1% 2%;
font-size: 12px;
}
.card-body div {
font-family: "Arial Normal", "Arial";
color: #333333;
font-size: 14px;
margin: 1.5% 0;
}
.popup-content4 {
width: 55%;
margin: 0 auto;
display: flex;
justify-content: space-around;
align-items: center;
}
.popup-content4 div {
width: 45%;
}
table {
width: 35%;
margin: 0 auto;
}
button {
width: 100%;
margin: 0 auto;
border-radius: 30px;
border: 1px solid #fd5065;
color: white;
font-size: 20px;
padding: 1.5% 0;
}
.tab-box {
margin: 10px 0;
}
::v-deep .van-tabs--line .van-tabs__wrap {
width: 20%;
}
::v-deep .van-tab--active {
font-weight: bold;
}
::v-deep .van-tab {
font-size: 16px;
}
.image-box {
margin: 10px 20px;
width: 160px;
height: 160px;
}
::v-deep .d-form-field{
padding: 0 0 1.5rem 0;
}
.code-sty{
width: 25%;
line-height: 33px;
height: 33px;
font-size: 16px;
border-radius: 5px;
background-color: #C5E4F5;
color: #8c8686;
text-align: center;
margin-left: 5px;
}
.form-sty{
height: calc(100vh - 60px);
}
.but-sty{
outline: none;
}
</style>
<template>
<div>
<p>请申请人确认交易信息</p>
<sub-title style="margin-left: 50px;">基本信息</sub-title>
<div>
<table-double-view :incomingKeyCls="incomingKeyCls" :incomingValCls="incomingKeyCls" :keyValue="basicInfo" :data="basicInfoData"></table-double-view>
</div>
<sub-title style="margin-left: 50px;">业务内容</sub-title>
<div>
<table-double-view :incomingKeyCls="incomingKeyCls" :incomingValCls="incomingKeyCls" :keyValue="businessKey" :data="businessData"></table-double-view>
</div>
<div class="btn-area">
<button @click="stopCheck">返回</button>
<button @click="submit">确认</button>
</div>
</div>
</template>
<script lang="ts">
import { Component, Vue, Prop} from "vue-property-decorator";
import {Cell, CellGroup} from "vant";
import nettyApi from "@/constants/api/ms-netty/netty.api";
import {NativeUI} from "@/public/ts/NativeUI";
import IF from "@/public/factory/InterFaceFactory";
@Component({
name: 'ConfirmInfo',
components: { Cell, CellGroup }
})
export default class ConfirmInfo extends Vue{
@Prop(Number) tabActive: Number | any;
@Prop(Object) custInfo: Object | any;
keyClass = false;
incomingKeyCls = {
'width': '50%',
'font-size': '16px'
};
incomingGridCls = {
'width': '80%',
'grid-template-columns': 'repeat(1, 0.7fr) repeat(1, 1fr)'
};
basicInfo = {
CUSTOMERNAME: '姓名',
SEX: '性别',
nationality: '国籍',
idType: '证件类型',
CERTID: '证件号码',
// validityPeriod: '证件有效期',
// profession: '职业',
TELPHONE: '手机号',
COMPANYADD: '公司地址'
};
basicInfoData = {
CUSTOMERNAME: '',
SEX: '',
nationality: '中国',
idType: '身份证',
CERTID: '证件号码',
// validityPeriod: '证件有效期',
// profession: '职业',
TELPHONE: '',
COMPANYADD: ''
};
businessKey = {
businessContent: '业务内容',
CARDNBR: '银行卡号',
BUSI_NAME: '公司名称',
cardProduct: '卡产品',
// accountType: '账户类型',
// EXPIRE: '有效期',
OPENDATE: '发卡日期'
};
businessData = {
businessContent: '信用卡网络申请面签',
CARDNBR: '',
BUSI_NAME: '',
// EXPIRE: '',
cardProduct: '随意分信用卡',
// accountType: '100000标准普卡',
OPENDATE: ''
};
created(){
console.log(this.custInfo);
this.businessData.BUSI_NAME = this.custInfo.COMPANYNAME;
this.basicInfoData.CUSTOMERNAME = this.custInfo.CUSTOMERNAME;
this.basicInfoData.SEX = this.custInfo.SEX;
this.basicInfoData.CERTID = this.custInfo.CERTID;
this.basicInfoData.TELPHONE = this.custInfo.TELPHONE;
this.basicInfoData.COMPANYADD = this.custInfo.COMPANYADD;
}
stopCheck(){
if (this.tabActive != 0){
this.$emit("activeChange", this.tabActive-1);
}
};
submit(){
this.$emit("activeChange", this.tabActive+1);
};
}
</script>
<style scoped lang="scss">
p{
text-align: center;
font-size: 20px;
font-weight: bold;
}
.btn-area{
width: 100%;
display: flex;
flex-direction: row;
justify-content: center;
align-items: center;
}
.btn-area > button {
width: 180px;
height: 50px;
border: 1px solid #BEBEBE;
font-size: 19px;
border-radius: 30px;
outline: none;
}
.btn-area > button:nth-child(1){
color: #BEBEBE;
background-color: white;
margin-right: 20px;
}
.btn-area > button:nth-child(2){
color: white;
background-color: #FF8651;
}
</style>
<template>
<div>
<van-checkbox class="radio-sty" icon-size="24px" checked-color="#ee0a24" v-model="checked">{{ protocol }}</van-checkbox>
<div class="doc-style">
<div @click="protocolclick">
<p>《成都银行芙蓉锦城信用卡领用合约》</p>
<p>《成都银行芙蓉锦城信用卡章程》</p>
<p>《成都银行银联芯片信用卡小额免密免签服务协议》</p>
<p>《重要说明》</p>
<p>《随意分约定》</p>
</div>
<div class="btn-area">
<button @click="stopCheck">返回</button>
<button :style="checked ? agree : '' " @click="submit">同意</button>
</div>
</div>
<van-popup v-model:show="signPopupShow" round class="popup-sign-sty" @close="close">
<div class="signTitle-sty">电子签名</div>
<vue-esign ref="esign" :width="600" :height="300" style="border: 1px solid #919187" :isCrop="isCrop" :lineWidth="lineWidth" :lineColor="lineColor" :bgColor.sync="bgColor" />
<div class="sign-btn-sty">
<van-button text="取消" color="#C9C9C9" class="item-sty" @click="signPopupShow = false" />
<van-button text="清除" color="#FF0000" class="item-sty" @click="clearCanvas" />
<van-button text="确认" color="#FF0000" class="item-sty" @click="handleGenerate" />
</div>
</van-popup>
<van-popup v-model:show="potocolPopupShow" round class="popup-potocol-sty" @close="time = 0">
<div class="potocolTitle-sty">成都银行服务协议</div>
<div class="potocol-view-sty">
<protocol-view></protocol-view>
</div>
<div class="potocol-btn-sty">
<van-button text="取消" color="#C9C9C9" class="item-sty" @click="potocolCancel" />
<van-button :disabled="countdownEnd" color="#FF0000" class="item-sty" @click="protocolReadClick">阅读并同意 {{countdown}}</van-button>
</div>
</van-popup>
</div>
</template>
<script lang="ts">
import { Component, Vue, Prop } from "vue-property-decorator";
import {Checkbox, CheckboxGroup, Popup } from 'vant';
import {NativeUI} from "@/public/ts/NativeUI";
import protocolView from "@/views/workbench/contract/protocol.vue";
import IF from "@/public/factory/InterFaceFactory";
import systemApi from "@/constants/api/ms-system/system.api";
import Public from "@/public/ts/Public";
import {MethodType} from "@/constants/enum/general/method-type.enum";
import Api from "@/services/api.service";
Vue.use(Checkbox);
Vue.use(CheckboxGroup);
Vue.use(Popup);
@Component({
name: 'CreditCardProtocol',
components: {
protocolView
}
})
export default class CreditCardProtocol extends Vue {
@Prop(Number) tabActive: Number | any;
@Prop(Object) custInfo: Object | any;
protocol = '请申请人确认以下全部协议,知悉相关业务风险并自愿遵守贵行各项服务协议和制度规定。明确知悉本人点击本页面” 确认 “后,即表示阅读并同意以下协议:';
checked = false;
agree = {
'color': 'white',
'background-color': '#FD5065'
};
lineWidth = 6;
lineColor = '#000000';
bgColor = '';
resultImg = '';
isCrop = false;
potocolPopupShow = false;
esignHeight = '100%';
countdown = '30S';
signPopupShow = false;
time = 0;
countdownEnd = true;
imgFil: any;
questionAnswer: any = {};
//关闭弹框
close(){
(this.$refs.esign as any).reset()
}
//清除画布
clearCanvas(){
(this.$refs.esign as any).reset();
}
// 生成签字图
handleGenerate() {
const _this = this;
(this.$refs.esign as any)
.generate() // 使用生成器调用把签字的图片转换成为base64图片格式
.then((res: any) => {
_this.resultImg = res;
})
.catch((err: any) => {
NativeUI.toast('请签名后再生成签字图片');
});
// 在这里向后端发请求把转换后的base64文件传给后端,后端接收以后再转换成图片做静态图片存储
// 当然也可以把base64转成流文件blob格式的,类似上传给后端这样,具体哪种方式看后端要求
setTimeout(() => {
// 这里要使用定时器稍微延后以后就能取到base64数据了,当然也可以再加一个确认按钮,如:确认使用这张base64签名图片
// 点击确认以后,在其回调函数中,再把base64的签名图片传给后端用于存储
console.log(this.resultImg);
this.imgFil = Public.base64toFile(this.resultImg, '签名');
this.signPopupShow = false;
}, 200);
}
protocolReadClick(){
this.potocolPopupShow = false;
if(window.plus){
this.$native.cloudWalkBiometrics().then((res: any) => {
console.log(JSON.stringify(res));
})
}else{
this.potocolPopupShow = false;
this.signPopupShow = true;
}
}
protocolclick(){
this.potocolPopupShow = true;
this.countdownEnd = true;
this.theCountdown();
}
stopCheck(){
if (this.tabActive != 0){
this.$emit("activeChange", this.tabActive-1);
}
}
submit(){
this.questionAnswer = this.$store.getters.getQuestionAnswerObj;
console.log(this.imgFil.size);
console.log(this.questionAnswer);
if(this.checked){
const param = {
"name": this.custInfo.CUSTOMERNAME,
"sex": this.custInfo.SEX,
"busId": "",
"busType": "",
"option": "",
"ContractNo": "",
"nation": "汉族",
"cerType": "身份证",
"cerId": this.custInfo.CERTID,
"nationality": "中国",
"birthday": "",
"issAuth": "",
"cerValidity": "",
"occupation": "",
"phone": this.custInfo.TELPHONE,
"Address": this.custInfo.COMPANYADD,
"BusContent":"网贷面签办理",
"cardNum": this.custInfo.CREDITCARDID,
"product": "随意分",
"AccType": "信用卡",
"lssDate": this.custInfo.CREDITCARDDATE, //发卡日期
"dateTime":"",
"ftfPer": sessionStorage.getItem("USERNAME"),
"handRes": "",
"ftfAddress": "", //当前位置
"ftfPunchTime": "", //当前时间
"option1": this.questionParams(this.questionAnswer.radio1),
"option2": this.questionParams(this.questionAnswer.radio2),
"option3": this.questionParams(this.questionAnswer.radio3),
"option4": "ContractYes4",
"option5": "ContractYes5",
"option6": "ContractYes6",
"option7": "ContractYes7",
"option8": "ContractYes8",
"option9": "ContractYes9",
"option10": "ContractYes10",
"cusName": this.custInfo.CUSTOMERNAME
};
NativeUI.showWaiting('查询中...');
return IF.transferFile(systemApi.createContract, {fileParam: JSON.stringify(param),file: this.imgFil}).then((res: any) => {
NativeUI.closeWaiting();
console.log(res);
NativeUI.toast('上传成功');
});
this.$emit("activeChange", this.tabActive+1);
}else NativeUI.toast('请勾选同意协议');
}
/**
*@Description 将问题答案封装为后端所需参数
*@Author XWH
*@Date 2022/2/24 20:18
*/
questionParams(answer: any) {
switch (answer) {
case '1':
return "A";
case '2':
return "B";
case '3':
return "C";
case '4':
return "D";
default:
return "";
}
}
/**
*@Description 倒计时
*@Author XWH
*@Date 2022/2/24 10:53
*/
theCountdown(){
const me = this;
me.time = 1;
const timer = setInterval(function() {
if (me.time == 0) {
me.countdown = '';
me.countdownEnd = false;
clearInterval(timer);
} else {
me.countdown = me.time + 'S';
me.time--;
}
}, 1000);
}
potocolCancel(){
this.potocolPopupShow = false;
}
}
</script>
<style scoped lang="scss">
.group-sty{
height: 80px;
margin: 10px 40px;
}
.radio-sty{
margin: 10px 40px;
font-size: 16px;
font-weight: bold;
}
::v-deep .van-checkbox__label{
line-height: 30px
}
.doc-style{
display: flex;
flex-direction: column;
align-items: center;
}
p{
font-size: 16px;
color: #53C7F8;
}
.btn-area{
width: 100%;
display: flex;
flex-direction: row;
justify-content: center;
align-items: center;
}
.btn-area > button {
width: 180px;
height: 50px;
border: 1px solid #BEBEBE;
font-size: 19px;
border-radius: 30px;
outline: none;
}
.btn-area > button:nth-child(1){
color: #BEBEBE;
background-color: white;
margin-right: 20px;
}
.btn-area > button:nth-child(2){
color: white;
background-color: #FF8651;
}
.doc-style > div:nth-child(1){
width: 50%;
height: 380px;
background-image: url("../../../assets/images/protocol.png");
background-size: 100% 100%;
margin-bottom: 30px;
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
padding-top: 80px;
}
.popup-sign-sty{
display: flex;
flex-direction: column;
justify-content: space-around;
align-items: center;
width: 70%;
height: 420px;
.signTitle-sty{
font-size: 20px;
}
}
.popup-potocol-sty{
display: flex;
flex-direction: column;
justify-content: space-around;
align-items: center;
width: 80%;
height: 80%;
}
.sign-btn-sty{
display: flex;
justify-content: space-around;
width: 70%;
.item-sty{
width: 100px;
border: none;
border-radius: 5px;
color: white;
}
}
*, ::after, ::before {
font-size: 18px;
}
.potocol-btn-sty{
display: flex;
justify-content: space-around;
width: 40%;
.item-sty{
width: 130px;
border: none;
border-radius: 5px;
color: white;
}
}
.potocolTitle-sty{
font-size: 20px;
font-weight: bold;
}
.potocol-view-sty{
border: 1px solid #919187;
width: 90%;
height: 75%;
}
</style>
<template>
<div style="height: 100%">
<title-bar title="面签复核" @clickLeft="onClick">
<van-icon slot="left" name="cross" size="24" />
</title-bar>
<div class="custInfo-sty">
<svg class="icon svg-sty" aria-hidden="true">
<use xlink:href="#icon-nanxing-gerentouxiangxpx"></use>
</svg>
<div>{{ faceSignInfo.CUSTOMERNAME}}</div>
<div>客户编号:{{ faceSignInfo.CUSTOMERID}}</div>
</div>
<van-form class="form-sty" @submit="conmitReview">
<div class="container-sty">
<div class="middle-sty">
<van-image
fit="cover"
position="left"
:src="imgPath"
/>
<div style="margin-left: 50px">
<sub-title :customizedSty="customizedSty">
<div style="font-size: 20px;font-weight: bold">面签复核-意见摘要</div>
</sub-title>
<div style="font-size: 18px;font-weight: bold;margin-left: 23px">复核意见</div>
<van-radio-group v-model="checked">
<van-radio icon-size="20px" class="radio-sty" checked-color="#ee0a24" name="1">同意</van-radio>
<van-radio icon-size="20px" class="radio-sty" checked-color="#ee0a24" name="2">拒绝</van-radio>
</van-radio-group>
<div style="font-size: 18px;font-weight: bold;margin-left: 23px">意见描述</div>
<mobile-input
:rules="[{ required: true, message: '备注说明不能为空' }]"
type="textarea"
:maxlength="500"
:rows="7"
input-align="left"
name="REMAKE"
v-model="invalidReason"
class="input-sty"
size="small"
/>
</div>
</div>
<van-button round color="#FF0000" class="btn-sty" ative-type="submit">提交复核</van-button>
</div>
</van-form>
<base-popup showCancel="true" showConfirm="true" @cancel="transferPopupShow = false" @confirm="conmitReview" v-model="transferPopupShow" title="人员列表">
<div class="bottom-sty">
<div class="reason-sty">
<van-radio-group v-model="checked1" direction="horizontal">
<van-radio v-for="(item, index) in customerList" :key="index" icon-size="25px" class="radio-sty" checked-color="#ee0a24" :name="index+1">{{ item.USERNAME }}</van-radio>
</van-radio-group>
</div>
</div>
</base-popup>
</div>
</template>
<script lang="ts">
import { Vue, Component } from "vue-property-decorator";
import nettyApi from "@/constants/api/ms-netty/netty.api";
import {NativeUI} from "@/public/ts/NativeUI";
import IF from "@/public/factory/InterFaceFactory";
import {Image as VanImage } from 'vant';
import BasePopup from "@/components/general/BasePopup.vue";
Vue.use(VanImage);
/**
* @Description:客户查询
* @author pd
* @date 2021-11-06 16:43:27
*/
@Component({
name: "FaceSignReviewView",
components: { BasePopup }
})
export default class FaceSignReviewView extends Vue {
imgPath = require('@/assets/images/protocol.png');
customizedSty = {
width: '7px',
height: '23px'
};
checked = 0
checked1 = 0;
invalidReason = '';
transferPopupShow = false;
customerList: any = [];
faceSignInfo: any;
created(){
console.log(this.$route.query.custInfo);
this.faceSignInfo = this.$route.query.custInfo;
}
onClick(){}
conmitReview(){
const faceSignInfo = this.faceSignInfo;
const param = {
USERCODE: sessionStorage.getItem("user_code"),
ORGCODE: sessionStorage.getItem("org_code"),
USERNAME: sessionStorage.getItem("ORGNAME"),
ORGNAME: sessionStorage.getItem("USERNAME"),
SERIALNO: faceSignInfo.SERIALNO,
OBJECTMODEL: this.checked == 1 ? '5' : this.checked == 2 ? '4': '', //1面签岗提交、2面签岗转让、3面签岗作废、4面签复核岗退回、5面签复核岗提交
SIGNYPE: faceSignInfo.SIGNYPE,
REMARK: this.invalidReason,
tc: nettyApi.TRADE_CODE.faceSignTaskProcess
},
_this = this;
console.log(param);
NativeUI.showWaiting('正在提交...');
return IF.transferDataInter(nettyApi.commonRq, param).then((res: any) => {
NativeUI.closeWaiting();
console.log("提交成功",res);
if(res.rc == 1){
_this.$router.go(-1);
}else{
NativeUI.toast(res.msg);
}
});
}
/**
* @Description 面签人员查询
* @Author xwh
* @Date 2022-02-16 下午 18:13
*/
selectSignPeople(){
const param = {
USERCODE: sessionStorage.getItem("user_code"),
ORGCODE: sessionStorage.getItem("org_code"),
ROLEID: 'R1016',
OBJECTMODEL: '1',//1流程提交用户查询、2总行面签岗人员查询
tc: nettyApi.TRADE_CODE.selectSignPerson
},
_this = this;
NativeUI.showWaiting('正在查询...');
return IF.transferDataInter(nettyApi.commonRq, param).then((res: any) => {
NativeUI.closeWaiting();
console.log('查询用户列表',res)
if(res.rc == 1){
if(res.ARRAY.length > 0){
_this.transferPopupShow = true;
_this.customerList = res.ARRAY;
}else{
NativeUI.toast('未查询到可移交人员信息');
}
}else{
NativeUI.toast(res.msg);
}
});
}
}
</script>
<style lang="scss" scoped>
.custInfo-sty{
width: 100%;
height: 50px;
display: flex;
align-items: center;
background-color: #FFFAFA;
padding-left: 30px;
div:nth-child(2){
font-size: 20px;
margin-right: 50px;
}
div:nth-child(3){
font-size: 18px;
}
}
.svg-sty{
width: 35px;
height: 35px;
}
.container-sty{
display: flex;
flex-direction: column;
align-items: center;
justify-content: space-around;
height: 80%;
}
.btn-sty{
width: 300px;
}
.middle-sty{
display: flex;
width: 80%;
}
.radio-sty{
height: 40px;
margin: 0 10px 15px 23px;
font-size: 18px;
}
::v-deep .van-field__control{
width: 450px;
height: 130px;
}
.input-sty{
margin-left: 10px;
margin-top: 20px;
}
.form-sty{
height: calc(100vh - 110px);
}
.bottom-sty{
display: flex;
flex-direction: column;
justify-content: space-around;
align-items: center;
height: 100%;
}
::v-deep .van-field__control{
width: 400px;
height: 70%;
}
.radio-sty{
height: 40px;
margin: 0 15px 15px 0;
font-size: 20px;
}
</style>
<template>
<div>
<title-bar :title="title" @clickLeft="onClick">
<van-icon slot="left" name="cross" size="20" />
</title-bar>
<div class="marketing-processing-content">
<div class="customer-information">
<div class="customer-information-top">
<div class="avatar"></div>
<div class="customer-name">
<div>{{ custInfo.CUSTOMERNAME }}</div>
<div>精准营销</div>
</div>
</div>
<div class="customer-information-central">
<table>
<tr>
<td>客户名称:</td>
<td>{{ custInfo.CUSTOMERNAME }}</td>
</tr>
<tr>
<td>证件号:</td>
<td>{{ custInfo.CERTID }}</td>
</tr>
<tr>
<td>客户地址:</td>
<td>{{ custInfo.COMPANYADD }}</td>
</tr>
<tr>
<td colspan="2" @click="time_axis"><img src="@/assets/svg/time-axis-logo.svg" alt="" />&nbsp;&nbsp;时光轴</td>
<td></td>
</tr>
</table>
</div>
<div class="sign-in">
<!-- 百度地图-->
<baidu-map class="bm-view" ak="FP7zWR4e8lhxZ6v0IicoG1R5" :center="{ lng: this.upoint.lng, lat: this.upoint.lat }" :zoom="15" @ready="mapReady"> </baidu-map>
</div>
<div class="operate">
<button><img src="@/assets/svg/blue-navigation-logo.svg" alt="" />导航</button>
<div class="button-style">
<button @click="addCalendar">新增日程</button>
<button>信息查询</button>
</div>
</div>
</div>
<div class="faceSign-tab">
<van-steps :active="active" active-icon="success" active-color="#38f" style="padding: 30px 20px 0 20px">
<van-step v-for="(item, index) of stepsList" :key="index">
<template v-slot:active-icon>
<svg class="icon" aria-hidden="true">
<use :xlink:href="item.activeIcon"></use>
</svg>
</template>
<template v-slot:inactive-icon>
<svg class="icon" aria-hidden="true">
<use :xlink:href="item.inactiveIcon"></use>
</svg>
</template>
<template v-slot:finish-icon>
<svg class="icon" aria-hidden="true">
<use xlink:href="#icon-wancheng"></use>
</svg>
</template>
<p>{{ item.stepName }}</p>
</van-step>
</van-steps>
<div>
<identity-check v-if="active == 0" :flag="formView" :custInfo="custInfo" :tabActive="active" @activeChange="activeChange"></identity-check>
<confirm-info v-if="active == 1" :custInfo="custInfo" :tabActive="active" @activeChange="activeChange"></confirm-info>
<risk-evaluation v-if="active == 2" :custInfo="custInfo" :tabActive="active" @activeChange="activeChange"></risk-evaluation>
<image-material v-if="active == 3" :custInfo="custInfo" :tabActive="active" @activeChange="activeChange"></image-material>
<credit-card-protocol v-if="active == 4" :custInfo="custInfo" :tabActive="active" @activeChange="activeChange"></credit-card-protocol>
<submit-audit v-if="active == 5" :flag="formView" :custInfo="custInfo" :tabActive="active" @activeChange="activeChange"></submit-audit>
</div>
</div>
</div>
</div>
</template>
<script lang="ts">
import { Component, Vue } from "vue-property-decorator";
import TitleBar from "@/components/general/TitleBar.vue";
import { BaiduMap, BmScale, BmNavigation, BmInfoWindow } from "vue-baidu-map";
import IdentityCheck from "@/views/workbench/contract/IdentityCheck.vue";
import ConfirmInfo from "@/views/workbench/contract/ConfirmInfo.vue";
import RiskEvaluation from "@/views/workbench/contract/RiskEvaluation.vue";
import CreditCardProtocol from "@/views/workbench/contract/CreditCardProtocol.vue";
import ImageMaterial from "@/views/workbench/contract/ImageMaterial.vue";
import SubmitAudit from "@/views/workbench/contract/SubmitAudit.vue";
/**
* @Description 营销处理
* @Author JiangTao
* @Date 2021-11-10 下午 03:53
*/
@Component({
name: "FaceSignView",
components: {
SubmitAudit,
ImageMaterial,
CreditCardProtocol,
RiskEvaluation, ConfirmInfo, TitleBar, BaiduMap, BmScale, BmNavigation, BmInfoWindow, IdentityCheck},
})
export default class FaceSignView extends Vue {
title = '面签';
BMapGL: any = {};
map: any = {};
//自己当前定位
pointA: any = {};
//客户定位
pointB: any = {};
active = 0;
stepsList = [
{stepName:'身份核查', activeIcon: '#icon-a-1xuanzhong', inactiveIcon: '#icon-jiedian1'},
{stepName:'信息确认', activeIcon: '#icon-a-2xuanzhong', inactiveIcon: '#icon-jiedian2'},
{stepName:'随意分风险测评', activeIcon: '#icon-a-3xuanzhong', inactiveIcon: '#icon-jiedian3'},
{stepName:'影像资料', activeIcon: '#icon-a-5xuanzhong', inactiveIcon: '#icon-jiedian51'},
{stepName:'信用卡协议及约定', activeIcon: '#icon-a-4xuanzhong', inactiveIcon: '#icon-jiedian4'},
{stepName:'业务审批', activeIcon: '#icon-a-6xuanzhong', inactiveIcon: '#icon-jiedian5'}
];
custInfo = {};
formView: any = '0'
onClick() {
console.log(111111);
}
mounted() {
const custInfo = this.$store.getters.getFaceSignInfo;
this.formView = this.$route.query.formView;
if(custInfo.SEX == 1){
custInfo.SEX = '';
}else if(custInfo.SEX == 2){
custInfo.SEX = ''
}
this.custInfo = custInfo;
}
//客户位置坐标
upoint: any = { lng: 104.080998, lat: 30.595452 };
plugins = ["Scale"];
mapReady(bmap: any) {
this.BMapGL = bmap.BMap;
this.map = bmap.map;
}
time_axis() {
this.$router.push({
path: "/workbench/upcoming-tasks/marketing-task/time-axis/time-axis",
});
}
activeChange(tabAcive: any){
this.active = tabAcive;
}
/**
*@Desc 功能描述:新增日程
*@Author XWH
*Date 2022/2/19 18:31
*/
addCalendar() {
console.log('新增日程');
const params = {
'title': '面签',
'description': '随意分面签',
'location': '天府四街',
'startDate': 2022219,
'endDate': 2022219,
'advanceTime': 100,
'rRule': 'FREQ=WEEKLY;INTERVAL=1;WKST=MO;BYDAY=TU;UNTIL='
};
this.$native.addCalendar(params).then((res: any) => {
console.log(res)
})
}
}
</script>
<style scoped>
.marketing-processing-content {
width: 100%;
height: calc(100vh - 60px);
display: flex;
flex-direction: row;
}
.customer-information {
width: 27%;
height: 100%;
padding: 2%;
border-right: 2px solid rgba(242, 242, 242, 1);
}
.customer-information-top {
width: 100%;
display: flex;
align-items: center;
}
.avatar {
width: 56px;
height: 56px;
padding: 4.13% 0;
border: 3px solid #fd5065;
border-radius: 50%;
color: #fd5065;
font-weight: bold;
text-align: center;
margin-right: 6%;
}
.customer-name{
height: 56px;
}
.customer-name > div:nth-child(1) {
font-weight: bold;
font-size: 18px;
color: #333333;
font-family: "Arial Normal", "Arial";
}
.customer-name > div:nth-child(2) {
width: 70%;
padding-top: 1%;
margin-top: 5%;
text-align: center;
border: 1px solid rgba(215, 215, 215, 1);
border-radius: 5px;
font-size: 13px;
color: #333333;
font-family: "Arial Normal", "Arial";
}
.customer-information-central {
width: 100%;
margin-top: 7%;
}
.customer-information-central table {
width: 100%;
}
.customer-information-central table tr > td:nth-child(1) {
width: 40%;
font-size: 14px;
color: #999999;
line-height: 30px;
}
.customer-information-central table tr > td:nth-child(2) {
width: 60%;
font-size: 14px;
color: #333333;
font-family: "Arial Normal", "Arial";
}
.customer-information-central table tr:nth-child(4) > td {
padding-top: 4%;
color: #02a7f0;
}
.sign-in {
width: 100%;
height: 35%;
margin-top: 10%;
}
.operate {
width: 100%;
margin-top: 15%;
}
.operate > button:nth-child(1) {
width: 100%;
height: 36px;
margin: 7% auto 7% auto;
display: block;
background-color: white;
border: 1px solid #02a7f0;
color: #02a7f0;
border-radius: 20px;
font-size: 14px;
font-family: "Arial Normal", "Arial";
}
.button-style > button {
width: 47%;
height: 36px;
/*margin: 0 auto;*/
display: block;
background-color: white;
border: 1px solid rgba(215, 215, 215, 1);
color: #999999;
border-radius: 20px;
font-size: 14px;
font-family: "Arial Normal", "Arial";
outline: none;
}
.bm-view {
width: 100%;
height: 100%;
}
.faceSign-tab{
display: flex;
flex-direction: column;
width: 73%;
height: 100%;
}
.icon{
width: 25px;
height: 25px;
}
.button-style{
width: 100%;
display: flex;
flex-direction: row;
justify-content: space-between;
}
::v-deep .van-step--horizontal .van-step__title {
display: inline-block;
/* margin-left: 19px; */
/* font-size: 24px; */
-webkit-transform: translateX(-30%);
/* transform: translateX(-50%); */
/* text-align: center; */
}
::v-deep .van-steps__items > div:nth-child(6) > .van-step__title{
-webkit-transform: translateX(30%);
}
</style>
<template>
<div class="form-style">
<table>
<tr>
<td>
<mobile-input
type="text"
label="客户姓名"
readonly
v-model="custInfo.CUSTOMERNAME"
size="small"
/>
</td>
</tr>
<tr>
<td>
<div class="idNo-sty">
<mobile-input
type="text"
label="身份证号码"
readonly
v-model="custInfo.CERTID"
size="small"
/>
<div v-if="flag == '1'" @click="takeCredentials('sfz')">
<svg class="icon camera-sty" aria-hidden="true">
<use xlink:href="#icon-a-paizhao24x20ziyuan74"></use>
</svg>
</div>
</div>
</td>
</tr>
</table>
<div class="image-container">
<div class="image-style">
<p>身份证照片</p>
<van-image :src="imageSFZ" width="150px" height="120px" />
</div>
<!-- <div class="image-style">-->
<!-- <p>联网核查照片</p>-->
<!-- <van-image :src="image" width="150px" height="120px" />-->
<!-- </div>-->
<div class="image-style">
<p>联网核查照片</p>
<van-image :src="imageHC" width="150px" height="120px" />
</div>
<div class="image-style" @click="takeCredentials('xc')">
<p>客戶现场照片</p>
<van-image :src="imageXC" width="150px" height="120px" />
</div>
</div>
<div class="btn-area">
<button @click="stopCheck">终止</button>
<button @click="submit">{{ nextStep }}</button>
</div>
</div>
</template>
<script lang="ts">
import { Component, Vue, Prop} from "vue-property-decorator";
import MobileInput from "@/components/general/form/MobileInput.vue";
import {Form, Field, Image as VanImage} from 'vant';
import {MediaFile} from "@/model/entity/MediaFile";
import Public from "@/public/ts/Public";
import nettyApi from "@/constants/api/ms-netty/netty.api";
import {NativeUI} from "@/public/ts/NativeUI";
import IF from "@/public/factory/InterFaceFactory";
Vue.use(Form);
Vue.use(Field);
@Component({
name: 'IdentityCheck',
components: { MobileInput, VanImage}
})
export default class IdentityCheck extends Vue{
@Prop(Number) tabActive: Number | any
@Prop(Object) custInfo: Object | any
@Prop(String) flag: String | any
imageSFZ = require('@/assets/images/nodata.png');
imageHC = require('@/assets/images/nodata.png');
imageXC = require('@/assets/images/nodata.png');
imageUrlZm: any = '';
nextStep = '核查';
stopCheck(){
if (this.tabActive != 0){
this.$emit("activeChange", this.tabActive-1);
}
}
submit(){
this.onlineVerification();
}
takeCredentials(type: string){
const data = new MediaFile();
data.objId = "1111";
data.userId = "000000";
data.address = "定位信息";
data.userName = "拍摄人";
let _this = this,
imgInfo = [],
zmImgFile;
if(window.plus){
this.$native.capturePhoto(data).then((res: any) => {
if(type == 'xc'){
_this.imageXC = res[0].filePath;
}else if(type == 'sfz'){
zmImgFile = Public.imgUrlToFile(res[0].filePath,'身份证正面');
_this.imageSFZ = res[0].filePath;
imgInfo = [{
file: zmImgFile,
fileName: '身份证正面',
mulId: 'idFile'
}];
this.$store.commit("setImageFileObj",imgInfo);
}
})
}
}
onlineVerification() {
if(this.nextStep == '核查'){
const param = {
ID: '510183199610163518',//this.custInfo.CERTID,
NAME: '徐伟皓',//this.custInfo.CUSTOMERNAME,
BUSINESSCODE: '01',
tc: nettyApi.TRADE_CODE.onlineVerification
},
_this = this;
NativeUI.showWaiting('正在加载...');
return IF.transferDataInter(nettyApi.commonRq, param).then((res: any) => {
NativeUI.closeWaiting();
console.log('联网核查',res)
if(res.rc == 1){
this.imageHC = res.PHOTO;
this.nextStep = '下一步'
}else{
NativeUI.toast(res.msg);
}
});
}else{
this.$emit("activeChange", this.tabActive+1);
}
}
}
</script>
<style scoped lang="scss">
.form-style{
display: flex;
flex-direction: column;
justify-content: space-between;
align-items: center;
height: 100%;
}
tr{
width: 80%;
line-height: 60px;
}
tr:first-child{
margin-bottom: 20px;
}
td{
font-size: 18px;
font-family: "Arial Normal", "Arial";
}
td:first-child{
width: 120px;
color: #a19b9b;
}
input{
//border: 1px solid black;
outline: none;
border: 1px solid #b7b0b0;
background-color: #f6f5f5;
height: 40px;
width: 300px;
}
.image-container{
margin-top: 20px;
width: 100%;
display: flex;
flex-direction: row;
justify-content: space-around;
align-items: center;
}
.image-style{
display: flex;
flex-direction: column;
align-items: center;
}
p{
font-size: 16px;
}
.btn-area{
width: 100%;
display: flex;
flex-direction: row;
justify-content: center;
align-items: center;
margin-top: 80px;
}
.btn-area > button {
width: 160px;
height: 50px;
border: 1px solid #BEBEBE;
font-size: 19px;
border-radius: 30px;
outline: none;
//margin-top: 80px;
}
.btn-area > button:nth-child(1){
color: #BEBEBE;
background-color: white;
margin-right: 20px;
}
.btn-area > button:nth-child(2){
color: white;
background-color: #FF8651;
}
table {
width: 50%;
margin: 0 auto;
}
.tab-box {
margin: 10px 0;
}
::v-deep .van-tabs--line .van-tabs__wrap {
width: 20%;
}
::v-deep .van-tab--active {
font-weight: bold;
}
::v-deep .van-tab {
font-size: 16px;
}
::v-deep .d-form-field .field-border .van-field__body{
border: none;
}
.camera-sty{
width: 20px;
height: 20px;
margin-bottom: 20px;
}
.idNo-sty{
display: flex;
}
</style>
<template>
<div class="container-sty">
<div class="takePicture-sty">
<div class="pictureItem-sty" @click="takePhoto('合照')">
<img v-if="imageUrlZm != ''" class="photoa" :src="imageUrlZm" />
<div v-else class="img-sty">
<svg class="icon" aria-hidden="true">
<use xlink:href="#icon-a-02_paizhao"></use>
</svg>
</div>
<p>申请人与业务人员合影</p>
</div>
<div class="pictureItem-sty" @click="takePhoto('现场照片')">
<img v-if="imageUrlFm != ''" class="photoa" :src="imageUrlFm" />
<div v-else class="img-sty">
<svg class="icon" aria-hidden="true">
<use xlink:href="#icon-a-02_paizhao"></use>
</svg>
</div>
<p>申请人与公司合影</p>
</div>
</div>
<div class="btn-area">
<button @click="stopCheck">上一步</button>
<button @click="checkTakePhoto">确认</button>
</div>
</div>
</template>
<script lang="ts">
import { Component, Vue, Prop } from "vue-property-decorator";
import {Image as VanImage, RadioGroup, Radio} from 'vant';
import {NativeUI} from "@/public/ts/NativeUI";
import {MediaFile} from "@/model/entity/MediaFile";
import IF from "@/public/factory/InterFaceFactory";
import systemApi from "@/constants/api/ms-system/system.api";
import Public from "@/public/ts/Public";
Vue.use(Radio);
Vue.use(RadioGroup);
@Component({
name: 'ImageMaterial',
components: { VanImage }
})
export default class ImageMaterial extends Vue {
@Prop(Number) tabActive: Number | any;
imageUrlZm = '';
imageUrlFm = '';
imageInfo: any = {};
onSitePhoto: any;
groupPhoto: any;
isTakePhoto = 0;
mounted(){
this.imageInfo = this.$store.getters.getImageFileObj;
console.log(this.imageInfo);
}
stopCheck(){
if (this.tabActive != 0){
this.$emit("activeChange", this.tabActive-1);
}
}
/**
*@Description 检查是否完成拍照
*@Author XWH
*@Date 2022/2/23 17:29
*/
checkTakePhoto() {
if(this.isTakePhoto == 2){
let groupPhotoInfo = {
file: this.groupPhoto,
fileName: '合照',
mulId: 'groupFile'
},
onSitePhotoInfo = {
file: this.onSitePhoto,
fileName: '现场照片',
mulId: 'sceneFile'
};
this.imageInfo.push(groupPhotoInfo);
this.imageInfo.push(onSitePhotoInfo);
this.uploadImg();
}else{
NativeUI.toast("请先采集身份证照片");
// this.$emit("activeChange", this.tabActive+1);
}
}
/**
*@Description 上传图片
*@Author XWH
*@Date 2022/2/23 17:29
*/
uploadImg(){
let param = [],
files = [];
for(let data of this.imageInfo){
console.log(data);
const obj = {
fileType: "1",
fileSort: "1",
mulId: data.mulId,
mulName: data.fileName,
fileName: data.fileName,
busId: "132",
busType: "2",
path: "",
folderId: "",
folderName: "",
createTime: "",
updateTime: "",
fileSize: "",
md5: "",
extension: "",
fileId: ""
};
param.push(obj);
files.push(data.file);
}
NativeUI.showWaiting('上传中...');
return IF.transferFile(systemApi.FaceSignUploadImg, {fileParams: JSON.stringify(param),files: files}).then((res: any) => {
NativeUI.closeWaiting();
console.log(res);
NativeUI.toast('上传成功');
});
this.$emit("activeChange", this.tabActive+1);
}
takePhoto(fileName: string){
const data = new MediaFile();
data.objId = "1111";
data.userId = "000000";
data.address = "定位信息";
data.userName = "拍摄人";
const _this = this;
this.$native.capturePhoto(data).then((res: any) => {
if(res.length > 0 && res[0].filePath){
let file = Public.imgUrlToFile(res[0].filePath, fileName);
if(fileName == '合照'){
_this.imageUrlZm = res[0].filePath;
_this.groupPhoto = file;
this.isTakePhoto += 1;
} else{
_this.onSitePhoto = file;
this.isTakePhoto += 1;
_this.imageUrlFm = res[0].filePath;
}
}else {
NativeUI.toast("拍照失败,请重试。")
}
})
}
}
</script>
<style scoped lang="scss">
.container-sty{
display: flex;
flex-direction: column;
align-items: center;
}
.img-sty{
width: 300px;
height: 220px;
border: 1px solid #BEBEBE;
margin: 20px 20px;
display: flex;
align-items: center;
justify-content: center;
}
.takePicture-sty{
display: flex;
justify-content: center;
}
.btn-area{
width: 100%;
display: flex;
flex-direction: row;
justify-content: center;
align-items: center;
}
.btn-area > button {
width: 180px;
height: 50px;
border: 1px solid #BEBEBE;
font-size: 19px;
border-radius: 30px;
outline: none;
}
.btn-area > button:nth-child(1){
color: #BEBEBE;
background-color: white;
margin-right: 20px;
}
.btn-area > button:nth-child(2){
color: white;
background-color: #FF8651;
}
.pictureItem-sty{
display: flex;
flex-direction: column;
align-items: center;
}
.photoa {
width: 300px;
height: 220px;
margin: 20px 20px;
}
.icon{
width: 100px;
height: 100px;
}
</style>
<template>
<div style="height: 100%">
<div class="titleInfo-sty">
<div class="titleInfo-sty">随意分信用卡网申面签申请书共<p class="number-sty">10</p>项调查内容</div>
<!-- <span>-->
<!-- <span>-->
<!-- <img src="@/assets/svg/cursor-active.svg">-->
<!-- <p>查看</p>-->
<!-- </span>-->
<!-- <span>-->
<!-- <img src="@/assets/svg/cursor-active.svg">-->
<!-- <p>保存</p>-->
<!-- </span>-->
<!-- </span>-->
</div>
<div v-if="questionNo == 1" class="heading-sty">
<p>1、您是通过何种渠道申请办理的“ 随意分 ”?</p>
<van-radio-group class="group-sty" v-model="radio1" @click="chooseAnswer">
<van-radio class="radio-sty" icon-size="25px" checked-color="#ee0a24" name="1">A.找他人待办,并支付费用</van-radio>
<van-radio class="radio-sty" icon-size="25px" checked-color="#ee0a24" name="2">B.成都银行营业网点</van-radio>
<van-radio class="radio-sty" icon-size="25px" checked-color="#ee0a24" name="3">C.成都银行官方线上渠道,本人扫码申请</van-radio>
<van-radio class="radio-sty" icon-size="25px" checked-color="#ee0a24" name="4">D.成都银行工作人员主动联系后,由我本人扫码申请</van-radio>
</van-radio-group>
</div>
<div v-else-if="questionNo == 2" class="heading-sty">
<p>2、您的工资劳务报酬年收入为(折合人民币)?</p>
<van-radio-group class="group-sty" v-model="radio2" @click="chooseAnswer">
<van-radio class="radio-sty" icon-size="25px" checked-color="#ee0a24" name="1">A.4万元以下</van-radio>
<van-radio class="radio-sty" icon-size="25px" checked-color="#ee0a24" name="2">B.4-20万元</van-radio>
<van-radio class="radio-sty" icon-size="25px" checked-color="#ee0a24" name="3">C.20-50万元</van-radio>
<van-radio class="radio-sty" icon-size="25px" checked-color="#ee0a24" name="4">D.50万元以上</van-radio>
</van-radio-group>
</div>
<div v-else-if="questionNo == 3" class="heading-sty">
<p>3、您的” 随意分 “资金用途是?</p>
<van-radio-group class="group-sty" v-model="radio3" @click="chooseAnswer">
<van-radio class="radio-sty" icon-size="25px" checked-color="#ee0a24" name="1">A.购买住房</van-radio>
<van-radio class="radio-sty" icon-size="25px" checked-color="#ee0a24" name="2">B.从事股本权益性投资或股票、期货等经营活动</van-radio>
<van-radio class="radio-sty" icon-size="25px" checked-color="#ee0a24" name="3">C.住房装修装饰</van-radio>
<van-radio class="radio-sty" icon-size="25px" checked-color="#ee0a24" name="4">D.购买自用交通工具</van-radio>
<van-radio class="radio-sty" icon-size="25px" checked-color="#ee0a24" name="5">E.购买家庭大额耐用消费品</van-radio>
<van-radio class="radio-sty" icon-size="25px" checked-color="#ee0a24" name="6">F.支付家庭成员旅游、婚假、医疗、保险、教育培训等消费用途</van-radio>
</van-radio-group>
</div>
<div v-else-if="questionNo == 4" class="heading-sty">
<p>4、用途声明:“随意分”资金仅用于以下指定用途:住房装修装饰;自用消费的交通工具;购买家庭大额耐用消费品;支付家庭成员境内外旅游、婚嫁费用;支付家庭成员医疗保健费用、购买商业性保险;支付家庭成员出国留学或国内各类教育培训费用;符合监管规定的其它个人消费用途。 不得用于购买住房,不得用于从事股本权益性投资和股票、期货等投机经营活动,不得用于国家法律和金融法规明确规定禁止的经营项目。若违反上述规定, 我行将有权采取提前收回全部分期额度本息费,按合同约定的违约处理及计入个人信用征信信息等处理措施。对此您是否知晓并同意?</p>
<van-radio-group class="group-sty" v-model="radio4" @click="chooseAnswer">
<van-radio class="radio-sty" icon-size="25px" checked-color="#ee0a24" name="1">A.是</van-radio>
<van-radio class="radio-sty" icon-size="25px" checked-color="#ee0a24" name="2">B.否</van-radio>
</van-radio-group>
</div>
<div v-else-if="questionNo == 5" class="heading-sty">
<p>5、“随意分”分期资金仅限通过电话银行、手机银行等我行渠道提用,不支持刷卡消费。“随意分”资金一经提用或提前还款,均不能撤销,我行将按照约定收取提前还款手续费,对已产生的手续费均不予退还;提用次日可申请提前还款(采用一次性支付手续费方式提用资金的,须至少产生一期账单后方可申请提前还款)。对此您是否知晓并同意?</p>
<van-radio-group class="group-sty" v-model="radio5" @click="chooseAnswer">
<van-radio class="radio-sty" icon-size="25px" checked-color="#ee0a24" name="1">A.是</van-radio>
<van-radio class="radio-sty" icon-size="25px" checked-color="#ee0a24" name="2">B.否</van-radio>
</van-radio-group>
</div>
<div v-else-if="questionNo == 6" class="heading-sty">
<p>6、“随意分”业务在授信有效期内,若您个人名下整体信用状况出现恶化,包括但不限于:预留的身份证件或联系方式失效,且未主动及时联系我行更新、负债增加、在本行或他行的贷款或信用卡逾期等,我行有权停止与您的分期合作,并采取限制提用、止付、降额、提前结清等限制用卡措施。请问您是否知晓并同意?</p>
<van-radio-group class="group-sty" v-model="radio6" @click="chooseAnswer">
<van-radio class="radio-sty" icon-size="25px" checked-color="#ee0a24" name="1">A.是</van-radio>
<van-radio class="radio-sty" icon-size="25px" checked-color="#ee0a24" name="2">B.否</van-radio>
</van-radio-group>
</div>
<div v-else-if="questionNo == 7" class="heading-sty">
<p>7、请问您是否知晓“随意分”信用卡的账单日为每月15日,每期账单最后还款日为每月20日?</p>
<van-radio-group class="group-sty" v-model="radio7" @click="chooseAnswer">
<van-radio class="radio-sty" icon-size="25px" checked-color="#ee0a24" name="1">A.是</van-radio>
<van-radio class="radio-sty" icon-size="25px" checked-color="#ee0a24" name="2">B.否</van-radio>
</van-radio-group>
</div>
<div v-else-if="questionNo == 8" class="heading-sty">
<p>8、随意分的所有还款,包括提前还款均须在还款日当日22:00前,将包括分期本金、分期手续费等在内的所有当期欠款,足额存入黑色融字卡片,卡号6228 1309开头的信用卡中,否则我行有权按照合同约定收取相应违约金和利息。还款方式选择“到期还本”的,“到期日”银行不提供借记卡自扣还款服务。对此您是否知晓并同意?</p>
<van-radio-group class="group-sty" v-model="radio8" @click="chooseAnswer">
<van-radio class="radio-sty" icon-size="25px" checked-color="#ee0a24" name="1">A.是</van-radio>
<van-radio class="radio-sty" icon-size="25px" checked-color="#ee0a24" name="2">B.否</van-radio>
</van-radio-group>
</div>
<div v-else-if="questionNo == 9" class="heading-sty">
<p>9、若您未按时偿还“随意分”的分期本金、分期手续费或其他应付款项,我行有权按照合同约定收取相应违约金和罚息。违约金收取比例为当期已出账单金额未还部分的1%;罚息按账户自欠款入账之日起至欠款全部清偿之日止,以 每日万分之三点五的利率全额计收。同时我行可通过短信、电话、电子邮件、信函、上门拜访、委托合法设立的第三方单位、司法途径等方式向您及其担保人进行催收,在上述方式未能有效取得与你联系的情况下,我行有权通过第三方(包括但不限于您提供的联系人、近亲属、附属卡持卡人、工作单位等)向您转告催收欠款事宜。对此您是否知晓并同意?</p>
<van-radio-group class="group-sty" v-model="radio9" @click="chooseAnswer">
<van-radio class="radio-sty" icon-size="25px" checked-color="#ee0a24" name="1">A.是</van-radio>
<van-radio class="radio-sty" icon-size="25px" checked-color="#ee0a24" name="2">B.否</van-radio>
</van-radio-group>
</div>
<div v-else-if="questionNo == 10" class="heading-sty">
<p>10、“随意分”提前还款(包括部分提前还款、全额提前结清)需通过电话银行人工座席、或在手机银行提前还款界面,主动进行提前还款操作。提前还款是否成功,取决于提前还款操作结果。仅将欠款存入“随意分”专项分期信用卡或自扣还款借记卡,不视为已经提前还款,分期手续费仍会继续计收。请问您是否知晓并同意?</p>
<van-radio-group class="group-sty" v-model="radio10" @click="chooseAnswer">
<van-radio class="radio-sty" icon-size="25px" checked-color="#ee0a24" name="1">A.是</van-radio>
<van-radio class="radio-sty" icon-size="25px" checked-color="#ee0a24" name="2">B.否</van-radio>
</van-radio-group>
</div>
<div class="btn-area">
<button @click="stopCheck">{{ backBtn }}</button>
<button :style=" questionNo != '0' ? btnSty: '' " @click="submit">{{ nextBtn }}</button>
</div>
</div>
</template>
<script lang="ts">
import { Component, Vue, Prop } from "vue-property-decorator";
import {Image as VanImage, RadioGroup, Radio} from 'vant';
import { mapGetters } from 'vuex';
import {NativeUI} from "@/public/ts/NativeUI";
Vue.use(Radio);
Vue.use(RadioGroup);
@Component({
name: 'RiskEvaluation',
components: { VanImage }
})
export default class RiskEvaluation extends Vue{
@Prop(Number) tabActive: Number | any;
radio1 = '0';
radio2 = '0';
radio3 = '0';
radio4 = '0';
radio5 = '0';
radio6 = '0';
radio7 = '0';
radio8 = '0';
radio9 = '0';
radio10 = '0';
questionNo = 1;
radioFlag = '0';
btnSty = {
'background-color': '#FD5065',
'color': 'white'
};
backBtn = '返回';
nextBtn = '下一题';
message = '注:我行从未授权任何个人或第三方中介机构代理我行包含随意分在内的所有信用卡业务,也从未以任何名义向客户收取申请费用,请谨防上当受骗。如您是通过他人代办,请联系经办客户经理或致电4000795507。';
questionAnswer: any = {};
mounted(){
this.questionAnswer = this.$store.getters.getQuestionAnswerObj;
if(JSON.stringify(this.questionAnswer) != "{}"){
this.radio1 = this.questionAnswer.radio1;
this.radio2 = this.questionAnswer.radio2;
this.radio3 = this.questionAnswer.radio3;
this.radio4 = this.questionAnswer.radio4;
this.radio5 = this.questionAnswer.radio5;
this.radio6 = this.questionAnswer.radio6;
this.radio7 = this.questionAnswer.radio7;
this.radio8 = this.questionAnswer.radio8;
this.radio9 = this.questionAnswer.radio9;
this.radio10 = this.questionAnswer.radio10;
}
}
//取消返回上一页
stopCheck(){
if (this.questionNo == 1){
this.$emit("activeChange", this.tabActive-1);
}else{
this.questionNo -= 1;
}
};
//下一题
submit(){
console.log(this.radioFlag);
if(this.radioFlag == '0'){
NativeUI.toast("请选择一个答案")
}else{
if(this.questionNo == 10){
const questionAnswerObj = {
radio1: this.radio1,
radio2: this.radio2,
radio3: this.radio3,
radio4: this.radio4,
radio5: this.radio5,
radio6: this.radio6,
radio7: this.radio7,
radio8: this.radio8,
radio9: this.radio9,
radio10: this.radio10
};
this.$store.commit("setQuestionAnswerObj",questionAnswerObj);
this.$emit("activeChange", this.tabActive+1);
}else{
this.radioFlag = '0';
this.questionNo += 1;
}
}
};
//选择答案
get chooseAnswer(){
const _this = this;
_this.backBtn = '返回';
switch (_this.questionNo) {
case 1 :
if(_this.radio1 == '1'){
NativeUI.confirm('温馨提示',_this.message).then(() => {
_this.radio1 = '0';
}).catch(() => {
_this.radio1 = '0';
})
}
_this.radioFlag = _this.radio1;
_this.backBtn = '取消';
return _this.radio1;
case 2 :
if(_this.radio2 == '1'){
NativeUI.confirm('温馨提示','您暂不符合我行随意分准入条件,感谢您的申请。').then(() => {
_this.radio2 = '0';
}).catch(() => {
_this.radio2 = '0';
})
}
_this.radioFlag = _this.radio2;
return _this.radio2;
case 3 :
if(_this.radio3 == '1' || _this.radio3 == '2'){
NativeUI.confirm('温馨提示','我行随意分仅限用于申请人一切合法的个人消费和非经营性支出。感谢您的申请。').then(() => {
_this.radio3 = '0';
}).catch(() => {
_this.radio3 = '0';
})
}
_this.radioFlag = _this.radio3;
return _this.radio3;
case 4 :
if(_this.radio4 == '2'){
NativeUI.confirm('温馨提示','鉴于您不同意随意分相关规定,视同您自愿放弃使用随意分卡。感谢您的申请。').then(() => {
_this.radio4 = '0';
}).catch(() => {
_this.radio4 = '0';
})
}
_this.radioFlag = _this.radio4;
return _this.radio4;
case 5 :
if(_this.radio5 == '2'){
NativeUI.confirm('温馨提示','鉴于您不同意随意分相关规定,视同您自愿放弃使用随意分卡。感谢您的申请。').then(() => {
_this.radio5 = '0';
}).catch(() => {
_this.radio5 = '0';
})
}
_this.radioFlag = _this.radio5;
return _this.radio5;
case 6 :
if(_this.radio6 == '2'){
NativeUI.confirm('温馨提示','鉴于您不同意随意分相关规定,视同您自愿放弃使用随意分卡。感谢您的申请。').then(() => {
_this.radio6 = '0';
}).catch(() => {
_this.radio6 = '0';
})
}
_this.radioFlag = _this.radio6;
return _this.radio6;
case 7 :
if(_this.radio7 == '2'){
NativeUI.confirm('温馨提示','您暂不符合我行随意分准入条件,感谢您的申请。').then(() => {
_this.radio7 = '0';
}).catch(() => {
_this.radio7 = '0';
})
}
_this.radioFlag = _this.radio7;
return _this.radio7;
case 8 :
if(_this.radio8 == '2'){
NativeUI.confirm('温馨提示','鉴于您不同意随意分相关规定,视同您自愿放弃使用随意分卡。感谢您的申请。').then(() => {
_this.radio8 = '0';
}).catch(() => {
_this.radio8 = '0';
})
}
_this.radioFlag = _this.radio8;
return _this.radio8;
case 9 :
if(_this.radio9 == '2'){
NativeUI.confirm('温馨提示','鉴于您不同意随意分相关规定,视同您自愿放弃使用随意分卡。感谢您的申请。').then(() => {
_this.radio9 = '0';
}).catch(() => {
_this.radio9 = '0';
})
}
_this.radioFlag = _this.radio9;
return _this.radio9;
case 10 :
if(_this.radio10 == '2'){
NativeUI.confirm('温馨提示','鉴于您不同意随意分相关规定,视同您自愿放弃使用随意分卡。感谢您的申请。').then(() => {
_this.radio10 = '0';
}).catch(() => {
_this.radio10 = '0';
})
}
_this.radioFlag = _this.radio10;
_this.backBtn = '取消';
return _this.radio10;
}
};
}
</script>
<style scoped lang="scss">
.titleInfo-sty{
display: flex;
flex-direction: row;
margin-left: 15px;
font-size: 18px;
}
p{
font-size: 20px;
margin-bottom: 0;
}
span > span:nth-child(1){
margin-right: 30px;
}
span {
display: flex;
flex-direction: row;
justify-content: center;
align-items: center;
text-align: center;
}
img{
width: 44px;
height: 17px;
}
.heading-sty{
margin-left: 50px;
margin-top: 20px;
}
.group-sty{
margin: 10px 20px;
}
.radio-sty{
height: 40px;
margin: 15px 0;
font-size: 20px;
}
.btn-area{
width: 100%;
display: flex;
flex-direction: row;
justify-content: center;
align-items: center;
}
.btn-area > button {
width: 180px;
height: 50px;
border: 1px solid #BEBEBE;
font-size: 19px;
border-radius: 30px;
outline: none;
}
.btn-area > button:nth-child(1){
color: #BEBEBE;
background-color: white;
margin-right: 20px;
}
.btn-area > button:nth-child(2){
color: white;
background-color: #FF8651;
}
.number-sty{
color: red;
}
</style>
<template>
<div>
<div class="doc-style">
<div class="title-sty">{{ protocol }}</div>
<div>
<p>《面签资料》</p>
</div>
<div class="btn-area">
<button @click="stopCheck">上一步</button>
<button @click="selectSignPeople">提交复核</button>
</div>
</div>
<base-popup showCancel="true" showConfirm="true" @cancel="transferPopupShow = false" @confirm="submit" v-model="transferPopupShow" title="提交">
<div class="bottom-sty">
<div class="reason-sty">
<van-radio-group v-model="checked" direction="horizontal">
<van-radio v-for="(item, index) in customerList" :key="index" icon-size="25px" class="radio-sty" checked-color="#ee0a24" :name="index+1">{{ item.USERNAME }}</van-radio>
</van-radio-group>
</div>
</div>
</base-popup>
</div>
</template>
<script lang="ts">
import { Component, Vue, Prop } from "vue-property-decorator";
import {NativeUI} from "@/public/ts/NativeUI";
import nettyApi from "@/constants/api/ms-netty/netty.api";
import IF from "@/public/factory/InterFaceFactory";
import BasePopup from "@/components/general/BasePopup.vue";
@Component({
name: 'SubmitAudit',
components: {BasePopup}
})
export default class SubmitAudit extends Vue {
@Prop(Number) tabActive: Number | any;
@Prop(Object) custInfo: Object | any;
@Prop(String) flag: String | any;
protocol = '请工作人员审核申请信息';
transferPopupShow = false;
checked = 0;
customerList: any = [];
stopCheck(){
if (this.tabActive != 0){
this.$emit("activeChange", this.tabActive-1);
}
}
submit(){
const custInfo = this.customerList[this.checked-1];
const param = {
USERCODE: sessionStorage.getItem("user_code"),
ORGCODE: sessionStorage.getItem("org_code"),
USERNAME: sessionStorage.getItem("ORGNAME"),
ORGNAME: sessionStorage.getItem("USERNAME"),
SERIALNO: this.custInfo.SERIALNO,
OBJECTMODEL: '6', //1面签岗提交、2面签岗转让、3面签岗作废、4面签复核岗退回、5面签复核岗提交
SIGNYPE: this.custInfo.SIGNYPE,
REMARK: '',
FLOWUSERID: custInfo.USERID,
FLOWUSERNAME: custInfo.USERNAME,
FLOWORGNAME: custInfo.ORGNAME,
FLOWORGID: custInfo.ORGID,
tc: nettyApi.TRADE_CODE.faceSignTaskProcess
},
_this = this;
NativeUI.showWaiting('正在提交...');
return IF.transferDataInter(nettyApi.commonRq, param).then((res: any) => {
NativeUI.closeWaiting();
console.log("提交成功",res);
if(res.rc == 1){
if(_this.flag == '1'){
_this.$router.go(-1);
}else{
_this.$router.go(-2);
}
}else{
NativeUI.toast(res.msg);
}
});
}
/**
* @Description 面签人员查询
* @Author xwh
* @Date 2022-02-16 下午 18:13
*/
selectSignPeople(){
const param = {
USERCODE: sessionStorage.getItem("user_code"),
ORGCODE: sessionStorage.getItem("org_code"),
ROLEID: 'R1016',
OBJECTMODEL: '2',//1流程提交用户查询、2总行面签岗人员查询
tc: nettyApi.TRADE_CODE.selectSignPerson
},
_this = this;
NativeUI.showWaiting('正在查询...');
return IF.transferDataInter(nettyApi.commonRq, param).then((res: any) => {
NativeUI.closeWaiting();
console.log('查询用户列表',res)
if(res.rc == 1){
if(res.ARRAY.length > 0){
_this.transferPopupShow = true;
_this.customerList = res.ARRAY;
}else{
NativeUI.toast('未查询到可移交人员信息');
}
}else{
NativeUI.toast(res.msg);
}
});
}
}
</script>
<style scoped lang="scss">
.doc-style{
display: flex;
flex-direction: column;
align-items: center;
}
p{
font-size: 16px;
color: #53C7F8;
}
.btn-area{
width: 100%;
display: flex;
flex-direction: row;
justify-content: center;
align-items: center;
}
.btn-area > button {
width: 180px;
height: 50px;
border: 1px solid #BEBEBE;
font-size: 19px;
border-radius: 30px;
outline: none;
}
.btn-area > button:nth-child(1){
color: #BEBEBE;
background-color: white;
margin-right: 20px;
}
.btn-area > button:nth-child(2){
color: white;
background-color: #FF8651;
}
.title-sty{
font-size: 20px;
font-weight: bold;
margin: 20px 0;
}
.doc-style > div:nth-child(2){
width: 50%;
height: 400px;
background-image: url("../../../assets/images/protocol.png");
background-size: 100% 100%;
margin-bottom: 30px;
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
padding-top: 80px;
}
.bottom-sty{
display: flex;
flex-direction: column;
justify-content: space-around;
align-items: center;
height: 100%;
}
::v-deep .van-field__control{
width: 400px;
height: 70%;
}
.radio-sty{
height: 40px;
margin: 0 15px 15px 0;
font-size: 20px;
}
</style>
因为 它太大了无法显示 源差异 。您可以改为 查看blob
<template>
<!-- 消息提醒详情页 -->
<div>
<title-bar :title="title" @click-right="onClick">
<van-icon slot="left" name="cross" size="24" />
</title-bar>
<div class="text-content">
<div class="text-content-left">
<van-sidebar @change="onChange" style="width: 100%" line-height="100px" v-model="activeKey">
<van-sidebar-item v-for="(item, index) in listInfo" :key="index" class="label" :title="item.cnname" />
</van-sidebar>
</div>
<div class="text-content-right">
<div class="Managementdata d-flex flex-column">
<scroller-view v-calculate-height :pulldown="pulldown" :pullup="pullup" :refresh-data="onrefreshdata"
:load-data="onloaddata">
<div v-for="(item, index) in list" :key="index" class="customer-bottom-list">
<div class="customer-bottom-list-top">
<div class="content-box">
<div class="red-point"></div>
<div style="width: 95%;">{{ item.msg_content }}</div>
</div>
</div>
<div class="customer-bottom-list-bottom">
<div>
<div>生成时间:</div>
<div>{{ item.gen_date }}</div>
</div>
<div v-show="currentType == '0900' || currentType == '0510'">
<div>超期时间:</div>
<div>{{ item.max_date }}</div>
</div>
</div>
<div class="read-but" @click="changeMsgStatus(index)">已读</div>
</div>
</scroller-view>
</div>
</div>
</div>
</div>
</template>
<script lang="ts">
import { Component, Vue } from "vue-property-decorator";
import TitleBar from "@/components/general/TitleBar.vue";
import { Sidebar, SidebarItem } from "vant";
import nettyApi from "@/constants/api/ms-netty/netty.api";
import { NativeUI } from "@/public/ts/NativeUI";
import IF from "@/public/factory/InterFaceFactory";
Vue.use(Sidebar);
Vue.use(SidebarItem);
/**
*@description: 消息提醒详情页。没有搜索功能,接口没有搜索功能
*@author: wanghang
*@date: 2022/2/26
*/
@Component({
name: "UpcomingTask",
components: {
TitleBar
}
})
export default class UpcomingTask extends Vue {
activeKey: any = 0;
title = "消息提醒"; // 页面标题
msgCount: any = 0;
listInfo: any[] = []; //列表信息
currentPage: any = 0; //当前所在页
titles: any[] = []; //标题内容
list: any[] = []; //存放查询的列表数据
refreshing: any = false;
msgNum: any = 0;
currentType: any = ""; //当前类别
checkedList: any[] = []; //按钮状态列表
pageNo = 1;
pullup = true;
pulldown = true;
nodata = true;
onClick() {
sessionStorage.setItem("activeKey", "");
}
mounted() {
this.selectMsgRemind();
}
//查询对公消息提醒
selectMsgRemind() {
let param = {
tc: nettyApi.TRADE_CODE.selectMsgRemind
};
NativeUI.showWaiting("正在查询...");
return IF.transferDataInter(nettyApi.commonRq, param).then((res: any) => {
NativeUI.closeWaiting();
if (res.rc == "1") {
//查到消息提醒列表
let info: any[] = res.SchemeTypes;
this.listInfo = res.SchemeTypes;
this.msgCount = 0;
for (let i = 0; i < info.length; i++) {
this.msgCount = parseInt(this.msgCount) + parseInt(info[i].RewSchemes[0].SCHEME_COUNT);
}
this.selectCategoryList();
} else {
NativeUI.toast(res.msg);
}
});
}
//根据查询的类别,分别将字符串赋值给list
setValue(infolist: any[], type: any) {
this.checkedList = [];
if (type == "0450") {
//风险预警 this.riskInfo
for (let i = 0; i < infolist.length; i++) {
// temp.msg_content = infolist[i].field_list
let temp: any = {};
let obj: any = {};
for (let j = 0; j < infolist[i].field_list.length; j++) {
obj[infolist[i].field_list[j].field_name] = infolist[i].field_list[j].field_value;
}
temp.msg_content = obj.msg_content;
temp.rs_level = obj.rs_level;
temp.msg_id = obj.msg_id;
temp.gen_date = obj.gen_date;
temp.scheme_id = obj.scheme_id;
this.checkedList.push({ checked: false });
this.list.push(temp);
}
} else if (type == "0600") {
//押品价值重估
for (let i = 0; i < infolist.length; i++) {
// temp.msg_content = infolist[i].field_list
let temp: any = {};
let obj: any = {};
for (let j = 0; j < infolist[i].field_list.length; j++) {
obj[infolist[i].field_list[j].field_name] = infolist[i].field_list[j].field_value;
}
temp.msg_content = obj.msg_content;
temp.rs_level = obj.rs_level;
temp.msg_id = obj.msg_id;
temp.gen_date = obj.gen_date;
temp.scheme_id = obj.scheme_id;
this.checkedList.push({ checked: false });
this.list.push(temp);
}
} else if (type == "0900") {
//普通信息
for (let i = 0; i < infolist.length; i++) {
// temp.msg_content = infolist[i].field_list
let temp: any = {};
let obj: any = {};
for (let j = 0; j < infolist[i].field_list.length; j++) {
obj[infolist[i].field_list[j].field_name] = infolist[i].field_list[j].field_value;
}
temp.msg_content = obj.msg_content;
temp.rs_level = obj.rs_level;
temp.msg_id = obj.msg_id;
temp.gen_date = obj.gen_date;
temp.max_date = obj.max_date;
temp.scheme_id = obj.scheme_id;
this.checkedList.push({ checked: false });
this.list.push(temp);
}
} else if (type == "0200") {
//业务风险预警
for (let i = 0; i < infolist.length; i++) {
// temp.msg_content = infolist[i].field_list
let temp: any = {};
let obj: any = {};
for (let j = 0; j < infolist[i].field_list.length; j++) {
obj[infolist[i].field_list[j].field_name] = infolist[i].field_list[j].field_value;
}
temp.msg_content = obj.msg_content;
temp.rs_level = obj.rs_level;
temp.msg_id = obj.msg_id;
temp.gen_date = obj.gen_date;
temp.scheme_id = obj.scheme_id;
this.checkedList.push({ checked: false });
this.list.push(temp);
}
} else if (type == "0510") {
//贷后检查
for (let i = 0; i < infolist.length; i++) {
// temp.msg_content = infolist[i].field_list
let temp: any = {};
let obj: any = {};
for (let j = 0; j < infolist[i].field_list.length; j++) {
obj[infolist[i].field_list[j].field_name] = infolist[i].field_list[j].field_value;
}
temp.msg_content = obj.msg_content;
temp.rs_level = obj.rs_level;
temp.msg_id = obj.msg_id;
temp.gen_date = obj.gen_date;
temp.max_date = obj.max_date;
temp.scheme_id = obj.scheme_id;
this.checkedList.push({ checked: false });
this.list.push(temp);
}
}
if (this.list.length < 10) {
// 如果小于10条,说明没有更多数据了,去掉加载更多
this.pullup = false;
} else {
//如果等于10条那么就保留加载更多
this.pullup = true;
}
}
onChange() {
this.currentPage = this.activeKey;
this.currentType = this.listInfo[this.activeKey].RewSchemes[0].SCHEME_TYPE; //当前类别
this.selectCategoryList(1);
}
//下拉刷新
onrefreshdata() {
console.log("刷新刷新");
return this.selectCategoryList();
}
//下拉加载
onloaddata() {
this.pageNo = Math.ceil(this.list.length / 10) + 1;
return this.selectCategoryList(this.pageNo);
}
//改变消息状态
changeMsgStatus(index:any) {
let param = {
msg_id: this.list[index].msg_id,
tc: nettyApi.TRADE_CODE.updateMsgStatus
};
NativeUI.showWaiting('正在查询...');
return IF.transferDataInter(nettyApi.commonRq, param).then((res:any) => {
NativeUI.closeWaiting();
if (res.rc == '1') {
//查到消息提醒列表
// this.listInfo = res.SchemeTypes;
// for (let i = 0; i < this.listInfo.length; i++) {
// this.msgNum += parseInt(this.listInfo[i].RewSchemes[0].SCHEME_COUNT);
// }
NativeUI.toast('已设置为已读');
this.selectCategoryList(1);
} else {
NativeUI.toast(res.msg);
}
});
}
//查询对应类别的提醒列表
selectCategoryList(pageNo = 1) {
let index = this.currentPage;
let type = this.listInfo[index].RewSchemes[0].SCHEME_TYPE;
let param = {
scheme_type: type,
scheme_id: this.listInfo[index].RewSchemes[0].SCHEME_ID,
maxLine: "10",
targetPage: pageNo,
tc: nettyApi.TRADE_CODE.selectMsgRemindDetail
};
NativeUI.showWaiting("正在查询...");
this.refreshing = false;
return IF.transferDataInter(nettyApi.commonRq, param).then((res: any) => {
NativeUI.closeWaiting();
if (res.rc == "1") {
//查到消息提醒列表
// this.listInfo = res.SchemeTypes;
if (res.msg_woke_list.length > 0 && pageNo == 1) {
//当当前类别查出来不为空的时候
this.list = [];
this.setValue(res.msg_woke_list, type);
} else {
this.setValue(res.msg_woke_list, type);
}
} else {
NativeUI.toast(res.msg);
}
});
}
}
</script>
<style scoped>
.text-content {
width: 100%;
height: calc(100vh - 60px);
display: flex;
justify-content: flex-start;
}
.text-content-left {
width: 25%;
background-color: rgba(245, 245, 245, 1);
border: 1px solid rgba(222, 222, 222, 1);
}
.text-content-right {
width: 75%;
height: 100%;
}
.text-content-right > div {
height: 100%;
}
.label {
border-bottom: 1px solid #e0e1e2;
}
van-sidebar-item {
}
::v-deep .van-sidebar-item--select::before {
background-color: #FF574C;
height: 100%;
}
::v-deep .van-sidebar-item__text {
font-size: 18px;
}
::v-deep .text-content-left {
z-index: 2100;
height: calc(100vh - 60px);
overflow-y: auto;
}
.Managementdata {
margin-top: 20px;
padding: 0 20px;
height: calc(100vh - 130px);
}
::v-deep .Managementdata .bs-wrapper {
height: 100%;
}
.red-point {
height: 8px;
width: 8px;
display: flex;
border-radius: 50%;
margin-top: 8px;
background: red;
margin-right: 10px;
}
.customer-bottom-list {
border-radius: 10px;
background-color: #f8fdff;
box-shadow: 0 0 6px #d7d7d7;
margin: 0 10px 16px 10px;
padding-bottom: 10px;
position: relative;
}
/*.customer-bottom-list-top > div:nth-child(1) {*/
/* width: 30px;*/
/* height: 30px;*/
/* border: 1px solid #FF574C;*/
/* border-radius: 15px;*/
/* display: flex;*/
/* justify-content: center;*/
/* align-items: center;*/
/*}*/
.customer-bottom-list-top > div:nth-child(1) {
font-size: 115%;
font-weight: bold;
font-family: "微软雅黑 Bold", "微软雅黑 Regular", "微软雅黑";
margin-left: 0.8%;
word-break: keep-all;
}
.customer-bottom-list-top {
width: 80%;
display: flex;
justify-content: flex-start;
align-items: center;
padding-top: 1.5%;
margin-left: 1.5%;
}
.labelDataStyle {
width: auto;
font-size: 12px;
background-color: #E2F6FF;
padding: 2px 5px;
color: #0297D7;
border-radius: 2px;
word-break: keep-all;
margin-left: 1%;
margin-bottom: 5px;
}
.customer-bottom-list-top > div:nth-child(2) {
width: 85%;
display: flex;
flex-wrap: wrap;
}
.customer-bottom-list-bottom {
width: 95%;
height: auto;
display: flex;
margin-top: 10px;
padding-left: 50px;
color: #959596;
}
.customer-bottom-list-bottom > div {
width: 33%;
display: flex;
align-items: center;
justify-content: flex-start;
}
.customer-bottom-list-bottom > div > div:nth-child(1) {
word-break: keep-all;
}
.content-box {
display: flex;
/*align-items: center;*/
line-height: 24px;
justify-content: center;
white-space: pre-line;
}
.read-but {
position: absolute;
display: flex;
align-items: center;
justify-content: center;
right: 20px;
top: 30px;
color: #FF574C;
border-radius: 10px;
font-size: 14px;
height: 30px;
width: 50px;
border: 1px solid;
border-color: #FF574C;
}
</style>
<template>
<div>
<title-bar title="新增提醒" @clickLeft="onClick">
<van-icon slot="left" name="cross" size="24" />
</title-bar>
<div class="form-content v-scroller">
<van-form @submit="onSubmit">
<table>
<tr>
<td>
<van-field readonly clickable required label="工作类型:" :value="value" placeholder="请选择" @click="showPicker = true" />
<van-popup v-model="showPicker" style="width: 30%" round position="center">
<van-picker show-toolbar :columns="columns" @cancel="showPicker = false" @confirm="onConfirm_type" />
</van-popup>
</td>
</tr>
<tr>
<td colspan="2">
<van-field v-model="abstract" name="内容摘要" label="内容摘要:" placeholder="请输入您要安排的事项" />
</td>
</tr>
<tr>
<td colspan="2">
<div style="display: flex; align-items: center">
<div style="width: 13%; padding-left: 1.5%; font-size: 16px; color: #999999">全天事件:</div>
<div style="height: 1%"><van-switch active-color="#fd5065" v-model="checked" /></div>
</div>
</td>
</tr>
<tr>
<td>
<van-field readonly clickable required name="DatetimePickerStart" :value="value_start_time" label="开始提示时间:" placeholder="开始提示时间" @click="showPicker_start_time = true" />
<van-popup v-model="showPicker_start_time" style="width: 30%; border-radius: 15px" position="center">
<van-datetime-picker @cancel="showPicker_start_time = false" @confirm="onConfirm_start_time" v-model="current_date_start" title="选择时间" />
</van-popup>
</td>
<td>
<van-field readonly clickable required name="DatetimePickerFinish" :value="value_finish_time" label="结束提示时间:" placeholder="结束提示时间" @click="showPicker_finish_time = true" />
<van-popup v-model="showPicker_finish_time" style="width: 30%; border-radius: 15px" position="center">
<van-datetime-picker @cancel="showPicker_finish_time = false" @confirm="onConfirm_finish_time" v-model="current_date_finish" title="选择时间" />
</van-popup>
</td>
</tr>
<tr>
<td>
<van-field readonly clickable name="DatetimePickerPlan" :value="value_plan_time" label="计划完成日期:" placeholder="计划完成日期" @click="showPicker_plan_time = true" />
<van-popup v-model="showPicker_plan_time" style="width: 30%; border-radius: 15px" position="center">
<van-datetime-picker @cancel="showPicker_plan_time = false" @confirm="onConfirm_plan_time" v-model="current_date_plan" title="选择时间" />
</van-popup>
</td>
<td>
<van-field readonly clickable name="DatetimePickerActual" :value="value_actual_time" label="实际完成日期:" placeholder="实际完成日期" @click="showPicker_actual_time = true" />
<van-popup v-model="showPicker_actual_time" style="width: 30%; border-radius: 15px" position="center">
<van-datetime-picker @cancel="showPicker_actual_time = false" @confirm="onConfirm_actual_time" v-model="current_date_actual" title="选择时间" />
</van-popup>
</td>
</tr>
<tr>
<td colspan="2">
<van-field v-model="message_content" rows="3" label="计划工作内容:" type="textarea" show-word-limit />
</td>
</tr>
<tr>
<td colspan="2">
<van-field v-model="message_condition" rows="3" label="实际执行情况:" type="textarea" show-word-limit />
</td>
</tr>
<tr>
<td colspan="2">
<van-field v-model="message_reason" rows="3" label="未完成理由:" type="textarea" show-word-limit />
</td>
</tr>
<tr>
<td colspan="2">
<van-field v-model="message_remark" rows="3" label="备注:" type="textarea" show-word-limit />
</td>
</tr>
<tr>
<td colspan="2">
<div class="submit-and-cancel" style="margin: 16px; display: flex; justify-content: center">
<van-button round block type="info">取消</van-button>
<van-button round block type="info" native-type="submit">提交</van-button>
</div>
</td>
</tr>
</table>
</van-form>
</div>
</div>
</template>
<script lang="ts">
import { Component, Vue } from "vue-property-decorator";
import TitleBar from "@/components/general/TitleBar.vue";
import { Picker } from "vant";
import { Switch } from "vant";
import { DatetimePicker } from "vant";
import { Field } from "vant";
Vue.use(Field);
Vue.use(DatetimePicker);
Vue.use(Switch);
Vue.use(Picker);
/**
* @Description 新增提醒
* @Author JiangTao
* @Date 2021-11-10 下午 03:46
*/
@Component({
name: "AddReminder",
components: { TitleBar },
})
export default class AddReminder extends Vue {
pageTitle = ""; // 页面标题
onClick() {
console.log(111111);
}
mounted() {
this.pageTitle = this.$route.meta?.name;
}
value = "";
showPicker = false;
columns = ["内部管理", "上门催款", "电话催款", "拟定保全方案", "实施保全方案", "计划还款", "其他"];
onConfirm_type(value: any) {
this.value = value;
this.showPicker = false;
}
abstract = "";
checked = true;
//开始时间
value_start_time = "";
showPicker_start_time = false;
current_date_start = new Date();
s = "";
onConfirm_start_time(time: any) {
this.value_start_time = time;
this.showPicker_start_time = false;
}
//结束时间
value_finish_time = "";
showPicker_finish_time = false;
current_date_finish = new Date();
onConfirm_finish_time(time: any) {
this.value_finish_time = time;
this.showPicker_finish_time = false;
}
//计划完成时间
value_plan_time = "";
showPicker_plan_time = false;
current_date_plan = new Date();
onConfirm_plan_time(time: any) {
this.value_plan_time = time;
this.showPicker_plan_time = false;
}
//实际完成时间
value_actual_time = "";
showPicker_actual_time = false;
current_date_actual = new Date();
onConfirm_actual_time(time: any) {
this.value_actual_time = time;
this.showPicker_actual_time = false;
}
message_content = "";
message_condition = "";
message_reason = "";
message_remark = "";
}
</script>
<style scoped lang="scss">
.form-content {
width: 80%;
margin: 0 auto;
}
table {
width: 100%;
}
::v-deep .van-cell::after {
border: 0;
}
::v-deep .van-field__control {
border: 1px solid #999999;
}
::v-deep .van-field__label {
margin-right: 0;
width: 11%;
}
::v-deep .van-switch--on {
.van-switch__node {
transform: translateX(2em);
}
}
::v-deep .van-field__control {
height: 40px;
}
::v-deep .van-switch__node {
width: 50%;
height: 100%;
}
::v-deep .van-field__label span {
line-height: 40px;
}
::v-deep .van-cell--clickable > div:nth-child(1) {
width: 23%;
}
::v-deep .van-button--round {
width: 15%;
padding: 2.5% 0;
margin: 0 1%;
}
::v-deep .van-button--round span {
font-size: 16px;
}
.submit-and-cancel > button:nth-child(1) {
background-color: white;
color: #999999;
border: 1px solid #999999;
}
.submit-and-cancel > button:nth-child(2) {
background-color: #fd5065;
border: 1px solid #fd5065;
}
</style>
<template>
<div>
<title-bar title="日程提醒" @clickLeft="onClick">
<van-icon slot="left" name="cross" size="24" />
</title-bar>
<div class="content">
<div class="calendar">
<van-calendar :show-title="false" color="#fd5065" :show-mark="false" :readonly="readonly" :poppable="false" :show-confirm="false" :style="{ height: '400px' }" />
</div>
<div class="hint">
<div style="display: inline-block">提醒</div>
<van-tabs type="card">
<van-tab title="日">
<div class="list-content">
<div class="list-content-time">
<div>2021年5月12日</div>
<div>14:00</div>
</div>
<div class="list-content-text"><span></span>家庭户是指以家庭成员关系为主、居住一处共同生活的人组成的户。</div>
</div>
<div class="list-content">
<div class="list-content-time">
<div>2021年5月12日</div>
<div>14:00</div>
</div>
<div class="list-content-text"><span></span>家庭户是指以家庭成员关系为主、居住一处共同生活的人组成的户。</div>
</div>
</van-tab>
<van-tab title="周"></van-tab>
<van-tab title="月"></van-tab>
<van-tab title="全部">全部</van-tab>
</van-tabs>
</div>
</div>
<div @click="add_remind" class="add-remind">新增提醒</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 { Calendar } from "vant";
Vue.use(Calendar);
Vue.use(Tab);
Vue.use(Tabs);
/**
* @Description 日程提醒
* @Author JiangTao
* @Date 2021-11-10 下午 03:46
*/
@Component({
name: "More",
components: { TitleBar },
})
export default class More extends Vue {
pageTitle = ""; // 页面标题
readonly = true;
onClick() {
console.log(111111);
}
mounted() {
this.pageTitle = this.$route.meta?.name;
}
add_remind() {
this.$router.push({
path: "/workbench/schedule-reminder/add-reminder",
});
}
}
</script>
<style scoped>
.content {
padding: 2.5%;
display: flex;
justify-content: flex-start;
}
.calendar {
width: 33%;
display: inline-block;
border: 1px solid #999999;
}
.add-remind {
width: 10.63%;
margin-left: 12.5%;
margin-top: 3%;
border: 1px solid #fd5065;
border-radius: 20px;
text-align: center;
background-color: white;
color: #fd5065;
font-size: 16px;
padding: 0.391% 0;
}
.hint {
width: 60%;
/*display: flex;*/
/*justify-content: space-between;*/
margin-left: 4%;
}
.hint > div:nth-child(1) {
font-size: 18px;
font-family: "Arial Normal", "Arial";
color: #333333;
font-weight: bold;
}
.hint > div:nth-child(2) {
width: 100%;
}
::v-deep .van-tabs__nav {
width: 35%;
float: right;
}
::v-deep .van-tabs--card {
margin-top: -4%;
}
::v-deep .van-tabs__wrap {
margin-bottom: 2%;
}
.list-content {
width: 98%;
margin-left: 1%;
padding-top: 1.5%;
border-bottom: 1px solid rgba(242, 242, 242, 1);
}
.list-content-time {
display: flex;
margin-bottom: 1.5%;
}
.list-content-time div {
margin-right: 3%;
color: #333333;
font-family: "Arial Normal", "Arial";
}
.list-content-text {
font-size: 16px;
color: #333333;
margin-bottom: 1.5%;
}
span {
color: #aaaaaa;
}
</style>
<template>
<div class="divBackground">
<title-bar :title="title" @click-right="onClickRight">
<van-icon slot="left" name="cross" size="24" />
<template v-if="smd || grsmyx" #right>
<slot name="right">提交</slot>
</template>
</title-bar>
<div class="marketing-processing-content">
<div class="customer-information">
<div class="customer-information-top" @click="selectDetail">
<div class="avatar">
<svg style="width: 100%" class="icon" aria-hidden="true">
<use xlink:href="#icon-gongsimingcheng"></use>
</svg>
</div>
<div class="customer-name">
<div>{{ cusName }}</div>
</div>
</div>
<div class="itemcusTypeStyle">
<div v-if="CUSTOMERTYPE != '' && !smd">{{ CUSTOMERTYPE }}</div>
<div v-if="smd && CUSTOMERTYPE && CUSTOMERTYPE.length > 0" v-for="(itemcusType, index) in CUSTOMERTYPE" :key="index + 'a'">{{ itemcusType }}</div>
</div>
<div class="customer-information-central">
<table-single-view v-if="dataBasic.cusAddr != ''" :keyValue="keyValueSingle" :data="dataBasic"></table-single-view>
<div v-if="!smd" @click="time_axis"><img src="@/assets/svg/time-axis-logo.svg" alt="" />&nbsp;&nbsp;时光轴</div>
</div>
<div class="sign-in">
<!-- 百度地图-->
<baidu-map class="bm-view" ak="FP7zWR4e8lhxZ6v0IicoG1R5" :center="{ lng: this.upoint.lng, lat: this.upoint.lat }" :zoom="15" @ready="mapReady"> </baidu-map>
</div>
<div class="operate">
<!-- <button><img src="../../../../assets/svg/blue-navigation-logo.svg" alt="" />导航</button>-->
<button>添加日程</button>
</div>
</div>
<div class="details v-scroller">
<!-- 拜访信息-->
<customer-visit v-if="cv"></customer-visit>
<!-- 招商引资企业营销-->
<marketing-special v-if="ms"></marketing-special>
<!-- 公司精准信息摸排-->
<information-pattern v-if="ip"></information-pattern>
<!-- 精准营销专项-->
<business-marketing v-if="bm"></business-marketing>
<!-- 小微条线投放储备清单-->
<put-in-reserve v-if="ph"></put-in-reserve>
<!-- 营销计划-->
<market-plan v-if="mp"></market-plan>
<!-- 电话营销-->
<doing-market-by-phone v-if="dmbp"></doing-market-by-phone>
<!--中小营销-->
<SMEMarketingDetail :submitClick.sync="saveSubmit" v-if="smd"></SMEMarketingDetail>
<!--个人上门营销-->
<JhdbxqView :grsmyxSubmitClick.sync="saveSubmit" v-if="grsmyx"></JhdbxqView>
</div>
</div>
</div>
</template>
<script lang="ts">
import { Component, Vue } from "vue-property-decorator";
import TitleBar from "@/components/general/TitleBar.vue";
import TableSingleView from '@/public/TableSingleView.vue';
import { BaiduMap, BmScale, BmNavigation, BmInfoWindow } from "vue-baidu-map";
import CustomerVisit from "@/components/workbench/upcoming-tasks-content/upcoming/marketing-task/CustomerVisit.vue";
import BusinessMarketing from "@/components/workbench/upcoming-tasks-content/upcoming/marketing-task/BusinessMarketing.vue";
import InformationPattern from "@/components/workbench/upcoming-tasks-content/upcoming/marketing-task/InformationPattern.vue";
import MarketingSpecial from "@/components/workbench/upcoming-tasks-content/upcoming/marketing-task/MarketingSpecial.vue";
import SMEMarketingDetail from "@/components/workbench/SME-common-functions/SMEMarketingDetail.vue";
import DoingMarketByPhone from "@/views/marketing-mgt/DoingMarketByPhone.vue";
import MarketPlan from "@/views/marketing-mgt/MarketPlan.vue";
import AccurateVisitors from "@/views/marketing-mgt/AccurateVisitors.vue";
import AccurateCustomer from "@/views/marketing-mgt/AccurateCustomer.vue";
import PutInReserve from "@/views/marketing-mgt/PutInReserve.vue";
import JhdbxqView from "@/views/marketing-mgt/personal/JhdbxqView.vue";
/**
* @Description 营销处理
* @Author JiangTao
* @Date 2021-11-10 下午 03:53
*/
@Component({
name: "MarketingTask",
components: { TitleBar, BaiduMap, BmScale, BmNavigation, BmInfoWindow, CustomerVisit, BusinessMarketing, InformationPattern, MarketingSpecial, DoingMarketByPhone, MarketPlan, AccurateVisitors, AccurateCustomer, PutInReserve, SMEMarketingDetail, TableSingleView, JhdbxqView },
})
export default class MarketingTask extends Vue {
title: any = {};
avatar = "";
saveSubmit = () => {}; // 保存并提交函数
cusName = "";
CUSTOMERTYPE = this.$store.getters.getCusInfo.CUSTOMERTYPE || "";
keyValueSingle = {
cusAddr: '客户地址',
}
dataBasic = {
cusAddr: this.$store.getters.getCusInfo.cusAddr || ""
}
BMapGL: any = {};
map: any = {};
//自己当前定位
pointA: any = {};
//客户定位
pointB: any = {};
cv = false;
ms = false;
ip = false;
bm = false;
ph = false;
mp = false;
dmbp = false;
smd = false;
grsmyx = false;
mounted() {
this.CUSTOMERTYPE = this.$store.getters.getCusInfo.CUSTOMERTYPE || "";
this.cusName = this.$store.getters.getCusInfo.cusName || this.$store.getters.getCusInfo.CUSTOMERNAME || this.$store.getters.getCusInfo.customerName;
this.title = this.$route.query.type;
this.cv = false;
this.ms = false;
this.ip = false;
this.bm = false;
this.ph = false;
this.mp = false;
this.dmbp = false;
this.smd = false;
this.grsmyx = false;
if (this.title == "客户拜访") {
this.cv = true;
} else if (this.title == "精准营销专项") {
this.ms = true;
} else if (this.title == "公司精准信息摸排") {
this.ip = true;
} else if (this.title == "招商引资企业营销") {
this.bm = true;
} else if (this.title == "任务处理") {
this.ph = true;
} else if (this.title == "待办详情") {
this.dmbp = true;
} else if (this.title === "营销计划") {
this.title = "任务处理";
this.mp = true;
} else if (this.title === "续贷客户营销") {
this.smd = true;
console.log("~~~~~~~~~~~~~~", this.$store.getters.getCusInfo);
this.CUSTOMERTYPE = this.$store.getters.getCusInfo.cusType;
} else if (this.title === "上门营销") {
this.grsmyx = true;
}
}
//客户位置坐标
upoint: any = { lng: 104.080998, lat: 30.595452 };
plugins = ["Scale"];
mapReady(bmap: any) {
this.BMapGL = bmap.BMap;
this.map = bmap.map;
}
//判断方式(加载页面及执行)
activated() {
}
onClickRight() {
this.saveSubmit();
}
/**
* @Description 查询详情
* @Author JiangTao
* @Date 2022-02-15 上午 11:34
*/
selectDetail() {
if (this.$store.getters.getCusInfo.CUSTOMERID != "") {
this.$store.commit('setCtfInstNo', this.$store.getters.getCusInfo);
this.$router.push({
path: '/PersonalDetails',
// query: {
// active: 0
// }
});
}
}
/**
* @Description 时光轴
* @Author JiangTao
* @Date 2022-02-14 下午 02:19
*/
time_axis() {
if (this.dmbp) {
this.$router.push({
path: "/perTelMarkTimeAxis",
});
}
}
}
</script>
<style scoped>
.marketing-processing-content {
width: 100%;
height: calc(100vh - 60px);
display: flex;
}
.customer-information {
width: 25%;
height: 100%;
padding: 2%;
border-right: 2px solid rgba(242, 242, 242, 1);
}
.customer-information-top {
width: 100%;
height: 60px;
display: flex;
align-items: center;
}
.avatar {
width: 20%;
}
.customer-name > div:nth-child(1) {
font-weight: bold;
font-size: 18px;
color: #333333;
font-family: "Arial Normal", "Arial";
}
.itemcusTypeStyle {
display: flex;
flex-wrap: wrap;
}
.itemcusTypeStyle > div {
width: auto;
padding: 1% 10px 0 10px;
margin: 5px;
text-align: center;
border: 1px solid rgba(215, 215, 215, 1);
border-radius: 3px;
font-size: 12px;
color: #333333;
font-family: "Arial Normal", "Arial";
}
.customer-information-central {
width: 100%;
margin-top: 7%;
}
.customer-information-central table {
width: 100%;
}
.customer-information-central table tr > td:nth-child(1) {
font-size: 14px;
color: #999999;
line-height: 30px;
}
.customer-information-central table tr > td:nth-child(2) {
font-size: 14px;
color: #333333;
font-family: "Arial Normal", "Arial";
}
.customer-information-central table tr:nth-child(4) > td {
padding-top: 4%;
color: #02a7f0;
}
.sign-in {
width: 100%;
height: 35%;
margin-top: 10%;
}
.operate {
width: 100%;
margin-top: 3%;
}
.operate > button:nth-child(1) {
width: 50%;
height: 36px;
margin: 7% auto 7% auto;
display: block;
background-color: white;
border: 1px solid #02a7f0;
color: #02a7f0;
border-radius: 20px;
font-size: 14px;
font-family: "Arial Normal", "Arial";
outline: none;
}
.operate > button:nth-child(2) {
width: 50%;
height: 36px;
margin: 0 auto;
display: block;
background-color: white;
border: 1px solid rgba(215, 215, 215, 1);
color: #999999;
border-radius: 20px;
font-size: 14px;
font-family: "Arial Normal", "Arial";
}
.bm-view {
width: 100%;
height: 100%;
}
.details {
width: 75%;
height: 91%;
margin: 2% 2% 5% 3%;
}
.divBackground {
background-color: white;
}
::v-deep .van-nav-bar__right {
padding-top: 16px;
}
</style>
<template>
<div>
<title-bar title="新增营销任务" @clickLeft="onClick">
<van-icon slot="left" name="cross" size="24" />
</title-bar>
<div class="formdata">
<van-form @submit="onSubmit">
<div class="v-list d-page d-scroll-container doubleRow">
<mobile-input label="单位名称:" label-width="10px" input-align="left" :rules="[{ required: true, message: '' }]" placeholder="请输入单位名称" :required="true" name="customerName" v-model="customerName" size="small" />
<div class="choice">
<div class="choice-title">是否优易贷入库:<span style="font-size: 20px;color: red">*</span></div>
<div class="choice-flag">
<div ref="isYydInstore_yes" @click="isYydInstore_yes"></div>
<div ref="isYydInstore_no" @click="isYydInstore_no"></div>
</div>
</div>
<div class="choice">
<div class="choice-title">是否代发:<span style="font-size: 20px;color: red">*</span></div>
<div class="choice-flag">
<div ref="isReplace_yes" @click="isReplace_yes"></div>
<div ref="isReplace_no" @click="isReplace_no"></div>
</div>
</div>
<d-select label="渠道类型:" :rules="[{ required: true, message: '' }]" placeholder="请选择渠道类型" :required="true" border="true" v-model="cerType" sfield="cerType" size="small"></d-select>
<mobile-input label="营销机构:" :border="false" label-width="10px" input-align="left" name="coreName" :readonly="true" v-model="coreName" size="small" />
<mobile-input label="营销人员:" :border="false" label-width="10px" input-align="left" name="exeUser" :readonly="true" v-model="exeUser" size="small" />
<d-datetime-picker label="预计营销时间:" :rules="[{ required: true, message: '' }]" placeholder="请选择预计营销时间" v-model="estimatedMarketTime" :border="true" :required="true"></d-datetime-picker>
<mobile-input type="number" label="预计全口径消费投放(万):" :rules="[{ required: true, message: '' }]" placeholder="请输入预计全口径消费投放" label-width="10px" input-align="left" :required="true" name="expectedFull" v-model="expectedFull" size="small" />
<d-select label="营销方式:" :rules="[{ required: true, message: '' }]" placeholder="请选择营销方式" :required="true" border="true" v-model="marketMode" sfield="marketMode" size="small"></d-select>
<mobile-input label="管户人:" label-width="10px" input-align="left" name="holdManagerName" v-model="holdManagerName" size="small" />
<mobile-input label="客户地址:" :rules="[{ required: true, message: '' }]" type="textarea" :maxlength="200" :required="true" :rows="3" label-width="10px" input-align="left" name="cusAddr" v-model="cusAddr" placeholder="请输入客户地址" size="small" />
</div>
<div class="formbutton">
<van-button round type="info" size="normal" color="#FF574C">确定</van-button>
</div>
</van-form>
<base-popup v-model="flagPopup" title="营销选择">
<div class="popup-content">
</div>
</base-popup>
</div>
</div>
</template>
<script lang="ts">
import { Component, Vue } from "vue-property-decorator";
import TitleBar from "@/components/general/TitleBar.vue";
import BasePopup from "@/components/general/BasePopup.vue";
import { Grid, GridItem } from "vant";
import MobileInput from "@/components/general/form/MobileInput.vue";
import IncomeInformation from "@/components/customer-information/family-financial-information/IncomeInformation.vue";
import DSelect from "@/components/general/form/DSelect.vue";
import DDatetimePicker from "@/components/general/form/DDatetimePicker.vue";
import { NativeUI } from "@/public/ts/NativeUI";
import IF from "@/public/factory/InterFaceFactory";
import applicationApi from '@/constants/api/ms-application/application.api';
Vue.use(Grid);
Vue.use(GridItem);
/**
* @Description 新增营销任务
* @Author JiangTao
* @Date 2022-02-12 下午 02:48
*/
@Component({
name: "PerMarketingAdd",
components: {
IncomeInformation,
TitleBar,
MobileInput,
DSelect,
DDatetimePicker,
BasePopup
},
})
export default class PerMarketingAdd extends Vue {
customerName = ''; //客户名称
cerType = ''; //渠道类型
isYydInstore = '1'; //是否优易贷入库
coreName = sessionStorage.getItem('ORGNAME'); //参考网点
marketMode = ''; //营销方式
isReplace = '1'; //是否代发
holdManagerName = ''; //管户人
expectedFull = ''; //预计全口径消费投放
exeUser = sessionStorage.getItem('userName'); //营销人员
estimatedMarketTime = ''; //预计营销时间
cusAddr = ''; //客户地址
flagPopup = false;
title = '新增营销任务';
currentDate2 = new Date();
minDate2 = new Date();
maxDate2 = new Date(new Date().getFullYear() + 20, 1, 1);
//是否优易贷入库
isYydInstore_yes() {
this.isYydInstore = '1';
(this.$refs.isYydInstore_yes as any).style.border = '0';
(this.$refs.isYydInstore_yes as any).style.backgroundColor = '#FF574C';
(this.$refs.isYydInstore_yes as any).style.color = '#fff';
(this.$refs.isYydInstore_no as any).style.border = '1px solid #e8e8e8';
(this.$refs.isYydInstore_no as any).style.backgroundColor = '#fff';
(this.$refs.isYydInstore_no as any).style.color = '#333333';
};
isYydInstore_no() {
this.isYydInstore = '2';
(this.$refs.isYydInstore_no as any).style.border = '0';
(this.$refs.isYydInstore_no as any).style.backgroundColor = '#FF574C';
(this.$refs.isYydInstore_no as any).style.color = '#fff';
(this.$refs.isYydInstore_yes as any).style.border = '1px solid #e8e8e8';
(this.$refs.isYydInstore_yes as any).style.backgroundColor = '#fff';
(this.$refs.isYydInstore_yes as any).style.color = '#333333';
};
//是否代发
isReplace_yes() {
this.isReplace = '1';
(this.$refs.isReplace_yes as any).style.border = '0';
(this.$refs.isReplace_yes as any).style.backgroundColor = '#FF574C';
(this.$refs.isReplace_yes as any).style.color = '#fff';
(this.$refs.isReplace_no as any).style.border = '1px solid #e8e8e8';
(this.$refs.isReplace_no as any).style.backgroundColor = '#fff';
(this.$refs.isReplace_no as any).style.color = '#333333';
};
isReplace_no() {
this.isReplace = '2';
(this.$refs.isReplace_no as any).style.border = '0';
(this.$refs.isReplace_no as any).style.backgroundColor = '#FF574C';
(this.$refs.isReplace_no as any).style.color = '#fff';
(this.$refs.isReplace_yes as any).style.border = '1px solid #e8e8e8';
(this.$refs.isReplace_yes as any).style.backgroundColor = '#fff';
(this.$refs.isReplace_yes as any).style.color = '#333333';
};
onClick() {
console.log("111");
}
mounted() {
this.isYydInstore = '1';
(this.$refs.isYydInstore_yes as any).style.border = '0';
(this.$refs.isYydInstore_yes as any).style.backgroundColor = '#FF574C';
(this.$refs.isYydInstore_yes as any).style.color = '#fff';
(this.$refs.isYydInstore_no as any).style.border = '1px solid #e8e8e8';
(this.$refs.isYydInstore_no as any).style.backgroundColor = '#fff';
(this.$refs.isYydInstore_no as any).style.color = '#333333';
this.isReplace = '1';
(this.$refs.isReplace_yes as any).style.border = '0';
(this.$refs.isReplace_yes as any).style.backgroundColor = '#FF574C';
(this.$refs.isReplace_yes as any).style.color = '#fff';
(this.$refs.isReplace_no as any).style.border = '1px solid #e8e8e8';
(this.$refs.isReplace_no as any).style.backgroundColor = '#fff';
(this.$refs.isReplace_no as any).style.color = '#333333';
};
onSubmit() {
let param = {
customerName: this.customerName,
cerType: this.cerType,
isYydInstore: this.isYydInstore,
marketMode: this.marketMode,
isReplace: this.isReplace,
holdManagerName: this.holdManagerName,
expectedFull: this.expectedFull,
exeUser: this.exeUser,
estimatedMarketTime: this.estimatedMarketTime,
cusAddr: this.cusAddr,
tc: 'MCEP'
};
NativeUI.showWaiting('正在查询...');
IF.transferDataInter(applicationApi.AddMarketing, param).then((res: any) => {
NativeUI.closeWaiting();
if (res.code != '1') {
NativeUI.toast(res.msg);
} else {
NativeUI.toast("添加成功!");
setTimeout(() => {
this.$router.go(-1);
}, 2500);
}
});
}
}
</script>
<style scoped>
.doubleRow {
display: grid;
width: 80%;
grid-template-columns: 50% 50%;
margin: 0 auto;
}
.doubleRow > div:nth-child(11) {
grid-column-start: 1;
grid-column-end: 3;
grid-row-start: 6;
grid-row-end: 7;
}
.choice {
background-color: white;
display: flex;
justify-content: flex-start;
align-items: center;
padding: 0.7rem 1rem;
}
.choice-title {
width: 116px;
font-size: 14px;
color: #999999;
text-align: right;
margin-right: 7px;
}
.choice-flag {
display: flex;
justify-content: flex-end;
}
.choice-flag div {
width: 60px;
border: 1px solid #e8e8e8;
font-size: 13px;
height: 34px;
display: flex;
justify-content: center;
align-items: center;
}
.choice-flag > div:nth-child(1) {
border-top-left-radius: 5px;
border-bottom-left-radius: 5px;
}
.choice-flag > div:nth-child(2) {
border-top-right-radius: 5px;
border-bottom-right-radius: 5px;
}
::v-deep .d-form-field {
padding: 0.7rem 1rem;
}
::v-deep .van-field__label {
width: 110px !important;
text-align: right;
}
.formdata {
height: calc(100vh - 60px);
padding-top: 3%;
overflow-y: auto;
}
::v-deep .formdata form{
width: 95%;
}
.formbutton {
display: flex;
align-items: center;
justify-content: center;
}
::v-deep .formbutton button {
width: 150px;
margin: 10px 30px;
}
::v-deep .d-form-field .van-field__label {
font-size: 14px !important;
}
::v-deep .van-field__body {
width: 100%;
}
::v-deep .van-field__value {
display: flex;
align-items: center;
}
</style>
<template>
<div class="divBackground">
<title-bar :title="title" @clickLeft="onClick">
<van-icon slot="left" name="cross" size="24" />
</title-bar>
<van-form @submit="onSubmit">
<button
@click="taskStatusData = '2'"
style="background-color: rgba(0, 0, 0, 0);border: rgba(0, 0, 0, 0);position: absolute;right: 0;top: 0;color: white;z-index: 99999999;font-size: 14px;height: 60px;width: 46px;padding-top: 16px;display: flex;align-items: center;justify-content: center;outline: none;"
>
提交
</button>
<div class="marketing-processing-content">
<div v-if="createType != '' && createType != '3'" class="customer-information">
<div class="customer-information-top">
<div class="avatar">
<svg style="width: 100%" class="icon" aria-hidden="true">
<use xlink:href="#icon-gongsimingcheng"></use>
</svg>
</div>
<div class="customer-name">
<div>{{ customerName }}</div>
<div>{{ marketTypeName }}</div>
</div>
</div>
<!-- <div class="customer-information-central">-->
<!-- <table-single-view v-if="dataBasic.cusAddr != ''" :keyValue="keyValueSingle" :data="dataBasic"></table-single-view>-->
<!-- <div v-if="!smd" @click="time_axis"><img src="@/assets/svg/time-axis-logo.svg" alt="" />&nbsp;&nbsp;时光轴</div>-->
<!-- </div>-->
<div class="sign-in">
<!-- 百度地图-->
<baidu-map class="bm-view" ak="FP7zWR4e8lhxZ6v0IicoG1R5" :center="{ lng: this.upoint.lng, lat: this.upoint.lat }" :zoom="15" @ready="mapReady"> </baidu-map>
</div>
<div class="operate">
<!-- <button><img src="../../../../assets/svg/blue-navigation-logo.svg" alt="" />导航</button>-->
<!-- <button>添加日程</button>-->
</div>
</div>
<div class="details v-scroller">
<div class="formStyle">
<sub-title>营销详情</sub-title>
<table style="width: 95%; margin: 2% auto">
<tr v-if="createType == '' || createType == '3'">
<td>
<mobile-input :border="true" :rules="[{ required: true, message: '' }]" placeholder="请输入" label="分支行名字:" label-width="10px" input-align="left" name="branchName" v-model="markData.branchName" size="small" />
</td>
<!-- <td>-->
<!-- <mobile-input :border="true" :rules="[{ required: true, message: '' }]" placeholder="请输入" label="客户名称:" label-width="10px" input-align="left" name="customerName" v-model="markData.customerName" size="small" />-->
<!-- </td>-->
</tr>
<tr>
<td>
<mobile-input :border="true" :rules="[{ required: true, message: '' }]" placeholder="请输入" label="招商引资企业/项目名称:" label-width="10px" input-align="left" name="investmentBusinessName" v-model="markData.investmentBusinessName" size="small" />
</td>
<td>
<d-select :rules="[{ required: true, message: '' }]" placeholder="请选择" label="招引企业类型:" :required="true" border="true" v-model="markData.investmentBusinessType" sfield="ENTERPRISES_TYPE" size="small"></d-select>
</td>
</tr>
<tr>
<td colspan="2">
<div class="checkbox">
<div class="checkbox-title"><span style="color: red;margin-left: -7px">*</span>营销目标:</div>
<div class="checkbox-data">
<div>
<div :style="FZYWStyle" @click="FZYW">
负债业务
<img
v-if="this.FZYW_data == '1'"
style="width: 1.2rem;height: 1.2rem;position: absolute;bottom: 0;right: 0;"
src="@/assets/images/orange-subscript.png"
alt=""
/>
</div>
<div :style="ZCYWStyle" @click="ZCYW">
资产业务
<img
v-if="this.ZCYW_data == '1'"
style="width: 1.2rem;height: 1.2rem;position: absolute;bottom: 0;right: 0;"
src="@/assets/images/orange-subscript.png"
alt=""
/>
</div>
<div :style="XXMPStyle" @click="XXMP">
信息摸排
<img
v-if="this.XXMP_data == '1'"
style="width: 1.2rem;height: 1.2rem;position: absolute;bottom: 0;right: 0;"
src="@/assets/images/orange-subscript.png"
alt=""
/>
</div>
<div :style="QTStyle" @click="QT">
其他
<img
v-if="this.QT_data == '1'"
style="width: 1.2rem;height: 1.2rem;position: absolute;bottom: 0;right: 0;"
src="@/assets/images/orange-subscript.png"
alt=""
/>
</div>
</div>
<div :style="marketTargetCheck">请选择营销目标</div>
</div>
</div>
</td>
</tr>
<tr>
<td>
<d-select :rules="[{ required: true, message: '' }]" placeholder="请选择" label="客户行业:" :required="true" border="true" v-model="markData.customrIndustryClass" sfield="CUSTOMR_INDUSTRY_CLASS" size="small"></d-select>
</td>
<td>
<d-select :rules="[{ required: true, message: '' }]" placeholder="请选择" label="资本市场:" :required="true" border="true" v-model="markData.capitalMarket" sfield="CAPITAL_MARKET" size="small"></d-select>
</td>
</tr>
<tr>
<td>
<mobile-input :border="true" :rules="[{ required: true, message: '' }]" placeholder="XX市XX(县)" label="落地区域:" label-width="10px" input-align="left" name="region" v-model="markData.region" size="small" />
</td>
<td>
<mobile-input :border="true" placeholder="请输入" label="项目总投(亿元):" @blur.native.capture="projectTotalAmountData" label-width="10px" input-align="left" type="number" name="projectTotalAmount" v-model="markData.projectTotalAmount " size="small" />
</td>
</tr>
<tr>
<td>
<mobile-input :border="true" placeholder="请输入" label="拟融资金额(亿元):" @blur.native.capture="proposedFinancingAmountData" label-width="10px" input-align="left" type="number" name="proposedFinancingAmount" v-model="markData.proposedFinancingAmount " size="small" />
</td>
<td>
<mobile-input :border="true" :rules="[{ required: true, message: '' }]" placeholder="请输入" label="融资期限(年):" label-width="10px" input-align="left" type="digit" name="financingTerm" v-model="markData.financingTerm " size="small" />
</td>
</tr>
<tr>
<td>
<mobile-input :border="true" :rules="[{ required: true, message: '' }]" @blur.native.capture="rateData" placeholder="请输入" label="利率(%):" label-width="10px" input-align="left" type="number" name="rate" v-model="markData.rate " size="small" />
</td>
</tr>
<tr>
<td colspan="2">
<mobile-input :border="true" :rules="[{ required: true, message: '' }]" placeholder="请输入" label="融资模式及企业需求:" type="textarea" :maxlength="500" :rows="3" label-width="10px" input-align="left" name="financingModel" v-model="markData.financingModel" size="small" />
</td>
</tr>
<tr>
<td>
<d-select :rules="[{ required: true, message: '' }]" placeholder="请选择" label="是否国有企业参股:" :required="true" border="true" v-model="markData.stateOwnedJoin" sfield="YesOrNoOrUnd" size="small"></d-select>
</td>
<td>
<d-select :rules="[{ required: true, message: '' }]" placeholder="请选择" label="招引项目当前进展:" :required="true" border="true" v-model="markData.projectProgress" sfield="INVITPROJECT_PROGESS" size="small"></d-select>
</td>
</tr>
<tr>
<td colspan="2">
<mobile-input :border="true" :rules="[{ required: true, message: '' }]" placeholder="拟投资项目概况,建设内容、总投、投资模式、股东情况、当前进展等" label="项目概述:" type="textarea" :maxlength="500" :rows="3" label-width="10px" input-align="left" name="projectSummary" v-model="markData.projectSummary" size="small" />
</td>
</tr>
<tr>
<td colspan="2">
<div class="checkbox">
<div class="checkbox-title"><span style="color: red;margin-left: -7px">*</span>营销进展:</div>
<div class="checkbox-data">
<div>
<div :style="QQYXStyle" @click="QQYX">
前期营销
<img
v-if="this.QQYX_data == '1'"
style="width: 1.2rem;height: 1.2rem;position: absolute;bottom: 0;right: 0;"
src="@/assets/images/orange-subscript.png"
alt=""
/>
</div>
<div :style="HZYXStyle" @click="HZYX">
初步达成合作意向
<img
v-if="this.HZYX_data == '1'"
style="width: 1.2rem;height: 1.2rem;position: absolute;bottom: 0;right: 0;"
src="@/assets/images/orange-subscript.png"
alt=""
/>
</div>
<div :style="ZLSJStyle" @click="ZLSJ">
资料收集中
<img
v-if="this.ZLSJ_data == '1'"
style="width: 1.2rem;height: 1.2rem;position: absolute;bottom: 0;right: 0;"
src="@/assets/images/orange-subscript.png"
alt=""
/>
</div>
<div :style="QXSPStyle" @click="QXSP">
分支行权限内已审批
<img
v-if="this.QXSP_data == '1'"
style="width: 1.2rem;height: 1.2rem;position: absolute;bottom: 0;right: 0;"
src="@/assets/images/orange-subscript.png"
alt=""
/>
</div>
<div :style="YBSPStyle" @click="YBSP">
已报总行授信审批
<img
v-if="this.YBSP_data == '1'"
style="width: 1.2rem;height: 1.2rem;position: absolute;bottom: 0;right: 0;"
src="@/assets/images/orange-subscript.png"
alt=""
/>
</div>
<div :style="SXSPStyle" @click="SXSP">
完成授信审批
<img
v-if="this.SXSP_data == '1'"
style="width: 1.2rem;height: 1.2rem;position: absolute;bottom: 0;right: 0;"
src="@/assets/images/orange-subscript.png"
alt=""
/>
</div>
<div :style="YTYStyle" @click="YTY">
已提用
<img
v-if="this.YTY_data == '1'"
style="width: 1.2rem;height: 1.2rem;position: absolute;bottom: 0;right: 0;"
src="@/assets/images/orange-subscript.png"
alt=""
/>
</div>
</div>
<div :style="marketProgressCheck">请选择营销进展</div>
</div>
</div>
</td>
</tr>
<tr>
<td colspan="2">
<mobile-input :border="true" :rules="[{ required: true, message: '' }]" placeholder="包括不限于营销切入点、关键人、营销关键点,资产业务进展等" label="营销进展详述:" type="textarea" :maxlength="500" :rows="3" label-width="10px" input-align="left" name="marketExplain" v-model="markData.marketExplain" size="small" />
</td>
</tr>
<tr>
<td>
<d-select :rules="[{ required: true, message: '' }]" placeholder="请选择" label="是否已开户:" :required="true" border="true" v-model="markData.openAccount" sfield="YesOrNo" size="small"></d-select>
</td>
<td>
<mobile-input :border="true" placeholder="请输入" label="账户及资本归集类型:" label-width="10px" input-align="left" name="imputation" v-model="markData.imputation" size="small" />
</td>
</tr>
<tr>
<td>
<mobile-input :border="true" placeholder="请输入其它事项" label="其它:" label-width="10px" input-align="left" name="other" v-model="markData.other" size="small" />
</td>
</tr>
</table>
<div class="operateButton">
<button @click="taskStatusData = '1'">保存</button>
</div>
</div>
</div>
</div>
</van-form>
<base-popup :safe-area-inset-bottom="true" :showCancel="showCancel" showConfirm="true" @confirm="SubmitMark" :confirmText="confirmText" v-model="show" title="提交营销任务">
<div class="popup-content">
<div v-if="operate == '1'" style="font-size: 24px" class="popup-data">
确定提交该营销任务?
</div>
<div v-if="operate == '2'" class="popup-data">
<svg style="width: 85%;margin: 0 auto" class="icon" aria-hidden="true">
<use xlink:href="#icon-wancheng"></use>
</svg>
<div style="font-size: 24px">提交成功!</div>
</div>
</div>
</base-popup>
</div>
</template>
<script lang="ts">
import { Component, Vue } from "vue-property-decorator";
import TitleBar from "@/components/general/TitleBar.vue";
import TableSingleView from '@/public/TableSingleView.vue';
import { BaiduMap, BmScale, BmNavigation, BmInfoWindow } from "vue-baidu-map";
import applicationApi from '@/constants/api/ms-application/application.api';
import { NativeUI } from "@/public/ts/NativeUI";
import IF from "@/public/factory/InterFaceFactory";
import { Popup } from 'vant';
import BasePopup from "@/components/general/BasePopup.vue";
Vue.use(Popup);
/**
* @Description 营销处理
* @Author JiangTao
* @Date 2021-11-10 下午 03:53
*/
@Component({
name: "ComAttractMarkDetail",
components: { TitleBar, BaiduMap, BmScale, BmNavigation, BmInfoWindow, TableSingleView, BasePopup},
})
export default class ComAttractMarkDetail extends Vue {
title = '营销详情';
taskStatusData = '1'; //提交状态
show = false;
operate = '';
UpdateOrAdd = true; //判断是否新增or更新 true =新增,false =更新
createType = ''; //任务来源
markTasknum = ''; //营销任务编号
//客户位置坐标
upoint: any = { lng: 104.080998, lat: 30.595452 };
showCancel = false;
confirmText = '';
customerName = ''; //客户名称
marketTypeName = ''; //营销类型
markData = {
branchName: '', //分支行名字
investmentBusinessName: '', //招商引资企业/项目名称
investmentBusinessType: '', //招引企业类型
marketTarget: '', //营销目标
customrIndustryClass: '', //客户行业
capitalMarket: '', //资本市场
region: '', //落地区域
projectTotalAmount: '', //项目总投
proposedFinancingAmount: '', //拟融资金额
financingTerm: '', //融资期限
rate: '', //利率
financingModel: '', //融资模式及企业需求
stateOwnedJoin: '', //是否国有企业参股
projectProgress: '', //招引项目当前进展
projectSummary: '', //项目概述
marketProgress: '', //营销进展
marketExplain: '', //营销进展详述
openAccount: '', //是否已开户
imputation: '', //账户及资本归集类型
other: '', //其他
};
checkboxStyle = {
'border-color': '#FF574C',
'background-color': '#fff3f3',
'color': '#FF574C',
};
//营销目标
FZYW_data = '0'; //负债业务
ZCYW_data = '0'; //资产业务
XXMP_data = '0'; //信息摸排
QT_data = '0'; //其他
FZYWStyle = {}; //负债业务
ZCYWStyle = {}; //资产业务
XXMPStyle = {}; //信息摸排
QTStyle = {}; //其他
marketTargetCheck = {}; //校验判断
//营销进展
QQYX_data = '0'; //前期营销
HZYX_data = '0'; //初步达成合作意向
ZLSJ_data = '0'; //资料收集中
QXSP_data = '0'; //分支行权限内已审批
YBSP_data = '0'; //已报总行授信审批
SXSP_data = '0'; //完成授信审批
YTY_data = '0'; //已提用
QQYXStyle = {}; //前期营销
HZYXStyle = {}; //初步达成合作意向
ZLSJStyle = {}; //资料收集中
QXSPStyle = {}; //分支行权限内已审批
YBSPStyle = {}; //已报总行授信审批
SXSPStyle = {}; //完成授信审批
YTYStyle = {}; //已提用
marketProgressCheck = {}; //校验判断
mounted() {
this.showCancel = true;
this.operate = '1'
this.marketTargetCheck = {
'display': 'none'
};
this.marketProgressCheck = {
'display': 'none'
};
this.createType = this.$store.getters.getCusInfo.createType || '';
this.taskStatusData = '1';
if (this.createType != '') {
this.customerName = this.$store.getters.getCusInfo.customerName || '';
this.marketTypeName = this.$store.getters.getCusInfo.marketTypeName || '';
this.detailByTaskNumAttract();
}
};
mapReady() {
// this.BMapGL = bmap.BMap;
// this.map = bmap.map;
}
projectTotalAmountData() {
if ((this.markData as any).projectTotalAmount < 0) {
(this.markData as any).projectTotalAmount = '';
}
}
proposedFinancingAmountData() {
if ((this.markData as any).proposedFinancingAmount < 0) {
(this.markData as any).proposedFinancingAmount = '';
}
}
rateData() {
if ((this.markData as any).rate < 0) {
(this.markData as any).rate = '';
}
}
//营销目标
FZYW() {
if (this.FZYWStyle != this.checkboxStyle) {
this.marketTargetCheck = {
'display': 'none'
};
this.FZYW_data = '1';
this.FZYWStyle = this.checkboxStyle;
} else {
this.FZYW_data = '0';
this.FZYWStyle = {};
}
};
ZCYW() {
if (this.ZCYWStyle != this.checkboxStyle) {
this.marketTargetCheck = {
'display': 'none'
};
this.ZCYW_data = '1';
this.ZCYWStyle = this.checkboxStyle;
} else {
this.ZCYW_data = '0';
this.ZCYWStyle = {};
}
};
XXMP() {
if (this.XXMPStyle != this.checkboxStyle) {
this.marketTargetCheck = {
'display': 'none'
};
this.XXMP_data = '1';
this.XXMPStyle = this.checkboxStyle;
} else {
this.XXMP_data = '0';
this.XXMPStyle = {};
}
};
QT() {
if (this.QTStyle != this.checkboxStyle) {
this.marketTargetCheck = {
'display': 'none'
};
this.QT_data = '1';
this.QTStyle = this.checkboxStyle;
} else {
this.QT_data = '0';
this.QTStyle = {};
}
};
//营销进展
QQYX() {
if (this.QQYXStyle != this.checkboxStyle) {
this.marketProgressCheck = {
'display': 'none'
};
this.QQYX_data = '1';
this.QQYXStyle = this.checkboxStyle;
} else {
this.QQYX_data = '0';
this.QQYXStyle = {};
}
};
HZYX() {
if (this.HZYXStyle != this.checkboxStyle) {
this.marketProgressCheck = {
'display': 'none'
};
this.HZYX_data = '1';
this.HZYXStyle = this.checkboxStyle;
} else {
this.HZYX_data = '0';
this.HZYXStyle = {};
}
};
ZLSJ() {
if (this.ZLSJStyle != this.checkboxStyle) {
this.marketProgressCheck = {
'display': 'none'
};
this.ZLSJ_data = '1';
this.ZLSJStyle = this.checkboxStyle;
} else {
this.ZLSJ_data = '0';
this.ZLSJStyle = {};
}
};
QXSP() {
if (this.QXSPStyle != this.checkboxStyle) {
this.marketProgressCheck = {
'display': 'none'
};
this.QXSP_data = '1';
this.QXSPStyle = this.checkboxStyle;
} else {
this.QXSP_data = '0';
this.QXSPStyle = {};
}
};
YBSP() {
if (this.YBSPStyle != this.checkboxStyle) {
this.marketProgressCheck = {
'display': 'none'
};
this.YBSP_data = '1';
this.YBSPStyle = this.checkboxStyle;
} else {
this.YBSP_data = '0';
this.YBSPStyle = {};
}
};
SXSP() {
if (this.SXSPStyle != this.checkboxStyle) {
this.marketProgressCheck = {
'display': 'none'
};
this.SXSP_data = '1';
this.SXSPStyle = this.checkboxStyle;
} else {
this.SXSP_data = '0';
this.SXSPStyle = {};
}
};
YTY() {
if (this.YTYStyle != this.checkboxStyle) {
this.marketProgressCheck = {
'display': 'none'
};
this.YTY_data = '1';
this.YTYStyle = this.checkboxStyle;
} else {
this.YTY_data = '0';
this.YTYStyle = {};
}
};
/**
* @Description 保存
* @Author JiangTao
* @Date 2022-02-19 下午 10:22
*/
onSubmit() {
this.markData.marketTarget = '';
if (this.FZYW_data == '1') {
this.markData.marketTarget = this.markData.marketTarget + '1,';
}
if (this.ZCYW_data == '1') {
this.markData.marketTarget = this.markData.marketTarget + '2,';
}
if (this.XXMP_data == '1') {
this.markData.marketTarget = this.markData.marketTarget + '3,';
}
if (this.QT_data == '1') {
this.markData.marketTarget = this.markData.marketTarget + '4,';
}
this.markData.marketProgress = '';
if (this.QQYX_data == '1') {
this.markData.marketProgress = this.markData.marketProgress + '1,';
}
if (this.HZYX_data == '1') {
this.markData.marketProgress = this.markData.marketProgress + '2,';
}
if (this.ZLSJ_data == '1') {
this.markData.marketProgress = this.markData.marketProgress + '3,';
}
if (this.QXSP_data == '1') {
this.markData.marketProgress = this.markData.marketProgress + '4,';
}
if (this.YBSP_data == '1') {
this.markData.marketProgress = this.markData.marketProgress + '5,';
}
if (this.SXSP_data == '1') {
this.markData.marketProgress = this.markData.marketProgress + '6,';
}
if (this.YTY_data == '1') {
this.markData.marketProgress = this.markData.marketProgress + '7,';
}
if (this.markData.marketTarget != '') {
this.marketTargetCheck = {
'display': 'none'
};
this.markData.marketTarget = this.markData.marketTarget.substring(0, this.markData.marketTarget.length - 1);
if (this.markData.marketProgress != '') {
this.marketProgressCheck = {
'display': 'none'
};
this.markData.marketProgress = this.markData.marketProgress.substring(0, this.markData.marketProgress.length - 1);
if (this.createType != '' || this.markTasknum != '') {
if (this.taskStatusData == '1') {
if (this.UpdateOrAdd) {
this.ComMarkAddAttract();
} else {
this.ComMarkUpdateAttract();
}
} else if (this.taskStatusData == '2') {
this.show = true;
this.operate = '1';
this.showCancel = true;
this.confirmText = "确定";
}
} else if (this.createType == '' && this.markTasknum == '') {
if (this.taskStatusData == '1') {
this.addsTaskManager();
} else if (this.taskStatusData == '2') {
this.show = true;
this.operate = '1';
this.showCancel = true;
this.confirmText = "确定";
}
}
} else {
this.marketProgressCheck = {};
}
} else {
this.marketTargetCheck = {};
}
};
SubmitMark() {
if (this.operate == '1') {
if (this.createType != '' || this.markTasknum != '') {
if (this.UpdateOrAdd) {
this.ComMarkAddAttract();
} else {
this.ComMarkUpdateAttract();
}
} else if (this.createType == '' && this.markTasknum == '') {
this.addsTaskManager();
}
} else if (this.operate == '2') {
this.show = false;
this.$router.go(-1);
}
};
/**
* @Description 客户经理新增多条对公客户任务
* @Author JiangTao
* @Date 2022-02-24
*/
addsTaskManager() {
const param = {
exeUser: sessionStorage.getItem('workcode'),
sendOrgId: sessionStorage.getItem('branchNo'),
estimatedMarketTime: '',
marketEndTime: '',
marketType: '2',
orgId: sessionStorage.getItem('branchNo'),
marketCustomerListPublics: [
{
customerId: '',
customerName: ''
}
],
tc: 'MCEP'
};
NativeUI.showWaiting('正在查询...');
return IF.transferDataInter(applicationApi.addsTaskManager, param).then((res: any) => {
console.log(res);
NativeUI.closeWaiting();
if (res.code == '1') {
this.markTasknum = res.data.tasknum;
if (this.UpdateOrAdd) {
this.ComMarkAddAttract();
} else {
this.ComMarkUpdateAttract();
}
}
});
};
/**
* @Description 对公招商引资企业营销台账任务表新增
* @Author JiangTao
* @Date 2022-02-19 下午 09:48
*/
ComMarkAddAttract() {
let param = {
tasknum: this.$store.getters.getCusInfo.tasknum || this.markTasknum,
branchName: this.markData.branchName, //分支行名字
investmentBusinessName: this.markData.investmentBusinessName, //招商引资企业/项目名称
investmentBusinessType: this.markData.investmentBusinessType, //招引企业类型
marketTarget: this.markData.marketTarget, //营销目标
customrIndustryClass: this.markData.customrIndustryClass, //客户行业
capitalMarket: this.markData.capitalMarket, //资本市场
region: this.markData.region, //落地区域
projectTotalAmount: this.markData.projectTotalAmount, //项目总投
proposedFinancingAmount: this.markData.proposedFinancingAmount, //拟融资金额
financingTerm: this.markData.financingTerm, //融资期限
rate: this.markData.rate, //利率
financingModel: this.markData.financingModel, //融资模式及企业需求
stateOwnedJoin: this.markData.stateOwnedJoin, //是否国有企业参股
projectProgress: this.markData.projectProgress, //招引项目当前进展
projectSummary: this.markData.projectSummary, //项目概述
marketProgress: this.markData.marketProgress, //营销进展
marketExplain: this.markData.marketExplain, //营销进展详述
openAccount: this.markData.openAccount, //是否已开户
imputation: this.markData.imputation, //账户及资本归集类型
other: this.markData.other, //其他
createUser: sessionStorage.getItem('userName'),
orgId: sessionStorage.getItem('branchNo'),
};
NativeUI.showWaiting('正在查询...');
return IF.transferDataInter(applicationApi.ComMarkAddAttract, param).then((res: any) => {
console.log(res);
NativeUI.closeWaiting();
if (res.code == '1') {
if (this.taskStatusData == '1') {
this.UpdateOrAdd = false;
NativeUI.toast('保存成功!');
} else if (this.taskStatusData == '2') {
this.updateMarketTaskStatus();
}
} else {
NativeUI.toast(res.msg);
}
});
};
/**
* @Description 对公招商引资企业营销台账任务表查询
* @Author JiangTao
* @Date 2022-02-19 下午 10:03
*/
detailByTaskNumAttract() {
let param = {
tasknum: this.$store.getters.getCusInfo.tasknum //任务编号
};
NativeUI.showWaiting('正在查询...');
return IF.transferDataInter(applicationApi.detailByTaskNumAttract, param).then((res: any) => {
console.log(res);
NativeUI.closeWaiting();
if (res.code == '1') {
if (res.data != 'null') {
this.markData = res.data;
this.UpdateOrAdd = false;
if (this.markData.marketTarget.indexOf('1') != -1) {
this.marketTargetCheck = {
'display': 'none'
};
this.FZYW_data = '1';
this.FZYWStyle = this.checkboxStyle;
}
if (this.markData.marketTarget.indexOf('2') != -1) {
this.marketTargetCheck = {
'display': 'none'
};
this.ZCYW_data = '1';
this.ZCYWStyle = this.checkboxStyle;
}
if (this.markData.marketTarget.indexOf('3') != -1) {
this.marketTargetCheck = {
'display': 'none'
};
this.XXMP_data = '1';
this.XXMPStyle = this.checkboxStyle;
}
if (this.markData.marketTarget.indexOf('4') != -1) {
this.marketTargetCheck = {
'display': 'none'
};
this.QT_data = '1';
this.QTStyle = this.checkboxStyle;
}
if (this.markData.marketProgress.indexOf('1') != -1) {
this.marketProgressCheck = {
'display': 'none'
};
this.QQYX_data = '1';
this.QQYXStyle = this.checkboxStyle;
}
if (this.markData.marketProgress.indexOf('2') != -1) {
this.marketProgressCheck = {
'display': 'none'
};
this.HZYX_data = '1';
this.HZYXStyle = this.checkboxStyle;
}
if (this.markData.marketProgress.indexOf('3') != -1) {
this.marketProgressCheck = {
'display': 'none'
};
this.ZLSJ_data = '1';
this.ZLSJStyle = this.checkboxStyle;
}
if (this.markData.marketProgress.indexOf('4') != -1) {
this.marketProgressCheck = {
'display': 'none'
};
this.QXSP_data = '1';
this.QXSPStyle = this.checkboxStyle;
}
if (this.markData.marketProgress.indexOf('5') != -1) {
this.marketProgressCheck = {
'display': 'none'
};
this.YBSP_data = '1';
this.YBSPStyle = this.checkboxStyle;
}
if (this.markData.marketProgress.indexOf('6') != -1) {
this.marketProgressCheck = {
'display': 'none'
};
this.SXSP_data = '1';
this.SXSPStyle = this.checkboxStyle;
}
if (this.markData.marketProgress.indexOf('7') != -1) {
this.marketProgressCheck = {
'display': 'none'
};
this.YTY_data = '1';
this.YTYStyle = this.checkboxStyle;
}
} else {
this.UpdateOrAdd = true;
}
}
});
};
/**
* @Description 对公招商引资企业营销台账任务表更新
* @Author JiangTao
* @Date 2022-02-19 下午 10:57
*/
ComMarkUpdateAttract() {
let param = {
tasknum: this.$store.getters.getCusInfo.tasknum || this.markTasknum,
branchName: this.markData.branchName, //分支行名字
investmentBusinessName: this.markData.investmentBusinessName, //招商引资企业/项目名称
investmentBusinessType: this.markData.investmentBusinessType, //招引企业类型
marketTarget: this.markData.marketTarget, //营销目标
customrIndustryClass: this.markData.customrIndustryClass, //客户行业
capitalMarket: this.markData.capitalMarket, //资本市场
region: this.markData.region, //落地区域
projectTotalAmount: this.markData.projectTotalAmount, //项目总投
proposedFinancingAmount: this.markData.proposedFinancingAmount, //拟融资金额
financingTerm: this.markData.financingTerm, //融资期限
rate: this.markData.rate, //利率
financingModel: this.markData.financingModel, //融资模式及企业需求
stateOwnedJoin: this.markData.stateOwnedJoin, //是否国有企业参股
projectProgress: this.markData.projectProgress, //招引项目当前进展
projectSummary: this.markData.projectSummary, //项目概述
marketProgress: this.markData.marketProgress, //营销进展
marketExplain: this.markData.marketExplain, //营销进展详述
openAccount: this.markData.openAccount, //是否已开户
imputation: this.markData.imputation, //账户及资本归集类型
other: this.markData.other, //其他
updUser: sessionStorage.getItem('userName'),
orgId: sessionStorage.getItem('branchNo'),
};
NativeUI.showWaiting('正在查询...');
return IF.transferDataInter(applicationApi.ComMarkUpdateAttract, param).then((res: any) => {
console.log(res);
NativeUI.closeWaiting();
if (res.code == '1') {
if (this.taskStatusData == '1') {
NativeUI.toast('保存成功!');
} else if (this.taskStatusData == '2') {
this.updateMarketTaskStatus();
}
} else {
NativeUI.toast(res.msg);
}
});
};
/**
* @Description 修改任务状态
* @Author JiangTao
* @Date 2022-02-19 下午 10:29
*/
updateMarketTaskStatus() {
let param = {
tasknum: this.$store.getters.getCusInfo.tasknum || this.markTasknum, //任务编号
taskStatus: '4'
};
NativeUI.showWaiting('正在查询...');
return IF.transferDataInter(applicationApi.updateMarketTaskStatus, param).then((res: any) => {
console.log(res);
NativeUI.closeWaiting();
if (res.code == '1') {
this.operate = '2';
// NativeUI.toast(res.msg);
}
});
};
/**
* @Description 取消
* @Author JiangTao
* @Date 2022-02-17 下午 07:21
*/
cancel() {
this.show = false;
console.log(this.show);
};
onClick() {
this.show = false;
this.$router.go(-1);
}
}
</script>
<style lang="scss" scoped>
.marketing-processing-content {
width: 100%;
height: calc(100vh - 60px);
display: flex;
}
.customer-information {
width: 25%;
height: 100%;
padding: 2%;
border-right: 2px solid rgba(242, 242, 242, 1);
}
.customer-information-top {
width: 100%;
height: 60px;
display: flex;
align-items: center;
}
.avatar {
width: 20%;
}
.customer-name > div:nth-child(1) {
font-weight: bold;
font-size: 18px;
color: #333333;
font-family: "Arial Normal", "Arial";
}
.customer-name > div:nth-child(2) {
width: auto;
padding: 1% 10px 0 10px;
margin-top: 2%;
text-align: center;
border: 1px solid rgba(215, 215, 215, 1);
border-radius: 5px;
font-size: 13px;
color: #333333;
font-family: "Arial Normal", "Arial";
}
.customer-information-central table {
width: 100%;
}
.customer-information-central table tr > td:nth-child(1) {
font-size: 14px;
color: #999999;
line-height: 30px;
}
.customer-information-central table tr > td:nth-child(2) {
font-size: 14px;
color: #333333;
font-family: "Arial Normal", "Arial";
}
.customer-information-central table tr:nth-child(4) > td {
padding-top: 4%;
color: #02a7f0;
}
.sign-in {
width: 100%;
height: 35%;
margin-top: 10%;
}
.operate {
width: 100%;
margin-top: 3%;
}
.operate > button:nth-child(1) {
width: 50%;
height: 36px;
margin: 7% auto 7% auto;
display: block;
background-color: white;
border: 1px solid #02a7f0;
color: #02a7f0;
border-radius: 20px;
font-size: 14px;
font-family: "Arial Normal", "Arial";
}
.operate > button:nth-child(2) {
width: 50%;
height: 36px;
margin: 0 auto;
display: block;
background-color: white;
border: 1px solid rgba(215, 215, 215, 1);
color: #999999;
border-radius: 20px;
font-size: 14px;
font-family: "Arial Normal", "Arial";
}
.bm-view {
width: 100%;
height: 100%;
}
.details {
width: 100%;
height: calc(100vh - 60px - 5%);
margin: 2% auto;
}
.divBackground {
background-color: white;
}
::v-deep .van-nav-bar__right {
padding-top: 16px;
}
.formStyle {
width: 80%;
height: 100%;
overflow-y: auto;
margin: 0 auto;
}
.checkbox {
display: flex;
align-items: center;
padding: 0 1rem 1.5rem 1rem;
}
.checkbox-title {
width: 100px;
margin-right: 12px;
font-size: 14px;
color: #999999;
text-align: right;
}
.checkbox-data {
width: 70%;
}
.checkbox-data > div:nth-child(1) {
width: 100%;
display: flex;
flex-wrap: wrap;
}
.checkbox-data > div:nth-child(1) > div {
position: relative;
width: auto;
min-width: 130px;
height: 30px;
line-height: 30px;
text-align: center;
background-color: #f2f2f2;
font-size: 14px;
border-radius: 5px;
padding: 0 20px;
margin: 5px 15px 5px 0;
border: 0.001rem solid rgba(215, 215, 215, 1);
}
.checkbox-data > div:nth-child(2) {
width: 100%;
color: red;
font-size: 12px;
}
::v-deep .van-field__label {
width: 100px;
text-align: right;
}
::v-deep .van-field__value {
display: flex;
align-items: center;
}
::v-deep .van-field__body {
width: 100%;
}
.operateButton {
width: 100%;
display: flex;
justify-content: center;
}
.operateButton button {
width: 20.5%;
border-radius: 30px;
font-size: 18px;
padding: 1% 0;
margin: 1%;
outline: none;
color: white;
background-color: #FF574C;
border: 1px solid #FF574C;
}
::v-deep .popup-body {
display: flex;
align-items: center;
justify-content: center;
}
.popup-data {
text-align: center;
}
</style>
<template>
<div class="divBackground">
<title-bar :title="title" @clickLeft="onClick">
<van-icon slot="left" name="cross" size="24" />
</title-bar>
<van-form @submit="onSubmit">
<button
@click="taskStatusData = '2'"
style="background-color: rgba(0, 0, 0, 0);border: rgba(0, 0, 0, 0);position: absolute;right: 0;top: 0;color: white;z-index: 99999999;font-size: 14px;height: 60px;width: 46px;padding-top: 16px;display: flex;align-items: center;justify-content: center;outline: none;"
>
提交
</button>
<div class="marketing-processing-content">
<div v-if="createType != '' && createType != '3'" class="customer-information">
<div class="customer-information-top">
<div class="avatar">
<svg style="width: 100%" class="icon" aria-hidden="true">
<use xlink:href="#icon-gongsimingcheng"></use>
</svg>
</div>
<div class="customer-name">
<div>{{ customerName }}</div>
<div>{{ marketTypeName }}</div>
</div>
</div>
<!-- <div class="customer-information-central">-->
<!-- <table-single-view v-if="dataBasic.cusAddr != ''" :keyValue="keyValueSingle" :data="dataBasic"></table-single-view>-->
<!-- <div v-if="!smd" @click="time_axis"><img src="@/assets/svg/time-axis-logo.svg" alt="" />&nbsp;&nbsp;时光轴</div>-->
<!-- </div>-->
<div class="sign-in">
<!-- 百度地图-->
<baidu-map class="bm-view" ak="FP7zWR4e8lhxZ6v0IicoG1R5" :center="{ lng: this.upoint.lng, lat: this.upoint.lat }" :zoom="15" @ready="mapReady"> </baidu-map>
</div>
<div class="operate">
<!-- <button><img src="../../../../assets/svg/blue-navigation-logo.svg" alt="" />导航</button>-->
<!-- <button>添加日程</button>-->
</div>
</div>
<div class="details v-scroller">
<div class="formStyle">
<sub-title>营销详情</sub-title>
<table style="width: 95%; margin: 2% auto">
<tr v-if="createType == '' || createType == '3'">
<td>
<mobile-input :border="true" :rules="[{ required: true, message: '' }]" placeholder="请输入" label="分支行名字:" label-width="10px" input-align="left" name="branchName" v-model="markData.branchName" size="small" />
</td>
<td>
<mobile-input :border="true" :rules="[{ required: true, message: '' }]" placeholder="请输入" label="客户名称:" label-width="10px" input-align="left" name="customerName" v-model="markData.customerName" size="small" />
</td>
</tr>
<tr>
<td colspan="2">
<div class="checkbox">
<div class="checkbox-title"><span style="color: red;margin-left: -7px">*</span>客户类型:</div>
<div class="checkbox-data">
<div class="checkboxTypeStyle">
<div :style="JZRWStyle" @click="JZRW">
新客户-拟报精准入围
<img
v-if="this.JZRW_data == '1'"
style="width: 1.2rem;height: 1.2rem;position: absolute;bottom: 0;right: 0;"
src="@/assets/images/orange-subscript.png"
alt=""
/>
</div>
<div :style="JZMDStyle" @click="JZMD">
新客户-总行精准名单内
<img
v-if="this.JZMD_data == '1'"
style="width: 1.2rem;height: 1.2rem;position: absolute;bottom: 0;right: 0;"
src="@/assets/images/orange-subscript.png"
alt=""
/>
</div>
<div :style="XZSXStyle" @click="XZSX">
存量精准客户-新增授信
<img
v-if="this.XZSX_data == '1'"
style="width: 1.2rem;height: 1.2rem;position: absolute;bottom: 0;right: 0;"
src="@/assets/images/orange-subscript.png"
alt=""
/>
</div>
<div :style="HHXDStyle" @click="HHXD">
存量精准客户-还后续贷
<img
v-if="this.HHXD_data == '1'"
style="width: 1.2rem;height: 1.2rem;position: absolute;bottom: 0;right: 0;"
src="@/assets/images/orange-subscript.png"
alt=""
/>
</div>
</div>
<div :style="customerTypeCheck">请选择客户类型</div>
</div>
</div>
</td>
</tr>
<tr>
<td>
<d-select :rules="[{ required: true, message: '' }]" placeholder="请选择" label="控股类型:" :required="true" border="true" v-model="markData.holdingType" sfield="HOLDING_TYPE" size="small"></d-select>
</td>
<td>
<d-select :rules="[{ required: true, message: '' }]" placeholder="请选择" label="客户行业分类:" :required="true" border="true" v-model="markData.customrIndustryClass" sfield="CUSTOMR_INDUSTRY_CLASS" size="small"></d-select>
</td>
</tr>
<tr>
<td>
<d-select :rules="[{ required: true, message: '' }]" placeholder="请选择" label="资本市场客户:" :required="true" border="true" v-model="markData.capitalMarket" sfield="CAPITAL_MARKET" size="small"></d-select>
</td>
</tr>
<tr>
<td colspan="2">
<mobile-input :border="true" :rules="[{ required: true, message: '' }]" placeholder="医院等级/学校层级/上市板块/军工三证级别/其他行业资质等" label="资质等级:" type="textarea" :maxlength="500" :rows="3" label-width="10px" input-align="left" name="qualificationLevel" v-model="markData.qualificationLevel" size="small" />
</td>
</tr>
<tr>
<td colspan="2">
<div class="checkbox">
<div class="checkbox-title"><span style="color: red;margin-left: -7px">*</span>营销目标:</div>
<div class="checkbox-data">
<div>
<div :style="FZYWStyle" @click="FZYW">
负债业务
<img
v-if="this.FZYW_data == '1'"
style="width: 1.2rem;height: 1.2rem;position: absolute;bottom: 0;right: 0;"
src="@/assets/images/orange-subscript.png"
alt=""
/>
</div>
<div :style="ZCYWStyle" @click="ZCYW">
资产业务
<img
v-if="this.ZCYW_data == '1'"
style="width: 1.2rem;height: 1.2rem;position: absolute;bottom: 0;right: 0;"
src="@/assets/images/orange-subscript.png"
alt=""
/>
</div>
<div :style="XXMPStyle" @click="XXMP">
信息摸排
<img
v-if="this.XXMP_data == '1'"
style="width: 1.2rem;height: 1.2rem;position: absolute;bottom: 0;right: 0;"
src="@/assets/images/orange-subscript.png"
alt=""
/>
</div>
<div :style="QTStyle" @click="QT">
其他
<img
v-if="this.QT_data == '1'"
style="width: 1.2rem;height: 1.2rem;position: absolute;bottom: 0;right: 0;"
src="@/assets/images/orange-subscript.png"
alt=""
/>
</div>
</div>
<div :style="marketingObjectivesCheck">请选择营销目标</div>
</div>
</div>
</td>
</tr>
<tr>
<td colspan="2">
<mobile-input :border="true" :rules="[{ required: true, message: '' }]" placeholder="详细描述企业主营业务、业务模式、行业地位、上下游客户情况等" label="企业主营业务及业务模式:" type="textarea" :maxlength="500" :rows="3" label-width="10px" input-align="left" name="mainBusAndDetail" v-model="markData.mainBusAndDetail" size="small" />
</td>
</tr>
<tr>
<td colspan="2">
<mobile-input :border="true" :rules="[{ required: true, message: '' }]" placeholder="主营业务收入、利润、总资产、负债等主要财务指标" label="主要财务指标:" type="textarea" :maxlength="500" :rows="3" label-width="10px" input-align="left" name="mainFinancialIndicators" v-model="markData.mainFinancialIndicators" size="small" />
</td>
</tr>
<tr>
<td colspan="2">
<mobile-input :border="true" :rules="[{ required: true, message: '' }]" placeholder="请输入" label="融资模式及企业需求:" type="textarea" :maxlength="500" :rows="3" label-width="10px" input-align="left" name="financingModeEntDemand" v-model="markData.financingModeEntDemand" size="small" />
</td>
</tr>
<tr>
<td>
<mobile-input :border="true" placeholder="请输入" label="拟融资金额(亿元):" @blur.native.capture="proFinancingAmountData" label-width="10px" input-align="left" type="number" name="proFinancingAmount" v-model="markData.proFinancingAmount " size="small" />
</td>
<td>
<mobile-input :border="true" :rules="[{ required: true, message: '' }]" @blur.native.capture="financingInterestRateData" placeholder="请输入" label="融资利率(%):" label-width="10px" input-align="left" type="number" name="financingInterestRate" v-model="markData.financingInterestRate " size="small" />
</td>
</tr>
<tr>
<td>
<mobile-input :border="true" :rules="[{ required: true, message: '' }]" placeholder="请输入" label="融资期限(年):" label-width="10px" input-align="left" type="digit" name="financingTerm" v-model="markData.financingTerm " size="small" />
</td>
</tr>
<tr>
<td colspan="2">
<div class="checkbox">
<div class="checkbox-title"><span style="color: red;margin-left: -7px">*</span>营销进展:</div>
<div class="checkbox-data">
<div>
<div :style="QQYXStyle" @click="QQYX">
前期营销
<img
v-if="this.QQYX_data == '1'"
style="width: 1.2rem;height: 1.2rem;position: absolute;bottom: 0;right: 0;"
src="@/assets/images/orange-subscript.png"
alt=""
/>
</div>
<div :style="HZYXStyle" @click="HZYX">
初步达成合作意向
<img
v-if="this.HZYX_data == '1'"
style="width: 1.2rem;height: 1.2rem;position: absolute;bottom: 0;right: 0;"
src="@/assets/images/orange-subscript.png"
alt=""
/>
</div>
<div :style="ZLSJStyle" @click="ZLSJ">
资料收集中
<img
v-if="this.ZLSJ_data == '1'"
style="width: 1.2rem;height: 1.2rem;position: absolute;bottom: 0;right: 0;"
src="@/assets/images/orange-subscript.png"
alt=""
/>
</div>
<div :style="QXSPStyle" @click="QXSP">
分支行权限内已审批
<img
v-if="this.QXSP_data == '1'"
style="width: 1.2rem;height: 1.2rem;position: absolute;bottom: 0;right: 0;"
src="@/assets/images/orange-subscript.png"
alt=""
/>
</div>
<div :style="YBSPStyle" @click="YBSP">
已报总行授信审批
<img
v-if="this.YBSP_data == '1'"
style="width: 1.2rem;height: 1.2rem;position: absolute;bottom: 0;right: 0;"
src="@/assets/images/orange-subscript.png"
alt=""
/>
</div>
<div :style="SXSPStyle" @click="SXSP">
完成授信审批
<img
v-if="this.SXSP_data == '1'"
style="width: 1.2rem;height: 1.2rem;position: absolute;bottom: 0;right: 0;"
src="@/assets/images/orange-subscript.png"
alt=""
/>
</div>
<div :style="YTYStyle" @click="YTY">
已提用
<img
v-if="this.YTY_data == '1'"
style="width: 1.2rem;height: 1.2rem;position: absolute;bottom: 0;right: 0;"
src="@/assets/images/orange-subscript.png"
alt=""
/>
</div>
</div>
<div :style="marketingProgressCheck">请选择营销进展</div>
</div>
</div>
</td>
</tr>
<tr>
<td colspan="2">
<mobile-input :border="true" :rules="[{ required: true, message: '' }]" placeholder="包括不限于营销切入点、关键人、营销关键点,资产业务进展等" label="营销进展详述:" type="textarea" :maxlength="500" :rows="3" label-width="10px" input-align="left" name="marketingProgressDetial" v-model="markData.marketingProgressDetial" size="small" />
</td>
</tr>
<tr>
<td>
<d-select :rules="[{ required: true, message: '' }]" placeholder="请选择" label="是否已开户:" :required="true" border="true" v-model="markData.openedAnAccount" sfield="OPENACCOUNT_TYPE" size="small"></d-select>
</td>
<td>
<mobile-input :border="true" placeholder="存款年日均" label="预计存款归集(万元):" @blur.native.capture="expectedDepositCollectionData" label-width="10px" input-align="left" type="number" name="expectedDepositCollection" v-model="markData.expectedDepositCollection" size="small" />
</td>
</tr>
<tr>
<td colspan="2">
<mobile-input :border="true" :rules="[{ required: true, message: '' }]" placeholder="如:募集资金、医院/学校收入等" label="拟营销归集资金类型:" type="textarea" :maxlength="500" :rows="3" label-width="10px" input-align="left" name="marketCollectedType" v-model="markData.marketCollectedType" size="small" />
</td>
</tr>
<tr>
<td>
<mobile-input :border="true" placeholder="请输入" label="其他:" label-width="10px" input-align="left" name="other" v-model="markData.other" size="small" />
</td>
<td>
<mobile-input :border="true" :rules="[{ required: true, message: '' }]" placeholder="请输入" label="主管客户经理:" label-width="10px" input-align="left" name="mainManager" v-model="markData.mainManager" size="small" />
</td>
</tr>
<tr>
<td>
<mobile-input :border="true" :rules="[{ required: true, message: '' }]" placeholder="请输入" label="主管客户经理联系方式:" label-width="10px" input-align="left" type="number" name="mainManagerPhone" v-model="markData.mainManagerPhone" size="small" />
</td>
</tr>
</table>
<div class="operateButton">
<button @click="taskStatusData = '1'">保存</button>
</div>
</div>
</div>
</div>
</van-form>
<base-popup :safe-area-inset-bottom="true" :showCancel="showCancel" showConfirm="true" @confirm="SubmitMark" :confirmText="confirmText" v-model="show" title="提交营销任务">
<div class="popup-content">
<div v-if="operate == '1'" style="font-size: 24px" class="popup-data">
确定提交该营销任务?
</div>
<div v-if="operate == '2'" class="popup-data">
<svg style="width: 85%;margin: 0 auto" class="icon" aria-hidden="true">
<use xlink:href="#icon-wancheng"></use>
</svg>
<div style="font-size: 24px">提交成功!</div>
</div>
</div>
</base-popup>
</div>
</template>
<script lang="ts">
import { Component, Vue } from "vue-property-decorator";
import TitleBar from "@/components/general/TitleBar.vue";
import TableSingleView from '@/public/TableSingleView.vue';
import { BaiduMap, BmScale, BmNavigation, BmInfoWindow } from "vue-baidu-map";
import applicationApi from '@/constants/api/ms-application/application.api';
import { NativeUI } from "@/public/ts/NativeUI";
import IF from "@/public/factory/InterFaceFactory";
import { Popup } from 'vant';
import BasePopup from "@/components/general/BasePopup.vue";
Vue.use(Popup);
/**
* @Description 对公精准营销推进专项
* @Author JiangTao
* @Date 2021-11-10 下午 03:53
*/
@Component({
name: "ComPreMarkDetail",
components: { TitleBar, BaiduMap, BmScale, BmNavigation, BmInfoWindow, TableSingleView, BasePopup},
})
export default class ComPreMarkDetail extends Vue {
//客户位置坐标
upoint: any = { lng: 104.080998, lat: 30.595452 };
title = '营销详情';
taskStatusData = '1'; //提交状态
show = false;
operate = '';
UpdateOrAdd = true; //判断是否新增or更新 true =新增,false =更新
showCancel = false;
confirmText = '';
markTasknum = ''; //营销任务编号
customerName = ''; //客户名称
marketTypeName = '';
markData = {
branchName: '',
customerName: '',
customerType: '', //客户类型
holdingType: '', //控股类型
customrIndustryClass: '', //客户行业分类
capitalMarket: '', //资本市场客户
qualificationLevel: '', //资质等级
marketingObjectives: '', //营销目标
mainBusAndDetail: '', //企业主营业务及业务模式
mainFinancialIndicators: '', //主要财务指标
financingModeEntDemand: '', //融资模式及企业需求
proFinancingAmount: '', //拟融资金额
financingInterestRate: '', //融资利率
financingTerm: '', //融资期限
marketingProgress: '', //营销进展
marketingProgressDetial: '', //营销进展详述
openedAnAccount: '', //是否已开户
expectedDepositCollection: '', //预计存款归集
marketCollectedType: '', //拟营销归集资金类型
other: '', //其他
mainManager: '', //主要客户经理
mainManagerPhone: '', //主管客户经理及其联系方式
};
createType = ''; //任务来源
checkboxStyle = {
'border-color': '#FF574C',
'background-color': '#fff3f3',
'color': '#FF574C',
};
//客户类型
JZRW_data = '0'; //新客户-拟报精准入围
JZMD_data = '0'; //新客户-总行精准名单内
XZSX_data = '0'; //存量精准客户-新增授信
HHXD_data = '0'; //存量精准客户-还后续贷
JZRWStyle = {}; //新客户-拟报精准入围
JZMDStyle = {}; //新客户-总行精准名单内
XZSXStyle = {}; //存量精准客户-新增授信
HHXDStyle = {}; //存量精准客户-还后续贷
customerTypeCheck = {}; //校验判断
//营销目标
FZYW_data = '0'; //负债业务
ZCYW_data = '0'; //资产业务
XXMP_data = '0'; //信息摸排
QT_data = '0'; //其他
FZYWStyle = {}; //负债业务
ZCYWStyle = {}; //资产业务
XXMPStyle = {}; //信息摸排
QTStyle = {}; //其他
marketingObjectivesCheck = {}; //校验判断
//营销进展
QQYX_data = '0'; //前期营销
HZYX_data = '0'; //初步达成合作意向
ZLSJ_data = '0'; //资料收集中
QXSP_data = '0'; //分支行权限内已审批
YBSP_data = '0'; //已报总行授信审批
SXSP_data = '0'; //完成授信审批
YTY_data = '0'; //已提用
QQYXStyle = {}; //前期营销
HZYXStyle = {}; //初步达成合作意向
ZLSJStyle = {}; //资料收集中
QXSPStyle = {}; //分支行权限内已审批
YBSPStyle = {}; //已报总行授信审批
SXSPStyle = {}; //完成授信审批
YTYStyle = {}; //已提用
marketingProgressCheck = {}; //校验判断
mounted() {
this.showCancel = true;
this.operate = '1'
this.customerTypeCheck = {
'display': 'none'
};
this.marketingObjectivesCheck = {
'display': 'none'
};
this.marketingProgressCheck = {
'display': 'none'
};
this.createType = this.$store.getters.getCusInfo.createType || '';
this.taskStatusData = '1';
if (this.createType != '') {
this.customerName = this.$store.getters.getCusInfo.customerName;
this.marketTypeName = this.$store.getters.getCusInfo.marketTypeName;
this.detailByTaskNumPre();
}
this.taskStatusData = '1';
console.log(this.$store.getters.getCusInfo);
};
proFinancingAmountData() {
if ((this.markData as any).proFinancingAmount < 0) {
this.markData.proFinancingAmount = '';
}
}
financingInterestRateData() {
if ((this.markData as any).financingInterestRate < 0) {
this.markData.financingInterestRate = '';
}
}
expectedDepositCollectionData() {
if ((this.markData as any).expectedDepositCollection < 0) {
this.markData.expectedDepositCollection = '';
}
}
//客户类型
JZRW() {
if (this.JZRWStyle != this.checkboxStyle) {
this.customerTypeCheck = {
'display': 'none'
};
this.JZRW_data = '1';
this.JZRWStyle = this.checkboxStyle;
} else {
this.JZRW_data = '0';
this.JZRWStyle = {};
}
};
JZMD() {
if (this.JZMDStyle != this.checkboxStyle) {
this.customerTypeCheck = {
'display': 'none'
};
this.JZMD_data = '1';
this.JZMDStyle = this.checkboxStyle;
} else {
this.JZMD_data = '0';
this.JZMDStyle = {};
}
};
XZSX() {
if (this.XZSXStyle != this.checkboxStyle) {
this.customerTypeCheck = {
'display': 'none'
};
this.XZSX_data = '1';
this.XZSXStyle = this.checkboxStyle;
} else {
this.XZSX_data = '0';
this.XZSXStyle = {};
}
};
HHXD() {
if (this.HHXDStyle != this.checkboxStyle) {
this.customerTypeCheck = {
'display': 'none'
};
this.HHXD_data = '1';
this.HHXDStyle = this.checkboxStyle;
} else {
this.HHXD_data = '0';
this.HHXDStyle = {};
}
};
//营销目标
FZYW() {
if (this.FZYWStyle != this.checkboxStyle) {
this.marketingObjectivesCheck = {
'display': 'none'
};
this.FZYW_data = '1';
this.FZYWStyle = this.checkboxStyle;
} else {
this.FZYW_data = '0';
this.FZYWStyle = {};
}
};
ZCYW() {
if (this.ZCYWStyle != this.checkboxStyle) {
this.marketingObjectivesCheck = {
'display': 'none'
};
this.ZCYW_data = '1';
this.ZCYWStyle = this.checkboxStyle;
} else {
this.ZCYW_data = '0';
this.ZCYWStyle = {};
}
};
XXMP() {
if (this.XXMPStyle != this.checkboxStyle) {
this.marketingObjectivesCheck = {
'display': 'none'
};
this.XXMP_data = '1';
this.XXMPStyle = this.checkboxStyle;
} else {
this.XXMP_data = '0';
this.XXMPStyle = {};
}
};
QT() {
if (this.QTStyle != this.checkboxStyle) {
this.marketingObjectivesCheck = {
'display': 'none'
};
this.QT_data = '1';
this.QTStyle = this.checkboxStyle;
} else {
this.QT_data = '0';
this.QTStyle = {};
}
};
//营销进展
QQYX() {
if (this.QQYXStyle != this.checkboxStyle) {
this.marketingProgressCheck = {
'display': 'none'
};
this.QQYX_data = '1';
this.QQYXStyle = this.checkboxStyle;
} else {
this.QQYX_data = '0';
this.QQYXStyle = {};
}
};
HZYX() {
if (this.HZYXStyle != this.checkboxStyle) {
this.marketingProgressCheck = {
'display': 'none'
};
this.HZYX_data = '1';
this.HZYXStyle = this.checkboxStyle;
} else {
this.HZYX_data = '0';
this.HZYXStyle = {};
}
};
ZLSJ() {
if (this.ZLSJStyle != this.checkboxStyle) {
this.marketingProgressCheck = {
'display': 'none'
};
this.ZLSJ_data = '1';
this.ZLSJStyle = this.checkboxStyle;
} else {
this.ZLSJ_data = '0';
this.ZLSJStyle = {};
}
};
QXSP() {
if (this.QXSPStyle != this.checkboxStyle) {
this.marketingProgressCheck = {
'display': 'none'
};
this.QXSP_data = '1';
this.QXSPStyle = this.checkboxStyle;
} else {
this.QXSP_data = '0';
this.QXSPStyle = {};
}
};
YBSP() {
if (this.YBSPStyle != this.checkboxStyle) {
this.marketingProgressCheck = {
'display': 'none'
};
this.YBSP_data = '1';
this.YBSPStyle = this.checkboxStyle;
} else {
this.YBSP_data = '0';
this.YBSPStyle = {};
}
};
SXSP() {
if (this.SXSPStyle != this.checkboxStyle) {
this.marketingProgressCheck = {
'display': 'none'
};
this.SXSP_data = '1';
this.SXSPStyle = this.checkboxStyle;
} else {
this.SXSP_data = '0';
this.SXSPStyle = {};
}
};
YTY() {
if (this.YTYStyle != this.checkboxStyle) {
this.marketingProgressCheck = {
'display': 'none'
};
this.YTY_data = '1';
this.YTYStyle = this.checkboxStyle;
} else {
this.YTY_data = '0';
this.YTYStyle = {};
}
};
/**
* @Description 保存
* @Author JiangTao
* @Date 2022-02-19 下午 10:22
*/
onSubmit() {
this.markData.customerType = '';
if (this.JZRW_data == '1') {
this.markData.customerType = this.markData.customerType + '1,';
}
if (this.JZMD_data == '1') {
this.markData.customerType = this.markData.customerType + '2,';
}
if (this.XZSX_data == '1') {
this.markData.customerType = this.markData.customerType + '3,';
}
if (this.HHXD_data == '1') {
this.markData.customerType = this.markData.customerType + '4,';
}
this.markData.marketingObjectives = '';
if (this.FZYW_data == '1') {
this.markData.marketingObjectives = this.markData.marketingObjectives + '1,';
}
if (this.ZCYW_data == '1') {
this.markData.marketingObjectives = this.markData.marketingObjectives + '2,';
}
if (this.XXMP_data == '1') {
this.markData.marketingObjectives = this.markData.marketingObjectives + '3,';
}
if (this.QT_data == '1') {
this.markData.marketingObjectives = this.markData.marketingObjectives + '4,';
}
this.markData.marketingProgress = '';
if (this.QQYX_data == '1') {
this.markData.marketingProgress = this.markData.marketingProgress + '1,';
}
if (this.HZYX_data == '1') {
this.markData.marketingProgress = this.markData.marketingProgress + '2,';
}
if (this.ZLSJ_data == '1') {
this.markData.marketingProgress = this.markData.marketingProgress + '3,';
}
if (this.QXSP_data == '1') {
this.markData.marketingProgress = this.markData.marketingProgress + '4,';
}
if (this.YBSP_data == '1') {
this.markData.marketingProgress = this.markData.marketingProgress + '5,';
}
if (this.SXSP_data == '1') {
this.markData.marketingProgress = this.markData.marketingProgress + '6,';
}
if (this.YTY_data == '1') {
this.markData.marketingProgress = this.markData.marketingProgress + '7,';
}
if (this.markData.marketingObjectives != '') {
this.marketingObjectivesCheck = {
'display': 'none'
};
this.markData.marketingObjectives = this.markData.marketingObjectives.substring(0, this.markData.marketingObjectives.length - 1);
if (this.markData.marketingProgress != '') {
this.marketingProgressCheck = {
'display': 'none'
};
this.markData.marketingProgress = this.markData.marketingProgress.substring(0, this.markData.marketingProgress.length - 1);
if (this.markData.customerType != '') {
this.customerTypeCheck = {
'display': 'none'
};
this.markData.customerType = this.markData.customerType.substring(0, this.markData.customerType.length - 1);
if (this.createType != '' || this.markTasknum != '') {
if (this.taskStatusData == '1') {
if (this.UpdateOrAdd) {
this.ComMarkAddPre();
} else {
this.ComMarkUpdatePre();
}
} else if (this.taskStatusData == '2') {
this.show = true;
this.operate = '1';
this.showCancel = true;
this.confirmText = "确定";
}
} else if (this.createType == '' && this.markTasknum == '') {
if (this.taskStatusData == '1') {
this.addsTaskManager();
} else if (this.taskStatusData == '2') {
this.show = true;
this.operate = '1';
this.showCancel = true;
this.confirmText = "确定";
}
}
} else {
this.customerTypeCheck = {};
}
} else {
this.marketingProgressCheck = {};
}
} else {
this.marketingObjectivesCheck = {};
}
};
/**
* @Description 客户经理新增多条对公客户任务
* @Author JiangTao
* @Date 2022-02-24
*/
addsTaskManager() {
const param = {
exeUser: sessionStorage.getItem('workcode'),
sendOrgId: sessionStorage.getItem('branchNo'),
estimatedMarketTime: '',
marketEndTime: '',
marketType: '4',
orgId: sessionStorage.getItem('branchNo'),
marketCustomerListPublics: [
{
customerId: '',
customerName: this.markData.customerName
}
],
tc: 'MCEP'
};
NativeUI.showWaiting('正在查询...');
return IF.transferDataInter(applicationApi.addsTaskManager, param).then((res: any) => {
console.log(res);
NativeUI.closeWaiting();
if (res.code == '1') {
this.markTasknum = res.data.tasknum;
if (this.UpdateOrAdd) {
this.ComMarkAddPre();
} else {
this.ComMarkUpdatePre();
}
}
});
};
SubmitMark() {
if (this.operate == '1') {
if (this.createType != '' || this.markTasknum != '') {
if (this.UpdateOrAdd) {
this.ComMarkAddPre();
} else {
this.ComMarkUpdatePre();
}
} else if (this.createType == '' && this.markTasknum == '') {
this.addsTaskManager();
}
} else if (this.operate == '2') {
this.show = false;
this.$router.go(-1);
}
};
/**
* @Description 精准营销专项对公营销任务表新增
* @Author JiangTao
* @Date 2022-02-19 下午 09:48
*/
ComMarkAddPre() {
let param = {
tasknum: this.$store.getters.getCusInfo.tasknum || this.markTasknum,
branchName: this.markData.branchName,
customerName: this.markData.customerName,
customerType: this.markData.customerType, //客户类型
holdingType: this.markData.holdingType, //控股类型
customrIndustryClass: this.markData.customrIndustryClass, //客户行业分类
capitalMarket: this.markData.capitalMarket, //资本市场客户
qualificationLevel: this.markData.qualificationLevel, //资质等级
marketingObjectives: this.markData.marketingObjectives, //营销目标
mainBusAndDetail: this.markData.mainBusAndDetail, //企业主营业务及业务模式
mainFinancialIndicators: this.markData.mainFinancialIndicators, //主要财务指标
financingModeEntDemand: this.markData.financingModeEntDemand, //融资模式及企业需求
proFinancingAmount: this.markData.proFinancingAmount, //拟融资金额
financingInterestRate: this.markData.financingInterestRate, //融资利率
financingTerm: this.markData.financingTerm, //融资期限
marketingProgress: this.markData.marketingProgress, //营销进展
marketingProgressDetial: this.markData.marketingProgressDetial, //营销进展详述
openedAnAccount: this.markData.openedAnAccount, //是否已开户
expectedDepositCollection: this.markData.expectedDepositCollection, //预计存款归集
marketCollectedType: this.markData.marketCollectedType, //拟营销归集资金类型
other: this.markData.other, //其他
mainManager: this.markData.mainManager, //主要客户经理
mainManagerPhone: this.markData.mainManagerPhone, //主管客户经理及其联系方式
createUser: sessionStorage.getItem('userName'),
orgId: sessionStorage.getItem('branchNo'),
};
NativeUI.showWaiting('正在查询...');
return IF.transferDataInter(applicationApi.ComMarkAddPre, param).then((res: any) => {
console.log(res);
NativeUI.closeWaiting();
if (res.code == '1') {
if (this.taskStatusData == '1') {
this.UpdateOrAdd = false;
NativeUI.toast('保存成功!');
} else if (this.taskStatusData == '2') {
this.updateMarketTaskStatus();
}
} else {
NativeUI.toast(res.msg);
}
});
};
/**
* @Description 精准营销专项对公营销任务表查询
* @Author JiangTao
* @Date 2022-02-19 下午 10:03
*/
detailByTaskNumPre() {
let param = {
tasknum: this.$store.getters.getCusInfo.tasknum //客户名称
};
NativeUI.showWaiting('正在查询...');
return IF.transferDataInter(applicationApi.detailByTaskNumPre, param).then((res: any) => {
console.log(res);
NativeUI.closeWaiting();
if (res.code == '1') {
if (res.data != 'null') {
this.markData = res.data;
this.UpdateOrAdd = false;
if (this.markData.customerType.indexOf('1') != -1) {
this.customerTypeCheck = {
'display': 'none'
};
this.JZRW_data = '1';
this.JZRWStyle = this.checkboxStyle;
}
if (this.markData.customerType.indexOf('2') != -1) {
this.customerTypeCheck = {
'display': 'none'
};
this.JZMD_data = '1';
this.JZMDStyle = this.checkboxStyle;
}
if (this.markData.customerType.indexOf('3') != -1) {
this.customerTypeCheck = {
'display': 'none'
};
this.XZSX_data = '1';
this.XZSXStyle = this.checkboxStyle;
}
if (this.markData.customerType.indexOf('4') != -1) {
this.customerTypeCheck = {
'display': 'none'
};
this.HHXD_data = '1';
this.HHXDStyle = this.checkboxStyle;
}
if (this.markData.marketingObjectives.indexOf('1') != -1) {
this.marketingObjectivesCheck = {
'display': 'none'
};
this.FZYW_data = '1';
this.FZYWStyle = this.checkboxStyle;
}
if (this.markData.marketingObjectives.indexOf('2') != -1) {
this.marketingObjectivesCheck = {
'display': 'none'
};
this.ZCYW_data = '1';
this.ZCYWStyle = this.checkboxStyle;
}
if (this.markData.marketingObjectives.indexOf('3') != -1) {
this.marketingObjectivesCheck = {
'display': 'none'
};
this.XXMP_data = '1';
this.XXMPStyle = this.checkboxStyle;
}
if (this.markData.marketingObjectives.indexOf('4') != -1) {
this.marketingObjectivesCheck = {
'display': 'none'
};
this.QT_data = '1';
this.QTStyle = this.checkboxStyle;
}
if (this.markData.marketingProgress.indexOf('1') != -1) {
this.marketingProgressCheck = {
'display': 'none'
};
this.QQYX_data = '1';
this.QQYXStyle = this.checkboxStyle;
}
if (this.markData.marketingProgress.indexOf('2') != -1) {
this.marketingProgressCheck = {
'display': 'none'
};
this.HZYX_data = '1';
this.HZYXStyle = this.checkboxStyle;
}
if (this.markData.marketingProgress.indexOf('3') != -1) {
this.marketingProgressCheck = {
'display': 'none'
};
this.ZLSJ_data = '1';
this.ZLSJStyle = this.checkboxStyle;
}
if (this.markData.marketingProgress.indexOf('4') != -1) {
this.marketingProgressCheck = {
'display': 'none'
};
this.QXSP_data = '1';
this.QXSPStyle = this.checkboxStyle;
}
if (this.markData.marketingProgress.indexOf('5') != -1) {
this.marketingProgressCheck = {
'display': 'none'
};
this.YBSP_data = '1';
this.YBSPStyle = this.checkboxStyle;
}
if (this.markData.marketingProgress.indexOf('6') != -1) {
this.marketingProgressCheck = {
'display': 'none'
};
this.SXSP_data = '1';
this.SXSPStyle = this.checkboxStyle;
}
if (this.markData.marketingProgress.indexOf('7') != -1) {
this.marketingProgressCheck = {
'display': 'none'
};
this.YTY_data = '1';
this.YTYStyle = this.checkboxStyle;
}
} else {
this.UpdateOrAdd = true;
}
}
});
};
/**
* @Description 对公客户拜访营销任务表更新
* @Author JiangTao
* @Date 2022-02-19 下午 10:57
*/
ComMarkUpdatePre() {
let param = {
tasknum: this.$store.getters.getCusInfo.tasknum || this.markTasknum,
branchName: this.markData.branchName,
customerName: this.markData.customerName,
customerType: this.markData.customerType, //客户类型
holdingType: this.markData.holdingType, //控股类型
customrIndustryClass: this.markData.customrIndustryClass, //客户行业分类
capitalMarket: this.markData.capitalMarket, //资本市场客户
qualificationLevel: this.markData.qualificationLevel, //资质等级
marketingObjectives: this.markData.marketingObjectives, //营销目标
mainBusAndDetail: this.markData.mainBusAndDetail, //企业主营业务及业务模式
mainFinancialIndicators: this.markData.mainFinancialIndicators, //主要财务指标
financingModeEntDemand: this.markData.financingModeEntDemand, //融资模式及企业需求
proFinancingAmount: this.markData.proFinancingAmount, //拟融资金额
financingInterestRate: this.markData.financingInterestRate, //融资利率
financingTerm: this.markData.financingTerm, //融资期限
marketingProgress: this.markData.marketingProgress, //营销进展
marketingProgressDetial: this.markData.marketingProgressDetial, //营销进展详述
openedAnAccount: this.markData.openedAnAccount, //是否已开户
expectedDepositCollection: this.markData.expectedDepositCollection, //预计存款归集
marketCollectedType: this.markData.marketCollectedType, //拟营销归集资金类型
other: this.markData.other, //其他
mainManager: this.markData.mainManager, //主要客户经理
mainManagerPhone: this.markData.mainManagerPhone, //主管客户经理及其联系方式
updUser: sessionStorage.getItem('userName'),
orgId: sessionStorage.getItem('branchNo'),
};
NativeUI.showWaiting('正在查询...');
return IF.transferDataInter(applicationApi.ComMarkUpdatePre, param).then((res: any) => {
console.log(res);
NativeUI.closeWaiting();
if (res.code == '1') {
if (this.taskStatusData == '1') {
NativeUI.toast('保存成功!');
} else if (this.taskStatusData == '2') {
this.updateMarketTaskStatus();
}
} else {
NativeUI.toast(res.msg);
}
});
};
/**
* @Description 修改任务状态
* @Author JiangTao
* @Date 2022-02-19 下午 10:29
*/
updateMarketTaskStatus() {
let param = {
tasknum: this.$store.getters.getCusInfo.tasknum || this.markTasknum, //客户名称
taskStatus: '4'
};
NativeUI.showWaiting('正在查询...');
return IF.transferDataInter(applicationApi.updateMarketTaskStatus, param).then((res: any) => {
console.log(res);
NativeUI.closeWaiting();
if (res.code == '1') {
this.operate = '2';
// NativeUI.toast(res.msg);
}
});
};
/**
* @Description 取消
* @Author JiangTao
* @Date 2022-02-17 下午 07:21
*/
cancel() {
this.show = false;
};
onClick() {
this.show = false;
this.$router.go(-1);
};
mapReady() {
// this.BMapGL = bmap.BMap;
// this.map = bmap.map;
}
}
</script>
<style lang="scss" scoped>
.marketing-processing-content {
width: 100%;
height: calc(100vh - 60px);
display: flex;
}
.customer-information {
width: 25%;
height: 100%;
padding: 2%;
border-right: 2px solid rgba(242, 242, 242, 1);
}
.customer-information-top {
width: 100%;
height: 60px;
display: flex;
align-items: center;
}
.avatar {
width: 20%;
}
.customer-name > div:nth-child(1) {
font-weight: bold;
font-size: 18px;
color: #333333;
font-family: "Arial Normal", "Arial";
}
.customer-name > div:nth-child(2) {
width: auto;
padding: 1% 10px 0 10px;
margin-top: 2%;
text-align: center;
border: 1px solid rgba(215, 215, 215, 1);
border-radius: 5px;
font-size: 13px;
color: #333333;
font-family: "Arial Normal", "Arial";
}
.customer-information-central table {
width: 100%;
}
.customer-information-central table tr > td:nth-child(1) {
font-size: 14px;
color: #999999;
line-height: 30px;
}
.customer-information-central table tr > td:nth-child(2) {
font-size: 14px;
color: #333333;
font-family: "Arial Normal", "Arial";
}
.customer-information-central table tr:nth-child(4) > td {
padding-top: 4%;
color: #02a7f0;
}
.sign-in {
width: 100%;
height: 35%;
margin-top: 10%;
}
.operate {
width: 100%;
margin-top: 3%;
}
.operate > button:nth-child(1) {
width: 50%;
height: 36px;
margin: 7% auto 7% auto;
display: block;
background-color: white;
border: 1px solid #02a7f0;
color: #02a7f0;
border-radius: 20px;
font-size: 14px;
font-family: "Arial Normal", "Arial";
}
.operate > button:nth-child(2) {
width: 50%;
height: 36px;
margin: 0 auto;
display: block;
background-color: white;
border: 1px solid rgba(215, 215, 215, 1);
color: #999999;
border-radius: 20px;
font-size: 14px;
font-family: "Arial Normal", "Arial";
}
.bm-view {
width: 100%;
height: 100%;
}
.details {
width: 100%;
height: calc(100vh - 60px - 5%);
margin: 2% auto;
}
.divBackground {
background-color: white;
}
::v-deep .van-nav-bar__right {
padding-top: 16px;
}
.formStyle {
width: 80%;
height: 100%;
overflow-y: auto;
margin: 0 auto;
}
.checkbox {
display: flex;
align-items: center;
padding: 0 1rem 1.5rem 1rem;
}
.checkbox-title {
width: 100px;
margin-right: 12px;
font-size: 14px;
color: #999999;
text-align: right;
}
.checkbox-data {
width: 70%;
}
.checkbox-data > div:nth-child(1) {
width: 100%;
display: flex;
flex-wrap: wrap;
}
.checkbox-data > div:nth-child(1) > div {
position: relative;
width: auto;
min-width: 130px;
height: 30px;
line-height: 30px;
text-align: center;
background-color: #f2f2f2;
font-size: 14px;
border-radius: 5px;
padding: 0 20px;
margin: 5px 15px 5px 0;
border: 0.001rem solid rgba(215, 215, 215, 1);
}
.checkbox-data > div:nth-child(2) {
width: 100%;
color: red;
font-size: 12px;
}
::v-deep .van-field__label {
width: 100px;
text-align: right;
}
::v-deep .van-field__value {
display: flex;
align-items: center;
}
::v-deep .van-field__body {
width: 100%;
}
.operateButton {
width: 100%;
display: flex;
justify-content: center;
}
.operateButton button {
width: 20.5%;
border-radius: 30px;
font-size: 18px;
padding: 1% 0;
margin: 1%;
outline: none;
color: white;
background-color: #FF574C;
border: 1px solid #FF574C;
}
::v-deep .popup-body {
display: flex;
align-items: center;
justify-content: center;
}
.popup-data {
text-align: center;
}
</style>
<template>
<div class="divBackground">
<title-bar :title="title" @clickLeft="onClick">
<van-icon slot="left" name="cross" size="24" />
</title-bar>
<van-form @submit="onSubmit">
<button
@click="taskStatusData = '2'"
style="background-color: rgba(0, 0, 0, 0);border: rgba(0, 0, 0, 0);position: absolute;right: 0;top: 0;color: white;z-index: 99999999;font-size: 14px;height: 60px;width: 46px;padding-top: 16px;display: flex;align-items: center;justify-content: center;outline: none;"
>
提交
</button>
<div class="marketing-processing-content">
<div v-if="createType != '' && createType != '3'" class="customer-information">
<div class="customer-information-top">
<div class="avatar">
<svg style="width: 100%" class="icon" aria-hidden="true">
<use xlink:href="#icon-gongsimingcheng"></use>
</svg>
</div>
<div class="customer-name">
<div>{{ customerName }}</div>
<div>{{ marketTypeName }}</div>
</div>
</div>
<!-- <div class="customer-information-central">-->
<!-- <table-single-view v-if="dataBasic.cusAddr != ''" :keyValue="keyValueSingle" :data="dataBasic"></table-single-view>-->
<!-- <div v-if="!smd" @click="time_axis"><img src="@/assets/svg/time-axis-logo.svg" alt="" />&nbsp;&nbsp;时光轴</div>-->
<!-- </div>-->
<div class="sign-in">
<!-- 百度地图-->
<baidu-map class="bm-view" ak="FP7zWR4e8lhxZ6v0IicoG1R5" :center="{ lng: this.upoint.lng, lat: this.upoint.lat }" :zoom="15" @ready="mapReady"> </baidu-map>
</div>
<div class="operate">
<!-- <button><img src="../../../../assets/svg/blue-navigation-logo.svg" alt="" />导航</button>-->
<!-- <button>添加日程</button>-->
</div>
</div>
<div class="details v-scroller">
<div class="formStyle">
<sub-title>营销详情</sub-title>
<table v-if="displayForm" style="width: 95%; margin: 2% auto">
<tr v-if="createType == '' || createType == '3'">
<td>
<mobile-input :border="true" :rules="[{ required: true, message: '' }]" placeholder="请输入" label="客户名称:" label-width="10px" input-align="left" name="customerName" v-model="markData.customerName" size="small" />
</td>
</tr>
<tr>
<td>
<d-select :rules="[{ required: true, message: '' }]" placeholder="请选择" label="客户行业:" :required="true" border="true" v-model="markData.customrIndustryClass" sfield="customrIndustryClass" size="small"></d-select>
</td>
<td>
<d-datetime-picker label="成立日期:" :rules="[{ required: true, message: '' }]" v-model="markData.lncorporationDate" placeholder="请选择" :border="true" :required="true"></d-datetime-picker>
</td>
</tr>
<tr>
<td>
<mobile-input :rules="[{ required: true, message: '' }]" @blur.native.capture="mainBusIncomeData" :border="true" placeholder="请输入" label="主营业务收入(万):" label-width="10px" input-align="left" type="number" name="mainBusIncome" v-model="markData.mainBusIncome" size="small" />
</td>
<td>
<mobile-input :rules="[{ required: true, message: '' }]" @blur.native.capture="mainBusinessCostData" :border="true" placeholder="请输入" label="主营业务成本(万):" label-width="10px" input-align="left" type="number" name="mainBusinessCost" v-model="markData.mainBusinessCost" size="small" />
</td>
</tr>
<tr>
<td>
<mobile-input :rules="[{ required: true, message: '' }]" @blur.native.capture="netProfitData" :border="true" placeholder="请输入" label="净利润(万):" label-width="10px" input-align="left" type="number" name="netProfit" v-model="markData.netProfit" size="small" />
</td>
<td>
<mobile-input :rules="[{ required: true, message: '' }]" @blur.native.capture="netAssetsData" :border="true" placeholder="请输入" label="净资产(万):" label-width="10px" input-align="left" type="number" name="netAssets" v-model="markData.netAssets" size="small" />
</td>
</tr>
<tr>
<td>
<mobile-input :rules="[{ required: true, message: '' }]" @blur.native.capture="totalLiabilitiesData" :border="true" placeholder="请输入" label="总负债(万):" label-width="10px" input-align="left" type="number" name="totalLiabilities" v-model="markData.totalLiabilities" size="small" />
</td>
<td>
<mobile-input :rules="[{ required: true, message: '' }]" @blur.native.capture="totalAssetsData" :border="true" placeholder="请输入" label="总资产(万):" label-width="10px" input-align="left" type="number" name="totalAssets" v-model="markData.totalAssets" size="small" />
</td>
</tr>
<tr>
<td>
<mobile-input :rules="[{ required: true, message: '' }]" @blur.native.capture="totalEbitData" :border="true" placeholder="请输入" label="息税前利润总额(万):" label-width="10px" input-align="left" type="number" name="totalEbit" v-model="markData.totalEbit" size="small" />
</td>
<td>
<mobile-input :rules="[{ required: true, message: '' }]" @blur.native.capture="lnterestExpenseData" :border="true" placeholder="请输入" label="利息支出(万):" label-width="10px" input-align="left" type="number" name="lnterestExpense" v-model="markData.lnterestExpense" size="small" />
</td>
</tr>
<tr>
<td>
<mobile-input :rules="[{ required: true, message: '' }]" @blur.native.capture="shortTermLoanData" :border="true" placeholder="请输入" label="短期借款(万):" label-width="10px" input-align="left" type="number" name="shortTermLoan" v-model="markData.shortTermLoan" size="small" />
</td>
<td>
<mobile-input :rules="[{ required: true, message: '' }]" @blur.native.capture="longTermLoanData" :border="true" placeholder="请输入" label="长期借款(万):" label-width="10px" input-align="left" type="number" name="longTermLoan" v-model="markData.longTermLoan " size="small" />
</td>
</tr>
<tr>
<td>
<mobile-input :rules="[{ required: true, message: '' }]" @blur.native.capture="bondsPyableData" :border="true" placeholder="请输入" label="应付债券(万):" label-width="10px" input-align="left" type="number" name="bondsPyable" v-model="markData.bondsPyable" size="small" />
</td>
<td>
<mobile-input :rules="[{ required: true, message: '' }]" @blur.native.capture="nocurrentLiaDueOneData" :border="true" placeholder="请输入" label="一年内到期非流动负债(万):" label-width="10px" input-align="left" type="number" name="nocurrentLiaDueOne" v-model="markData.nocurrentLiaDueOne" size="small" />
</td>
</tr>
<tr>
<td>
<mobile-input :rules="[{ required: true, message: '' }]" @blur.native.capture="averAccountsReeivableData" :border="true" placeholder="请输入" label="平均应收账款(万):" label-width="10px" input-align="left" type="number" name="averAccountsReeivable" v-model="markData.averAccountsReeivable " size="small" />
</td>
<td>
<mobile-input :rules="[{ required: true, message: '' }]" @blur.native.capture="rdExpensesData" :border="true" placeholder="请输入" label="研发费用(万):" label-width="10px" input-align="left" type="number" name="rdExpenses" v-model="markData.rdExpenses" size="small" />
</td>
</tr>
<tr>
<td colspan="2">
<mobile-input :border="true" :rules="[{ required: true, message: '' }]" placeholder="1、xxx板块,营收x万元,占比x%,毛利率x%,净利润xx万元,占比x%;2、xxx板块..." label="客户收入及利润结构:" type="textarea" :maxlength="500" :rows="3" label-width="10px" input-align="left" name="customerRevenueProfit" v-model="markData.customerRevenueProfit" size="small" />
</td>
</tr>
<tr>
<td colspan="2">
<mobile-input :border="true" :rules="[{ required: true, message: '' }]" placeholder="1、近期重大投融资项目;2、他行负债情况;3、流动性资金需求。" label="融资合作点位摸查:" type="textarea" :maxlength="500" :rows="3" label-width="10px" input-align="left" name="checkPoints" v-model="markData.checkPoints" size="small" />
</td>
</tr>
<tr>
<td>
<d-select :rules="[{ required: true, message: '' }]" placeholder="请选择" label="是否作为大中精准储备客户跟进:" :required="true" border="true" v-model="markData.isBMSFollow" sfield="YesOrNoOrUnd" size="small"></d-select>
</td>
</tr>
<tr>
<td colspan="2">
<mobile-input :border="true" :rules="[{ required: true, message: '' }]" placeholder="请输入" label="初步认定类原因:" type="textarea" :maxlength="500" :rows="3" label-width="10px" input-align="left" name="confirmReason" v-model="markData.confirmReason" size="small" />
</td>
</tr>
<tr>
<td>
<mobile-input :rules="[{ required: true, message: '' }]" :border="true" placeholder="请输入" label="分支行填报人:" label-width="10px" input-align="left" name="fullInUser" v-model="markData.fullInUser " size="small" />
</td>
<td>
<mobile-input :rules="[{ required: true, message: '' }]" :border="true" placeholder="请输入" label="联系方式:" type="digit" :maxlength="11" label-width="10px" input-align="left" name="contactType" v-model="markData.contactType" size="small" />
</td>
</tr>
</table>
<div class="operateButton">
<button @click="taskStatusData = '1'">保存</button>
</div>
</div>
</div>
</div>
</van-form>
<base-popup :safe-area-inset-bottom="true" :showCancel="showCancel" showConfirm="true" @confirm="SubmitMark" :confirmText="confirmText" v-model="show" title="提交营销任务">
<div class="popup-content">
<div v-if="operate == '1'" style="font-size: 24px" class="popup-data">
确定提交该营销任务?
</div>
<div v-if="operate == '2'" class="popup-data">
<svg style="width: 85%;margin: 0 auto" class="icon" aria-hidden="true">
<use xlink:href="#icon-wancheng"></use>
</svg>
<div style="font-size: 24px">提交成功!</div>
</div>
</div>
</base-popup>
</div>
</template>
<script lang="ts">
import { Component, Vue } from "vue-property-decorator";
import TitleBar from "@/components/general/TitleBar.vue";
import TableSingleView from '@/public/TableSingleView.vue';
import { BaiduMap, BmScale, BmNavigation, BmInfoWindow } from "vue-baidu-map";
import applicationApi from '@/constants/api/ms-application/application.api';
import { NativeUI } from "@/public/ts/NativeUI";
import IF from "@/public/factory/InterFaceFactory";
import { Popup } from 'vant';
import BasePopup from "@/components/general/BasePopup.vue";
Vue.use(Popup);
/**
* @Description 营销处理
* @Author JiangTao
* @Date 2021-11-10 下午 03:53
*/
@Component({
name: "ComVisitMarkDetail",
components: { TitleBar, BaiduMap, BmScale, BmNavigation, BmInfoWindow, TableSingleView, BasePopup},
})
export default class ComVisitMarkDetail extends Vue {
//客户位置坐标
upoint: any = { lng: 104.080998, lat: 30.595452 };
title = '营销详情';
taskStatusData = '1'; //提交状态
show = false;
operate = '';
UpdateOrAdd = true; //判断是否新增or更新 true =新增,false =更新
markTasknum = ''; //营销任务编号
showCancel = false;
confirmText = '';
displayForm = false;
customerName = ''; //客户名称
marketTypeName = ''; //类型
markData = {
customerName: '', //客户名称
customrIndustryClass: '', //客户行业
lncorporationDate: '', //成立日期
mainBusIncome: '', //主营业务收入
mainBusinessCost: '', //主营业务成本
netProfit: '', //净利润
netAssets: '', //净资产
totalLiabilities: '', //总负债
totalAssets: '', //总资产
totalEbit: '', //息税前利润总额
lnterestExpense: '', //利息支出
shortTermLoan: '', //短期借款
longTermLoan: '', //长期借款
bondsPyable: '', //应付债券
nocurrentLiaDueOne: '', //一年内到期非流动负债
averAccountsReeivable: '', //平均应收账款
rdExpenses: '', //研发费用
customerRevenueProfit: '', //客户收入及利润结构
checkPoints: '', //融资合作点位摸查
isBMSFollow: '', //是否作为大中精准储备客户跟进
confirmReason: '', //初步认定类原因
fullInUser: '', //分支行填报人
contactType: '', //联系方式
};
createType = ''; //任务来源
show_date = false;
mounted() {
this.showCancel = true;
this.operate = '1'
this.createType = this.$store.getters.getCusInfo.createType || '';
this.taskStatusData = '1';
if (this.createType != '') {
this.displayForm = false;
(this.markData as any).customerName = this.$store.getters.getCusInfo.customerName || '';
this.customerName = this.$store.getters.getCusInfo.customerName || '';
this.marketTypeName = this.$store.getters.getCusInfo.marketTypeName || '';
this.detailByTaskNumProject();
} else {
this.displayForm = true;
}
};
mainBusIncomeData() {
if ((this.markData as any).mainBusIncome < 0) {
(this.markData as any).mainBusIncome = '';
}
}
mainBusinessCostData() {
if ((this.markData as any).mainBusinessCost < 0) {
(this.markData as any).mainBusinessCost = '';
}
}
netProfitData() {
if ((this.markData as any).netProfit < 0) {
(this.markData as any).netProfit = '';
}
}
netAssetsData() {
if ((this.markData as any).netAssets < 0) {
(this.markData as any).netAssets = '';
}
}
totalLiabilitiesData() {
if ((this.markData as any).totalLiabilities < 0) {
(this.markData as any).totalLiabilities = '';
}
}
totalAssetsData() {
if ((this.markData as any).totalAssets < 0) {
(this.markData as any).totalAssets = '';
}
}
totalEbitData() {
if ((this.markData as any).totalEbit < 0) {
(this.markData as any).totalEbit = '';
}
}
lnterestExpenseData() {
if ((this.markData as any).lnterestExpense < 0) {
(this.markData as any).lnterestExpense = '';
}
}
shortTermLoanData() {
if ((this.markData as any).shortTermLoan < 0) {
(this.markData as any).shortTermLoan = '';
}
}
longTermLoanData() {
if ((this.markData as any).longTermLoan < 0) {
(this.markData as any).longTermLoan = '';
}
}
bondsPyableData() {
if ((this.markData as any).bondsPyable < 0) {
(this.markData as any).bondsPyable = '';
}
}
nocurrentLiaDueOneData() {
if ((this.markData as any).nocurrentLiaDueOne < 0) {
(this.markData as any).nocurrentLiaDueOne = '';
}
}
averAccountsReeivableData() {
if ((this.markData as any).averAccountsReeivable < 0) {
(this.markData as any).averAccountsReeivable = '';
}
}
rdExpensesData() {
if ((this.markData as any).rdExpenses < 0) {
(this.markData as any).rdExpenses = '';
}
}
/**
* @Description 保存
* @Author JiangTao
* @Date 2022-02-19 下午 10:22
*/
onSubmit() {
if (this.createType != '' || this.markTasknum != '') {
if (this.taskStatusData == '1') {
if (this.UpdateOrAdd) {
this.ComMarkAddProject();
} else {
this.ComMarkUpdateProject();
}
} else if (this.taskStatusData == '2') {
this.show = true;
this.operate = '1';
this.showCancel = true;
this.confirmText = "确定";
}
} else if (this.createType == '' && this.markTasknum == '') {
if (this.taskStatusData == '1') {
this.addsTaskManager();
} else if (this.taskStatusData == '2') {
this.show = true;
this.operate = '1';
this.showCancel = true;
this.confirmText = "确定";
}
}
};
SubmitMark() {
if (this.operate == '1') {
if (this.createType != '' || this.markTasknum != '') {
if (this.UpdateOrAdd) {
this.ComMarkAddProject();
} else {
this.ComMarkUpdateProject();
}
} else if (this.createType == '' && this.markTasknum == '') {
this.addsTaskManager();
}
} else if (this.operate == '2') {
this.show = false;
this.$router.go(-1);
}
};
/**
* @Description 客户经理新增多条对公客户任务
* @Author JiangTao
* @Date 2022-02-24
*/
addsTaskManager() {
const param = {
exeUser: sessionStorage.getItem('workcode'),
sendOrgId: sessionStorage.getItem('branchNo'),
estimatedMarketTime: '',
marketEndTime: '',
marketType: '3',
orgId: sessionStorage.getItem('branchNo'),
marketCustomerListPublics: [
{
customerId: '',
customerName: this.markData.customerName
}
],
tc: 'MCEP'
};
NativeUI.showWaiting('正在查询...');
return IF.transferDataInter(applicationApi.addsTaskManager, param).then((res: any) => {
console.log(res);
NativeUI.closeWaiting();
if (res.code == '1') {
this.markTasknum = res.data.tasknum;
if (this.UpdateOrAdd) {
this.ComMarkAddProject();
} else {
this.ComMarkUpdateProject();
}
}
});
};
/**
* @Description 公司精准信息摸排专项营销任务表新增
* @Author JiangTao
* @Date 2022-02-19 下午 09:48
*/
ComMarkAddProject() {
let param = {
tasknum: this.$store.getters.getCusInfo.tasknum || this.markTasknum,
customerName: this.markData.customerName,
customrIndustryClass: this.markData.customrIndustryClass, //客户行业
lncorporationDate: this.markData.lncorporationDate, //成立日期
mainBusIncome: this.markData.mainBusIncome, //主营业务收入
mainBusinessCost: this.markData.mainBusinessCost, //主营业务成本
netProfit: this.markData.netProfit, //净利润
netAssets: this.markData.netAssets, //净资产
totalLiabilities: this.markData.totalLiabilities, //总负债
totalAssets: this.markData.totalAssets, //总资产
totalEbit: this.markData.totalEbit, //息税前利润总额
lnterestExpense: this.markData.lnterestExpense, //利息支出
shortTermLoan: this.markData.shortTermLoan, //短期借款
longTermLoan: this.markData.longTermLoan, //长期借款
bondsPyable: this.markData.bondsPyable, //应付债券
nocurrentLiaDueOne: this.markData.nocurrentLiaDueOne, //一年内到期非流动负债
averAccountsReeivable: this.markData.averAccountsReeivable, //平均应收账款
rdExpenses: this.markData.rdExpenses, //研发费用
customerRevenueProfit: this.markData.customerRevenueProfit, //客户收入及利润结构
checkPoints: this.markData.checkPoints, //融资合作点位摸查
isBMSFollow: this.markData.isBMSFollow, //是否作为大中精准储备客户跟进
confirmReason: this.markData.confirmReason, //初步认定类原因
fullInUser: this.markData.fullInUser, //分支行填报人
contactType: this.markData.contactType, //联系方式
createUser: sessionStorage.getItem('userName'),
orgId: sessionStorage.getItem('branchNo')
};
NativeUI.showWaiting('正在查询...');
return IF.transferDataInter(applicationApi.ComMarkAddProject, param).then((res: any) => {
console.log(res);
NativeUI.closeWaiting();
if (res.code == '1') {
if (this.taskStatusData == '1') {
this.UpdateOrAdd = false;
NativeUI.toast('保存成功!');
} else if (this.taskStatusData == '2') {
this.updateMarketTaskStatus();
}
} else {
NativeUI.toast(res.msg);
}
});
};
/**
* @Description 公司精准信息摸排专项营销任务表查询
* @Author JiangTao
* @Date 2022-02-19 下午 10:03
*/
detailByTaskNumProject() {
let param = {
tasknum: this.$store.getters.getCusInfo.tasknum //客户名称
};
NativeUI.showWaiting('正在查询...');
return IF.transferDataInter(applicationApi.detailByTaskNumProject, param).then((res: any) => {
console.log(res);
NativeUI.closeWaiting();
if (res.code == '1') {
if (res.data != 'null') {
this.markData = res.data;
this.UpdateOrAdd = false;
this.displayForm = true;
} else {
this.displayForm = true;
this.UpdateOrAdd = true;
}
}
});
};
/**
* @Description 公司精准信息摸排专项营销任务表更新
* @Author JiangTao
* @Date 2022-02-19 下午 10:57
*/
ComMarkUpdateProject() {
let param = {
tasknum: this.$store.getters.getCusInfo.tasknum || this.markTasknum,
customerName: this.markData.customerName,
customrIndustryClass: this.markData.customrIndustryClass, //客户行业
lncorporationDate: this.markData.lncorporationDate, //成立日期
mainBusIncome: this.markData.mainBusIncome, //主营业务收入
mainBusinessCost: this.markData.mainBusinessCost, //主营业务成本
netProfit: this.markData.netProfit, //净利润
netAssets: this.markData.netAssets, //净资产
totalLiabilities: this.markData.totalLiabilities, //总负债
totalAssets: this.markData.totalAssets, //总资产
totalEbit: this.markData.totalEbit, //息税前利润总额
lnterestExpense: this.markData.lnterestExpense, //利息支出
shortTermLoan: this.markData.shortTermLoan, //短期借款
longTermLoan: this.markData.longTermLoan, //长期借款
bondsPyable: this.markData.bondsPyable, //应付债券
nocurrentLiaDueOne: this.markData.nocurrentLiaDueOne, //一年内到期非流动负债
averAccountsReeivable: this.markData.averAccountsReeivable, //平均应收账款
rdExpenses: this.markData.rdExpenses, //研发费用
customerRevenueProfit: this.markData.customerRevenueProfit, //客户收入及利润结构
checkPoints: this.markData.checkPoints, //融资合作点位摸查
isBMSFollow: this.markData.isBMSFollow, //是否作为大中精准储备客户跟进
confirmReason: this.markData.confirmReason, //初步认定类原因
fullInUser: this.markData.fullInUser, //分支行填报人
contactType: this.markData.contactType, //联系方式
updUser: sessionStorage.getItem('userName'),
orgId: sessionStorage.getItem('branchNo'),
};
NativeUI.showWaiting('正在查询...');
return IF.transferDataInter(applicationApi.ComMarkUpdateProject, param).then((res: any) => {
console.log(res);
NativeUI.closeWaiting();
if (res.code == '1') {
if (this.taskStatusData == '1') {
NativeUI.toast('保存成功!');
} else if (this.taskStatusData == '2') {
this.updateMarketTaskStatus();
}
} else {
NativeUI.toast(res.msg);
}
});
};
/**
* @Description 修改任务状态
* @Author JiangTao
* @Date 2022-02-19 下午 10:29
*/
updateMarketTaskStatus() {
let param = {
tasknum: this.$store.getters.getCusInfo.tasknum || this.markTasknum, //客户名称
taskStatus: '4'
};
NativeUI.showWaiting('正在查询...');
return IF.transferDataInter(applicationApi.updateMarketTaskStatus, param).then((res: any) => {
console.log(res);
NativeUI.closeWaiting();
if (res.code == '1') {
this.operate = '2';
// NativeUI.toast(res.msg);
}
});
};
/**
* @Description 取消
* @Author JiangTao
* @Date 2022-02-17 下午 07:21
*/
cancel() {
this.show = false;
console.log(this.show);
};
onClick() {
this.show = false;
this.$router.go(-1);
};
mapReady() {
// this.BMapGL = bmap.BMap;
// this.map = bmap.map;
}
}
</script>
<style lang="scss" scoped>
.marketing-processing-content {
width: 100%;
height: calc(100vh - 60px);
display: flex;
}
.customer-information {
width: 25%;
height: 100%;
padding: 2%;
border-right: 2px solid rgba(242, 242, 242, 1);
}
.customer-information-top {
width: 100%;
height: 60px;
display: flex;
align-items: center;
}
.avatar {
width: 20%;
}
.customer-name > div:nth-child(1) {
font-weight: bold;
font-size: 18px;
color: #333333;
font-family: "Arial Normal", "Arial";
}
.customer-name > div:nth-child(2) {
width: auto;
padding: 1% 10px 0 10px;
margin-top: 2%;
text-align: center;
border: 1px solid rgba(215, 215, 215, 1);
border-radius: 5px;
font-size: 13px;
color: #333333;
font-family: "Arial Normal", "Arial";
}
.customer-information-central table {
width: 100%;
}
.customer-information-central table tr > td:nth-child(1) {
font-size: 14px;
color: #999999;
line-height: 30px;
}
.customer-information-central table tr > td:nth-child(2) {
font-size: 14px;
color: #333333;
font-family: "Arial Normal", "Arial";
}
.customer-information-central table tr:nth-child(4) > td {
padding-top: 4%;
color: #02a7f0;
}
.sign-in {
width: 100%;
height: 35%;
margin-top: 10%;
}
.operate {
width: 100%;
margin-top: 3%;
}
.operate > button:nth-child(1) {
width: 50%;
height: 36px;
margin: 7% auto 7% auto;
display: block;
background-color: white;
border: 1px solid #02a7f0;
color: #02a7f0;
border-radius: 20px;
font-size: 14px;
font-family: "Arial Normal", "Arial";
}
.operate > button:nth-child(2) {
width: 50%;
height: 36px;
margin: 0 auto;
display: block;
background-color: white;
border: 1px solid rgba(215, 215, 215, 1);
color: #999999;
border-radius: 20px;
font-size: 14px;
font-family: "Arial Normal", "Arial";
}
.bm-view {
width: 100%;
height: 100%;
}
.details {
width: 100%;
height: calc(100vh - 60px - 5%);
margin: 2% auto;
}
.divBackground {
background-color: white;
}
::v-deep .van-nav-bar__right {
padding-top: 16px;
}
.formStyle {
width: 80%;
height: 100%;
overflow-y: auto;
margin: 0 auto;
}
.checkbox {
display: flex;
align-items: center;
padding: 0 1rem 1.5rem 1rem;
}
.checkbox-title {
width: 100px;
margin-right: 12px;
font-size: 14px;
color: #999999;
text-align: right;
}
.checkbox-data {
width: 70%;
}
.checkbox-data > div:nth-child(1) {
width: 100%;
display: flex;
}
.checkbox-data > div:nth-child(1) > div {
position: relative;
width: auto;
min-width: 130px;
height: 30px;
line-height: 30px;
text-align: center;
background-color: #f2f2f2;
font-size: 14px;
border-radius: 5px;
padding: 0 20px;
margin-right: 15px;
border: 0.001rem solid rgba(215, 215, 215, 1);
}
.checkbox-data > div:nth-child(2) {
width: 100%;
color: red;
font-size: 12px;
}
::v-deep .van-field__label {
width: 100px;
text-align: right;
}
::v-deep .van-field__value {
display: flex;
align-items: center;
}
::v-deep .van-field__body {
width: 100%;
}
.operateButton {
width: 100%;
display: flex;
justify-content: center;
}
.operateButton button {
width: 20.5%;
border-radius: 30px;
font-size: 18px;
padding: 1% 0;
margin: 1%;
outline: none;
color: white;
background-color: #FF574C;
border: 1px solid #FF574C;
}
::v-deep .popup-body {
display: flex;
align-items: center;
justify-content: center;
}
.popup-data {
text-align: center;
}
</style>
<template>
<div class="divBackground">
<title-bar :title="title" @clickLeft="onClick">
<van-icon slot="left" name="cross" size="24" />
</title-bar>
<van-form @submit="onSubmit">
<button
@click="taskStatusData = '2'"
style="background-color: rgba(0, 0, 0, 0);border: rgba(0, 0, 0, 0);position: absolute;right: 0;top: 0;color: white;z-index: 99999999;font-size: 14px;height: 60px;width: 46px;padding-top: 16px;display: flex;align-items: center;justify-content: center;outline: none;"
>
提交
</button>
<div class="marketing-processing-content">
<div v-if="createType != '' && createType != '3'" class="customer-information">
<div class="customer-information-top">
<div class="avatar">
<svg style="width: 100%" class="icon" aria-hidden="true">
<use xlink:href="#icon-gongsimingcheng"></use>
</svg>
</div>
<div class="customer-name">
<div>{{ customerName }}</div>
<div>{{ marketTypeName }}</div>
</div>
</div>
<!-- <div class="customer-information-central">-->
<!-- <table-single-view v-if="dataBasic.cusAddr != ''" :keyValue="keyValueSingle" :data="dataBasic"></table-single-view>-->
<!-- <div v-if="!smd" @click="time_axis"><img src="@/assets/svg/time-axis-logo.svg" alt="" />&nbsp;&nbsp;时光轴</div>-->
<!-- </div>-->
<div class="sign-in">
<!-- 百度地图-->
<baidu-map class="bm-view" ak="FP7zWR4e8lhxZ6v0IicoG1R5" :center="{ lng: this.upoint.lng, lat: this.upoint.lat }" :zoom="15" @ready="mapReady"> </baidu-map>
</div>
<div class="operate">
<!-- <button><img src="../../../../assets/svg/blue-navigation-logo.svg" alt="" />导航</button>-->
<!-- <button>添加日程</button>-->
</div>
</div>
<div class="details v-scroller">
<div class="formStyle">
<sub-title>营销详情</sub-title>
<table v-if="displayForm" style="width: 95%; margin: 2% auto">
<tr v-if="createType == '' || createType == '3'">
<td>
<mobile-input :border="true" :rules="[{ required: true, message: '' }]" placeholder="请输入" label="分支行名字:" label-width="10px" input-align="left" name="branchName" v-model="markData.branchName" size="small" />
</td>
<td>
<mobile-input :border="true" :rules="[{ required: true, message: '' }]" placeholder="请输入" label="客户名称:" label-width="10px" input-align="left" name="customerName" v-model="markData.customerName" size="small" />
</td>
</tr>
<tr>
<td>
<d-select :rules="[{ required: true, message: '' }]" placeholder="请选择" label="控股类型:" :required="true" border="true" v-model="markData.holdingType" sfield="HOLDING_TYPE" size="small"></d-select>
</td>
<td>
<d-select :rules="[{ required: true, message: '' }]" placeholder="请选择" label="客户分类:" :required="true" border="true" v-model="markData.customerClass" sfield="CUSTOMER_CLASS" size="small"></d-select>
</td>
</tr>
<tr>
<td>
<d-select :rules="[{ required: true, message: '' }]" placeholder="请选择" label="客户行业分类:" :required="true" border="true" v-model="markData.customrIndustryClass" sfield="CUSTOMR_INDUSTRY_CLASS" size="small"></d-select>
</td>
<td>
<d-select :rules="[{ required: true, message: '' }]" placeholder="请选择" label="资本市场:" :required="true" border="true" v-model="markData.capitalMarket" sfield="CAPITAL_MARKET" size="small"></d-select>
</td>
</tr>
<tr>
<td>
<d-select :rules="[{ required: true, message: '' }]" placeholder="请选择" label="是否招商引资:" :required="true" border="true" v-model="markData.whetherToAttrInvestment" sfield="INVESTMENT_TYPE" size="small"></d-select>
</td>
<td>
<d-datetime-picker label="拜访客户时间:" :rules="[{ required: true, message: '' }]" v-model="markData.visitTime" placeholder="请选择拜访客户时间" :border="true" :required="true"></d-datetime-picker>
</td>
</tr>
<tr>
<td>
<mobile-input type="digit" :border="true" :rules="[{ required: true, message: '' }]" placeholder="请输入" label="拜访次数:" label-width="10px" input-align="left" name="visitCounts" v-model="markData.visitCounts" size="small" />
</td>
<td>
<d-select :rules="[{ required: true, message: '' }]" placeholder="请选择" label="参与领导分类:" :required="true" border="true" v-model="markData.proInLeaderClass" sfield="PARTICIPATELEADER_TYPE" size="small"></d-select>
</td>
</tr>
<tr>
<td colspan="2">
<div class="checkbox">
<div class="checkbox-title"><span style="color: red;margin-left: -7px">*</span>营销方向:</div>
<div class="checkbox-data">
<div>
<div :style="ZCYWStyle" @click="ZCYW">
资产业务
<img
v-if="this.ZCYW_data == '1'"
style="width: 1.2rem;height: 1.2rem;position: absolute;bottom: 0;right: 0;"
src="@/assets/images/orange-subscript.png"
alt=""
/>
</div>
<div :style="FZYWStyle" @click="FZYW">
负债业务
<img
v-if="this.FZYW_data == '1'"
style="width: 1.2rem;height: 1.2rem;position: absolute;bottom: 0;right: 0;"
src="@/assets/images/orange-subscript.png"
alt=""
/>
</div>
<div :style="XXHQStyle" @click="XXHQ">
营销信息获取
<img
v-if="this.XXHQ_data == '1'"
style="width: 1.2rem;height: 1.2rem;position: absolute;bottom: 0;right: 0;"
src="@/assets/images/orange-subscript.png"
alt=""
/>
</div>
<div :style="QTStyle" @click="QT">
其他
<img
v-if="this.QT_data == '1'"
style="width: 1.2rem;height: 1.2rem;position: absolute;bottom: 0;right: 0;"
src="@/assets/images/orange-subscript.png"
alt=""
/>
</div>
</div>
<div :style="marketingDirectionCheck">请选择营销方向</div>
</div>
</div>
</td>
</tr>
<tr>
<td colspan="2">
<div class="checkbox">
<div class="checkbox-title"><span style="color: red;margin-left: -7px">*</span>拜访目的:</div>
<div class="checkbox-data">
<div>
<div :style="CCBFStyle" @click="CCBF">
初次拜访
<img
v-if="this.CCBF_data == '1'"
style="width: 1.2rem;height: 1.2rem;position: absolute;bottom: 0;right: 0;"
src="@/assets/images/orange-subscript.png"
alt=""
/>
</div>
<div :style="HZYXStyle" @click="HZYX">
达成合作意向
<img
v-if="this.HZYX_data == '1'"
style="width: 1.2rem;height: 1.2rem;position: absolute;bottom: 0;right: 0;"
src="@/assets/images/orange-subscript.png"
alt=""
/>
</div>
<div :style="SXFAStyle" @click="SXFA">
确定授信方案
<img
v-if="this.SXFA_data == '1'"
style="width: 1.2rem;height: 1.2rem;position: absolute;bottom: 0;right: 0;"
src="@/assets/images/orange-subscript.png"
alt=""
/>
</div>
<div :style="KHWHStyle" @click="KHWH">
存量客户维护
<img
v-if="this.KHWH_data == '1'"
style="width: 1.2rem;height: 1.2rem;position: absolute;bottom: 0;right: 0;"
src="@/assets/images/orange-subscript.png"
alt=""
/>
</div>
</div>
<div :style="visitPirposeCheck">请选择拜访目的</div>
</div>
</div>
</td>
</tr>
<tr>
<td colspan="2">
<mobile-input :border="true" :rules="[{ required: true, message: '' }]" placeholder="职位+姓名" label="我行拜访人员:" type="textarea" :maxlength="500" :rows="3" label-width="10px" input-align="left" name="ourVisitors" v-model="markData.ourVisitors" size="small" />
</td>
</tr>
<tr>
<td colspan="2">
<mobile-input :border="true" :rules="[{ required: true, message: '' }]" placeholder="拜访地址" label="拜访地址:" type="textarea" :maxlength="500" :rows="3" label-width="10px" input-align="left" name="ourVisitors" v-model="markData.visitAddr" size="small" />
</td>
</tr>
<tr>
<td>
<mobile-input :border="true" :rules="[{ required: true, message: '' }]" placeholder="请输入" label="拜访对象姓名:" label-width="10px" input-align="left" name="visitTargetName" v-model="markData.visitTargetName" size="small" />
</td>
<td>
<mobile-input :border="true" :rules="[{ required: true, message: '' }]" placeholder="请输入" label="拜访对象职位:" label-width="10px" input-align="left" name="visitTargetPosition" v-model="markData.visitTargetPosition" size="small" />
</td>
</tr>
<tr>
<td colspan="2">
<mobile-input :border="true" :rules="[{ required: true, message: '' }]" placeholder="请输入" label="拜访内容:" type="textarea" :maxlength="500" :rows="3" label-width="10px" input-align="left" name="visitContent" v-model="markData.visitContent" size="small" />
</td>
</tr>
<tr>
<td colspan="2">
<mobile-input :border="true" :rules="[{ required: true, message: '' }]" placeholder="企业经营情况,银行授信情况,银行结算情况等" label="拜访洽谈重点:" type="textarea" :maxlength="500" :rows="3" label-width="10px" input-align="left" name="visitNegoKeyPoint" v-model="markData.visitNegoKeyPoint" size="small" />
</td>
</tr>
<tr>
<td colspan="2">
<mobile-input :border="true" :rules="[{ required: true, message: '' }]" placeholder="详细描述企业主营业务、业务模式、行业地位、上下游客户情况等" label="企业主营业务及业务模式:" type="textarea" :maxlength="500" :rows="3" label-width="10px" input-align="left" name="mainBusAndDetail" v-model="markData.mainBusAndDetail" size="small" />
</td>
</tr>
<tr>
<td colspan="2">
<mobile-input :border="true" :rules="[{ required: true, message: '' }]" placeholder="主营业务收入、利润、总资产、负债等主要财务指标" label="主要财务指标:" type="textarea" :maxlength="500" :rows="3" label-width="10px" input-align="left" name="mainFinancialIndicators" v-model="markData.mainFinancialIndicators" size="small" />
</td>
</tr>
<tr>
<td colspan="2">
<mobile-input :border="true" :rules="[{ required: true, message: '' }]" placeholder="资产业务:产品、金额,期限等负债业务:账户开立、结算存款等" label="企业业务需求:" type="textarea" :maxlength="500" :rows="3" label-width="10px" input-align="left" name="businessRequirements" v-model="markData.businessRequirements" size="small" />
</td>
</tr>
<tr>
<td colspan="2">
<mobile-input :border="true" :rules="[{ required: true, message: '' }]" placeholder="请输入" label="后续跟进方案:" type="textarea" :maxlength="500" :rows="3" label-width="10px" input-align="left" name="followUpPlan" v-model="markData.followUpPlan" size="small" />
</td>
</tr>
<tr>
<td>
<d-select :rules="[{ required: true, message: '' }]" placeholder="请选择" label="拜访情况分类:" :required="true" border="true" v-model="markData.visitsClass" sfield="visitsClass" size="small"></d-select>
</td>
<td>
<mobile-input :border="true" :rules="[{ required: true, message: '' }]" placeholder="请输入" label="主管客户经理:" label-width="10px" input-align="left" name="mainManager" v-model="markData.mainManager" size="small" />
</td>
</tr>
<tr>
<td>
<mobile-input :border="true" :rules="[{ required: true, message: '' }]" placeholder="请输入" label="主管客户经理联系方式:" type="number" :maxlength="11" label-width="10px" input-align="left" name="mainManagerPhone" v-model="markData.mainManagerPhone" size="small" />
</td>
</tr>
<tr>
<td colspan="2">
<mobile-input :border="true" placeholder="请输入" label="其他事项:" type="textarea" :maxlength="500" :rows="3" label-width="10px" input-align="left" name="otherMatters" v-model="markData.otherMatters" size="small" />
</td>
</tr>
</table>
<div class="operateButton">
<button @click="taskStatusData = '1'">保存</button>
</div>
</div>
</div>
</div>
</van-form>
<base-popup :safe-area-inset-bottom="true" :showCancel="showCancel" showConfirm="true" @confirm="SubmitMark" :confirmText="confirmText" v-model="show" title="提交营销任务">
<div class="popup-content">
<div v-if="operate == '1'" style="font-size: 24px" class="popup-data">
确定提交该营销任务?
</div>
<div v-if="operate == '2'" class="popup-data">
<svg style="width: 85%;margin: 0 auto" class="icon" aria-hidden="true">
<use xlink:href="#icon-wancheng"></use>
</svg>
<div style="font-size: 24px">提交成功!</div>
</div>
</div>
</base-popup>
</div>
</template>
<script lang="ts">
import { Component, Vue } from "vue-property-decorator";
import TitleBar from "@/components/general/TitleBar.vue";
import TableSingleView from '@/public/TableSingleView.vue';
import { BaiduMap, BmScale, BmNavigation, BmInfoWindow } from "vue-baidu-map";
import applicationApi from '@/constants/api/ms-application/application.api';
import DDatetimePicker from "@/components/general/form/DDatetimePicker.vue";
import { NativeUI } from "@/public/ts/NativeUI";
import IF from "@/public/factory/InterFaceFactory";
import { Popup } from 'vant';
import BasePopup from "@/components/general/BasePopup.vue";
Vue.use(Popup);
/**
* @Description 营销处理
* @Author JiangTao
* @Date 2021-11-10 下午 03:53
*/
@Component({
name: "ComVisitMarkDetail",
components: { TitleBar, BaiduMap, BmScale, BmNavigation, BmInfoWindow, TableSingleView, BasePopup, DDatetimePicker},
})
export default class ComVisitMarkDetail extends Vue {
title = '营销详情';
taskStatusData = '1'; //提交状态
show = false;
operate = '';
UpdateOrAdd = true; //判断是否新增or更新 true =新增,false =更新
marketTypeName = ''; //标签名称
customerName = '';
markTasknum = ''; //营销任务编号
//客户位置坐标
upoint: any = { lng: 104.080998, lat: 30.595452 };
showCancel = false;
confirmText = '';
markData: any = {
branchName: '', //分支行名字
customerName: '', //客户名称
holdingType: '', //控股类型
customerClass: '', //客户分类
customrIndustryClass: '', //客户行业分类
capitalMarket: '', //资本市场
whetherToAttrInvestment: '', //是否招商引资
marketingDirection: '', //营销方向
visitPirpose: '', //拜访目的
visitCounts: '', //拜访次数
proInLeaderClass: '', //参与领导分类
ourVisitors: '', //我行拜访人员
visitTime: '', //成立日期
visitAddr: '', //地址
visitTargetName: '', //拜访对象姓名
visitTargetPosition: '', //拜访对象职位
visitContent: '', //拜访内容
visitNegoKeyPoint: '', //拜访洽谈重点
mainBusAndDetail: '', //企业主营业务及业务模式
mainFinancialIndicators: '', //主要财务指标
businessRequirements: '', //企业业务需求
followUpPlan: '', //后续跟进方案
visitsClass: '', //拜访情况分类
mainManager: '', //主管客户经理
mainManagerPhone: '', //主管客户经理联系方式
otherMatters: '' //其它事项
};
displayForm = false;
show_date = false;
// currentDate = new Date();
// minDate = new Date();
// maxDate = new Date(new Date().getFullYear() + 20, 1, 1);
createType = ''; //任务来源
checkboxStyle = {
'border-color': '#FF574C',
'background-color': '#fff3f3',
'color': '#FF574C',
};
//营销方向
ZCYW_data = '0'; //资产业务
FZYW_data = '0'; //负债业务
XXHQ_data = '0'; //营销信息获取
QT_data = '0'; //其他
ZCYWStyle = {}; //资产业务
FZYWStyle = {}; //负债业务
XXHQStyle = {}; //营销信息获取
QTStyle = {}; //其他
marketingDirectionCheck = {}; //校验判断
//拜访目的
CCBF_data = '0';
HZYX_data = '0';
SXFA_data = '0';
KHWH_data = '0';
CCBFStyle = {};
HZYXStyle = {};
SXFAStyle = {};
KHWHStyle = {};
visitPirposeCheck = {}; //校验判断
mounted() {
this.showCancel = true;
this.operate = '1'
this.marketingDirectionCheck = {
'display': 'none'
};
this.visitPirposeCheck = {
'display': 'none'
};
this.createType = this.$store.getters.getCusInfo.createType || '';
this.taskStatusData = '1';
if (this.createType != '') {
this.displayForm = false;
this.markData.customerName = this.$store.getters.getCusInfo.customerName || '';
this.customerName = this.$store.getters.getCusInfo.customerName || '';
this.marketTypeName = this.$store.getters.getCusInfo.marketTypeName || '';
this.detailByTaskNum();
} else {
this.displayForm = true;
}
};
//营销方向
ZCYW() {
if (this.ZCYWStyle != this.checkboxStyle) {
this.marketingDirectionCheck = {
'display': 'none'
};
this.ZCYW_data = '1';
this.ZCYWStyle = this.checkboxStyle;
} else {
this.ZCYW_data = '0';
this.ZCYWStyle = {};
}
};
FZYW() {
if (this.FZYWStyle != this.checkboxStyle) {
this.marketingDirectionCheck = {
'display': 'none'
};
this.FZYW_data = '1';
this.FZYWStyle = this.checkboxStyle;
} else {
this.FZYW_data = '0';
this.FZYWStyle = {};
}
};
XXHQ() {
if (this.XXHQStyle != this.checkboxStyle) {
this.marketingDirectionCheck = {
'display': 'none'
};
this.XXHQ_data = '1';
this.XXHQStyle = this.checkboxStyle;
} else {
this.XXHQ_data = '0';
this.XXHQStyle = {};
}
};
QT() {
if (this.QTStyle != this.checkboxStyle) {
this.marketingDirectionCheck = {
'display': 'none'
};
this.QT_data = '1';
this.QTStyle = this.checkboxStyle;
} else {
this.QT_data = '0';
this.QTStyle = {};
}
};
//拜访目的
CCBF() {
if (this.CCBFStyle != this.checkboxStyle) {
this.visitPirposeCheck = {
'display': 'none'
};
this.CCBF_data = '1';
this.CCBFStyle = this.checkboxStyle;
} else {
this.CCBF_data = '0';
this.CCBFStyle = {};
}
};
HZYX() {
if (this.HZYXStyle != this.checkboxStyle) {
this.visitPirposeCheck = {
'display': 'none'
};
this.HZYX_data = '1';
this.HZYXStyle = this.checkboxStyle;
} else {
this.HZYX_data = '0';
this.HZYXStyle = {};
}
};
SXFA() {
if (this.SXFAStyle != this.checkboxStyle) {
this.visitPirposeCheck = {
'display': 'none'
};
this.SXFA_data = '1';
this.SXFAStyle = this.checkboxStyle;
} else {
this.SXFA_data = '0';
this.SXFAStyle = {};
}
};
KHWH() {
if (this.KHWHStyle != this.checkboxStyle) {
this.visitPirposeCheck = {
'display': 'none'
};
this.KHWH_data = '1';
this.KHWHStyle = this.checkboxStyle;
} else {
this.KHWH_data = '0';
this.KHWHStyle = {};
}
};
onClickRight() {
// this.saveSubmit();
}
mapReady() {
// this.BMapGL = bmap.BMap;
// this.map = bmap.map;
}
/**
* @Description 客户经理新增多条对公客户任务
* @Author JiangTao
* @Date 2022-02-24
*/
addsTaskManager() {
const param = {
exeUser: sessionStorage.getItem('workcode'),
sendOrgId: sessionStorage.getItem('branchNo'),
estimatedMarketTime: '',
marketEndTime: '',
marketType: '1',
orgId: sessionStorage.getItem('branchNo'),
marketCustomerListPublics: [
{
customerId: '',
customerName: this.markData.customerName
}
],
tc: 'MCEP'
};
NativeUI.showWaiting('正在查询...');
return IF.transferDataInter(applicationApi.addsTaskManager, param).then((res: any) => {
console.log(res);
NativeUI.closeWaiting();
if (res.code == '1') {
this.markTasknum = res.data.tasknum;
if (this.UpdateOrAdd) {
this.ComMarkAddVisit();
} else {
this.ComMarkUpdateVisit();
}
}
});
};
/**
* @Description 保存
* @Author JiangTao
* @Date 2022-02-19 下午 10:22
*/
onSubmit() {
this.markData.marketingDirection = '';
if (this.ZCYW_data == '1') {
this.markData.marketingDirection = this.markData.marketingDirection + '1,';
}
if (this.FZYW_data == '1') {
this.markData.marketingDirection = this.markData.marketingDirection + '2,';
}
if (this.XXHQ_data == '1') {
this.markData.marketingDirection = this.markData.marketingDirection + '3,';
}
if (this.QT_data == '1') {
this.markData.marketingDirection = this.markData.marketingDirection + '4,';
}
this.markData.visitPirpose = '';
if (this.CCBF_data == '1') {
this.markData.visitPirpose = this.markData.visitPirpose + '1,';
}
if (this.HZYX_data == '1') {
this.markData.visitPirpose = this.markData.visitPirpose + '2,';
}
if (this.SXFA_data == '1') {
this.markData.visitPirpose = this.markData.visitPirpose + '3,';
}
if (this.KHWH_data == '1') {
this.markData.visitPirpose = this.markData.visitPirpose + '4,';
}
if (this.markData.marketingDirection != '') {
this.marketingDirectionCheck = {
'display': 'none'
};
this.markData.marketingDirection = this.markData.marketingDirection.substring(0, this.markData.marketingDirection.length - 1);
if (this.markData.visitPirpose != '') {
this.visitPirposeCheck = {
'display': 'none'
};
this.markData.visitPirpose = this.markData.visitPirpose.substring(0, this.markData.visitPirpose.length - 1);
console.log("tgg123123221======", this.markData.visitTime);
if (this.createType != '' || this.markTasknum != '') {
if (this.taskStatusData == '1') {
if (this.UpdateOrAdd) {
this.ComMarkAddVisit();
} else {
this.ComMarkUpdateVisit();
}
} else if (this.taskStatusData == '2') {
this.show = true;
this.operate = '1';
this.showCancel = true;
this.confirmText = "确定";
}
} else if (this.createType == '' && this.markTasknum == '') {
if (this.taskStatusData == '1') {
this.addsTaskManager();
} else if (this.taskStatusData == '2') {
this.show = true;
this.operate = '1';
this.showCancel = true;
this.confirmText = "确定";
}
}
} else {
this.visitPirposeCheck = {};
}
}else {
this.marketingDirectionCheck = {};
}
};
SubmitMark() {
if (this.operate == '1') {
if (this.createType != '' || this.markTasknum != '') {
if (this.UpdateOrAdd) {
this.ComMarkAddVisit();
} else {
this.ComMarkUpdateVisit();
}
} else if (this.createType == '' && this.markTasknum == '') {
this.addsTaskManager();
}
} else if (this.operate == '2') {
this.show = false;
this.$router.go(-1);
}
};
/**
* @Description 对公客户拜访营销任务表新增
* @Author JiangTao
* @Date 2022-02-19 下午 09:48
*/
ComMarkAddVisit() {
let param = {
tasknum: this.$store.getters.getCusInfo.tasknum || this.markTasknum,
branchName: this.markData.branchName, //分支行名字
customerName: this.markData.customerName, //客户名称
holdingType: this.markData.holdingType, //控股类型
customerClass: this.markData.customerClass, //客户分类
customrIndustryClass: this.markData.customrIndustryClass, //客户行业分类
capitalMarket: this.markData.capitalMarket, //资本市场
whetherToAttrInvestment: this.markData.whetherToAttrInvestment, //是否招商引资
marketingDirection: this.markData.marketingDirection, //营销方向
visitPirpose: this.markData.visitPirpose, //拜访目的
visitCounts: this.markData.visitCounts, //拜访次数
proInLeaderClass: this.markData.proInLeaderClass, //参与领导分类
ourVisitors: this.markData.ourVisitors, //我行拜访人员
visitTime: this.markData.visitTime, //成立日期
visitAddr: this.markData.visitAddr, //地址
visitTargetName: this.markData.visitTargetName, //拜访对象姓名
visitTargetPosition: this.markData.visitTargetPosition, //拜访对象职位
visitContent: this.markData.visitContent, //拜访内容
visitNegoKeyPoint: this.markData.visitNegoKeyPoint, //拜访洽谈重点
mainBusAndDetail: this.markData.mainBusAndDetail, //企业主营业务及业务模式
mainFinancialIndicators: this.markData.mainFinancialIndicators, //主要财务指标
businessRequirements: this.markData.businessRequirements, //企业业务需求
followUpPlan: this.markData.followUpPlan, //后续跟进方案
visitsClass: this.markData.visitsClass, //拜访情况分类
mainManager: this.markData.mainManager, //主管客户经理
mainManagerPhone: this.markData.mainManagerPhone, //主管客户经理联系方式
otherMatters: this.markData.otherMatters, //其它事项
createUser: sessionStorage.getItem('userName')
};
NativeUI.showWaiting('正在查询...');
return IF.transferDataInter(applicationApi.ComMarkAddVisit, param).then((res: any) => {
NativeUI.closeWaiting();
if (res.code == '1') {
if (this.taskStatusData == '1') {
this.UpdateOrAdd = false;
NativeUI.toast('保存成功!');
} else if (this.taskStatusData == '2') {
this.updateMarketTaskStatus();
}
} else {
NativeUI.toast(res.msg);
}
});
};
/**
* @Description 对公客户拜访营销任务表查询
* @Author JiangTao
* @Date 2022-02-19 下午 10:03
*/
detailByTaskNum() {
this.markData.marketingDirection = '';
let param = {
tasknum: this.$store.getters.getCusInfo.tasknum //客户名称
};
NativeUI.showWaiting('正在查询...');
return IF.transferDataInter(applicationApi.detailByTaskNum, param).then((res: any) => {
NativeUI.closeWaiting();
console.log("====", res.data.visitTime);
if (res.code == '1') {
if (res.data != 'null') {
this.UpdateOrAdd = false;
this.markData = res.data;
this.displayForm = true;
if (this.markData.marketingDirection.indexOf('1') != -1) {
this.marketingDirectionCheck = {
'display': 'none'
};
this.ZCYW_data = '1';
this.ZCYWStyle = this.checkboxStyle;
}
if (this.markData.marketingDirection.indexOf('2') != -1) {
this.marketingDirectionCheck = {
'display': 'none'
};
this.FZYW_data = '1';
this.FZYWStyle = this.checkboxStyle;
}
if (this.markData.marketingDirection.indexOf('3') != -1) {
this.marketingDirectionCheck = {
'display': 'none'
};
this.XXHQ_data = '1';
this.XXHQStyle = this.checkboxStyle;
}
if (this.markData.marketingDirection.indexOf('4') != -1) {
this.marketingDirectionCheck = {
'display': 'none'
};
this.QT_data = '1';
this.QTStyle = this.checkboxStyle;
}
if (this.markData.visitPirpose.indexOf('1') != -1) {
this.visitPirposeCheck = {
'display': 'none'
};
this.CCBF_data = '1';
this.CCBFStyle = this.checkboxStyle;
}
if (this.markData.visitPirpose.indexOf('2') != -1) {
this.visitPirposeCheck = {
'display': 'none'
};
this.HZYX_data = '1';
this.HZYXStyle = this.checkboxStyle;
}
if (this.markData.visitPirpose.indexOf('3') != -1) {
this.visitPirposeCheck = {
'display': 'none'
};
this.SXFA_data = '1';
this.SXFAStyle = this.checkboxStyle;
}
if (this.markData.visitPirpose.indexOf('4') != -1) {
this.visitPirposeCheck = {
'display': 'none'
};
this.KHWH_data = '1';
this.KHWHStyle = this.checkboxStyle;
}
} else {
this.displayForm = true;
this.UpdateOrAdd = true;
}
}
});
};
/**
* @Description 对公客户拜访营销任务表更新
* @Author JiangTao
* @Date 2022-02-19 下午 10:57
*/
ComMarkUpdateVisit() {
let param = {
tasknum: this.$store.getters.getCusInfo.tasknum || this.markTasknum,
branchName: this.markData.branchName, //分支行名字
customerName: this.markData.customerName, //客户名称
holdingType: this.markData.holdingType, //控股类型
customerClass: this.markData.customerClass, //客户分类
customrIndustryClass: this.markData.customrIndustryClass, //客户行业分类
capitalMarket: this.markData.capitalMarket, //资本市场
whetherToAttrInvestment: this.markData.whetherToAttrInvestment, //是否招商引资
marketingDirection: this.markData.marketingDirection, //营销方向
visitPirpose: this.markData.visitPirpose, //拜访目的
visitCounts: this.markData.visitCounts, //拜访次数
proInLeaderClass: this.markData.proInLeaderClass, //参与领导分类
ourVisitors: this.markData.ourVisitors, //我行拜访人员
visitTime: this.markData.visitTime, //成立日期
visitAddr: this.markData.visitAddr, //地址
visitTargetName: this.markData.visitTargetName, //拜访对象姓名
visitTargetPosition: this.markData.visitTargetPosition, //拜访对象职位
visitContent: this.markData.visitContent, //拜访内容
visitNegoKeyPoint: this.markData.visitNegoKeyPoint, //拜访洽谈重点
mainBusAndDetail: this.markData.mainBusAndDetail, //企业主营业务及业务模式
mainFinancialIndicators: this.markData.mainFinancialIndicators, //主要财务指标
businessRequirements: this.markData.businessRequirements, //企业业务需求
followUpPlan: this.markData.followUpPlan, //后续跟进方案
visitsClass: this.markData.visitsClass, //拜访情况分类
mainManager: this.markData.mainManager, //主管客户经理
mainManagerPhone: this.markData.mainManagerPhone, //主管客户经理联系方式
otherMatters: this.markData.otherMatters, //其它事项
updUser: sessionStorage.getItem('userName'),
orgId: sessionStorage.getItem('branchNo'),
};
NativeUI.showWaiting('正在查询...');
return IF.transferDataInter(applicationApi.ComMarkUpdateVisit, param).then((res: any) => {
NativeUI.closeWaiting();
if (res.code == '1') {
if (this.taskStatusData == '1') {
NativeUI.toast('保存成功!');
} else if (this.taskStatusData == '2') {
this.updateMarketTaskStatus();
}
} else {
NativeUI.toast(res.msg);
}
});
};
/**
* @Description 修改任务状态
* @Author JiangTao
* @Date 2022-02-19 下午 10:29
*/
updateMarketTaskStatus() {
let param = {
tasknum: this.$store.getters.getCusInfo.tasknum || this.markTasknum,
taskStatus: '4'
};
NativeUI.showWaiting('正在提交...');
return IF.transferDataInter(applicationApi.updateMarketTaskStatus, param).then((res: any) => {
NativeUI.closeWaiting();
if (res.code == '1') {
this.operate = '2';
this.showCancel = false;
this.confirmText = "知道了";
// NativeUI.toast(res.msg);
}
});
};
/**
* @Description 取消
* @Author JiangTao
* @Date 2022-02-17 下午 07:21
*/
cancel() {
this.show = false;
};
onClick() {
this.show = false;
this.$router.go(-1);
}
}
</script>
<style lang="scss" scoped>
.marketing-processing-content {
width: 100%;
height: calc(100vh - 60px);
display: flex;
}
.customer-information {
width: 25%;
height: 100%;
padding: 2%;
border-right: 2px solid rgba(242, 242, 242, 1);
}
.customer-information-top {
width: 100%;
height: 60px;
display: flex;
align-items: center;
}
.avatar {
width: 20%;
}
.customer-name > div:nth-child(1) {
font-weight: bold;
font-size: 18px;
color: #333333;
font-family: "Arial Normal", "Arial";
}
.customer-name > div:nth-child(2) {
width: auto;
padding: 1% 10px 0 10px;
margin-top: 2%;
text-align: center;
border: 1px solid rgba(215, 215, 215, 1);
border-radius: 5px;
font-size: 13px;
color: #333333;
font-family: "Arial Normal", "Arial";
}
.customer-information-central table {
width: 100%;
}
.customer-information-central table tr > td:nth-child(1) {
font-size: 14px;
color: #999999;
line-height: 30px;
}
.customer-information-central table tr > td:nth-child(2) {
font-size: 14px;
color: #333333;
font-family: "Arial Normal", "Arial";
}
.customer-information-central table tr:nth-child(4) > td {
padding-top: 4%;
color: #02a7f0;
}
.sign-in {
width: 100%;
height: 35%;
margin-top: 10%;
}
.operate {
width: 100%;
margin-top: 3%;
}
.operate > button:nth-child(1) {
width: 50%;
height: 36px;
margin: 7% auto 7% auto;
display: block;
background-color: white;
border: 1px solid #02a7f0;
color: #02a7f0;
border-radius: 20px;
font-size: 14px;
font-family: "Arial Normal", "Arial";
}
.operate > button:nth-child(2) {
width: 50%;
height: 36px;
margin: 0 auto;
display: block;
background-color: white;
border: 1px solid rgba(215, 215, 215, 1);
color: #999999;
border-radius: 20px;
font-size: 14px;
font-family: "Arial Normal", "Arial";
}
.bm-view {
width: 100%;
height: 100%;
}
.details {
width: 100%;
height: calc(100vh - 60px - 5%);
margin: 2% auto;
}
.divBackground {
background-color: white;
}
::v-deep .van-nav-bar__right {
padding-top: 16px;
}
.formStyle {
width: 80%;
height: 100%;
overflow-y: auto;
margin: 0 auto;
}
.checkbox {
display: flex;
align-items: center;
padding: 0 1rem 1.5rem 1rem;
}
.checkbox-title {
width: 100px;
margin-right: 12px;
font-size: 14px;
color: #999999;
text-align: right;
}
.checkbox-data {
width: 70%;
}
.checkbox-data > div:nth-child(1) {
width: 100%;
display: flex;
}
.checkbox-data > div:nth-child(1) > div {
position: relative;
width: auto;
min-width: 130px;
height: 30px;
line-height: 30px;
text-align: center;
background-color: #f2f2f2;
font-size: 14px;
border-radius: 5px;
padding: 0 20px;
margin-right: 15px;
border: 0.001rem solid rgba(215, 215, 215, 1);
}
.checkbox-data > div:nth-child(2) {
width: 100%;
color: red;
font-size: 12px;
}
::v-deep .van-field__label {
width: 100px;
text-align: right;
}
::v-deep .van-field__value {
display: flex;
align-items: center;
}
::v-deep .van-field__body {
width: 100%;
}
.operateButton {
width: 100%;
display: flex;
justify-content: center;
}
.operateButton button {
width: 20.5%;
border-radius: 30px;
font-size: 18px;
padding: 1% 0;
margin: 1%;
outline: none;
color: white;
background-color: #FF574C;
border: 1px solid #FF574C;
}
::v-deep .popup-body {
display: flex;
align-items: center;
justify-content: center;
}
.popup-data {
text-align: center;
}
</style>
<template>
<div>
<div class="information-container flex-1-dhc" style="overflow-x: auto">
<van-steps direction="vertical" :active="active">
<van-step>
<div>
<div style="margin-left: 10%">
&nbsp;
<div style="font-weight: 400; width: 20%">八月</div>
&nbsp;
<div style="font-size: 18px; width: 20%">18</div>
</div>
<div style="margin-top: -10%; margin-left: 19%; padding: 5% 5%">公司成立</div>
</div>
</van-step>
<van-step>
<div>
<div style="margin-left: 10%">
&nbsp;
<div style="font-weight: 400; width: 20%">九月</div>
&nbsp;
<div style="font-size: 18px; width: 20%">13</div>
</div>
<div style="margin-top: -10%; margin-left: 19%; padding: 5% 5%">获得国家安全可靠计算机信息系统集成重点企业证书(特一级资质)</div>
</div>
</van-step>
</van-steps>
</div>
</div>
</template>
<script lang="ts">
import { Component, Vue } from "vue-property-decorator";
import { Step, Steps } from "vant";
Vue.use(Step);
Vue.use(Steps);
@Component({
name: "MarketHistoryNote",
})
export default class MarketHistoryNote extends Vue {
active: any = 1;
}
</script>
<style scoped></style>
<template>
<div class="information-container h-scroller flex-1-dhc">
<sub-title>营销历史记录</sub-title>
<van-index-bar highlight-color="#F79400" :index-list="indexList">
<van-index-anchor index="2020">
<SubTitle>2020年</SubTitle>
<van-step>
<li slot="active-icon"></li>
<li slot="inactive-icon"></li>
<li slot="finish-icon"></li>
</van-step>
</van-index-anchor>
<market-history-note></market-history-note>
</van-index-bar>
</div>
</template>
<script lang="ts">
import { Component, Vue } from "vue-property-decorator";
import MarketHistoryNote from "@/views/workbench/upcoming-tasks/marketing-task/time-axis/MarketHistoryNote.vue";
import TitleBar from "@/components/general/TitleBar.vue";
import SubTitle from "@/components/general/SubTitle.vue";
@Component({
name: "MarketTimeLineNote",
components: { MarketHistoryNote, TitleBar, SubTitle },
})
export default class MarketTimeLineNote extends Vue {
indexList = ["2018", "2019"];
onClick() {
console.log(111111);
}
}
</script>
<style scoped>
span {
color: #999999;
font-size: 16px;
}
</style>
<template>
<div>
<title-bar title="时光轴" @clickLeft="onClick">
<van-icon slot="left" name="cross" size="24" />
</title-bar>
<div class="marketing-processing-content">
<div class="customer-information">
<div class="customer-information-top">
<div class="avatar"></div>
<div class="customer-name">
<div>坏猴子影业传媒有限公司</div>
<div class="label">
<div>小微企业</div>
<div>白名单</div>
</div>
</div>
</div>
<div class="customer-information-central">
<div>
<div>• IT</div>
<div>• 金融</div>
<div>• 李寻欢(实际控制人)</div>
</div>
<div class="text">
<p><span>法定代表人: 赵国琦</span></p>
<p><span>注册资本:5000万元人民币</span></p>
<p><span>成立日期:2016-02-15</span></p>
<p><span>电话: 187****0855 </span></p>
<p><span>邮箱: -</span></p>
<p><span>地址:漳州市芗城区江滨路江滨花园沿江1幢213号</span></p>
</div>
<div class="introduction">
<div>简介</div>
<div>六一公司正式成立于2010年4月,是一家以手机、智能硬件和 IoT 平台为核心的互联网公司。创业仅7年时间,六一公司的年收入就突破了千亿元人民币。截止2018年,六一公司的业务遍及全球80多个国家和地区。</div>
</div>
</div>
<div class="operate">
<button>☆关注</button>
</div>
</div>
<market-time-line-note></market-time-line-note>
</div>
</div>
</template>
<script lang="ts">
import { Component, Vue } from "vue-property-decorator";
import TitleBar from "@/components/general/TitleBar.vue";
import MarketTimeLineNote from "@/views/workbench/upcoming-tasks/marketing-task/time-axis/MarketTimeLineNote.vue";
/**
* @Description 时光轴
* @Author JiangTao
* @Date 2021-11-10 下午 03:58
*/
@Component({
name: "TimeAxis",
components: { TitleBar, MarketTimeLineNote },
})
export default class TimeAxis extends Vue {
title = "";
pageTitle = ""; // 页面标题
onClick() {
console.log(111111);
}
mounted() {
this.pageTitle = this.$route.meta?.name;
}
}
</script>
<style scoped>
.marketing-processing-content {
width: 100%;
height: calc(100vh - 60px);
display: flex;
}
.customer-information {
width: 25%;
height: 100%;
padding: 2%;
border-right: 2px solid rgba(242, 242, 242, 1);
}
.customer-information-top {
width: 100%;
display: flex;
align-items: center;
}
.avatar {
width: 30%;
padding: 12.7% 0;
border: 3px solid #fd5065;
border-radius: 50px;
font-size: 14px;
color: #fd5065;
font-weight: bold;
text-align: center;
margin-right: 8.2%;
}
.customer-name {
width: 70%;
}
.customer-name > div:nth-child(1) {
font-weight: bold;
font-size: 18px;
color: #333333;
font-family: "Arial Normal", "Arial";
}
.label {
width: 100%;
display: flex;
padding-top: 1%;
margin-top: 5%;
text-align: center;
justify-content: space-around;
border-radius: 5px;
font-size: 13px;
color: #333333;
font-family: "Arial Normal", "Arial";
}
.label > div:nth-child(1) {
width: 41.4%;
padding-top: 1.2%;
padding-bottom: 0.1%;
text-align: center;
background-color: rgba(255, 244, 246, 1);
color: #fd5065;
font-family: "Arial Normal", "Arial";
font-size: 13px;
border-radius: 3px;
}
.label > div:nth-child(2) {
width: 41.4%;
padding-top: 1.2%;
padding-bottom: 0.1%;
text-align: center;
border: 1px solid rgba(170, 170, 170, 1);
color: #333333;
font-family: "Arial Normal", "Arial";
font-size: 13px;
border-radius: 3px;
}
.customer-information-central {
width: 100%;
margin-top: 7%;
}
.customer-information-central > div:nth-child(1) {
width: 100%;
display: flex;
flex-wrap: wrap;
}
.customer-information-central > div:nth-child(1) div {
margin-right: 10%;
margin-bottom: 5%;
color: #fd5065;
}
.text {
margin-top: 5%;
}
.text p span {
font-family: "Arial Normal", "Arial";
}
.introduction {
width: 100%;
}
.introduction > div:nth-child(1) {
font-weight: bold;
font-family: "Arial Normal", "Arial";
}
.introduction > div:nth-child(2) {
font-family: "Arial Normal", "Arial";
}
.operate {
width: 100%;
margin-top: 15%;
}
.operate button {
width: 50%;
height: 36px;
margin: 0 auto;
display: block;
background-color: white;
border: 1px solid rgba(215, 215, 215, 1);
color: #999999;
border-radius: 20px;
font-size: 16px;
font-family: "Arial Normal", "Arial";
}
.details {
width: 75%;
height: 91%;
margin: 3% 2% 5% 3%;
}
</style>
<template>
<div class="divBackground">
<title-bar :title="title">
<van-icon slot="left" name="cross" size="24" />
</title-bar>
<div class="information-container h-scroller flex-1-dhc">
<div class="titleStyle">
<div><img src="@/assets/svg/time-axis-logo.svg" alt="" /></div>
<div>营销历史记录</div>
</div>
<van-index-bar highlight-color="#F79400" :index-list="indexList">
<div v-for="(item, index) in TelTimeList" :key="index + 'a'" style="padding-bottom: 50px">
<sub-title>{{ item[0].FINISHDATE.substring(0, 4) }}</sub-title>
<!-- <van-steps v-for="(item1, index) in item" :key="index + 'b'" direction="vertical" :active="active">-->
<!-- <van-step>-->
<!-- <template v-slot:active-icon>-->
<!-- <div class="slotImg"></div>-->
<!-- </template>-->
<!-- <template v-slot:inactive-icon>-->
<!-- <div class="slotImg"></div>-->
<!-- </template>-->
<!-- <template v-slot:finish-icon>-->
<!-- <div class="slotImg"></div>-->
<!-- </template>-->
<!-- <van-index-anchor :index="item1.FINISHDATE.substring(5)">-->
<!-- </van-index-anchor>-->
<!-- <table-double-view :data="item1" :keyValue="keyValueDouble"></table-double-view>-->
<!-- <table-single-view :data="item1" :keyValue="keyValueSingle1"></table-single-view>-->
<!-- <table-single-view :data="item1" :keyValue="keyValueSingle2"></table-single-view>-->
<!-- </van-step>-->
<!-- </van-steps>-->
</div>
</van-index-bar>
</div>
</div>
</template>
<script lang="ts">
import TableDoubleView from "@/public/TableDoubleView.vue";
import TableSingleView from "@/public/TableSingleView.vue";
import { Component, Vue } from "vue-property-decorator";
import MarketHistoryNote from "@/views/workbench/upcoming-tasks/marketing-task/time-axis/MarketHistoryNote.vue";
import TitleBar from "@/components/general/TitleBar.vue";
import SubTitle from "@/components/general/SubTitle.vue";
import nettyApi from "@/constants/api/ms-netty/netty.api.ts";
import IF from "@/public/factory/InterFaceFactory";
import { NativeUI } from "@/public/ts/NativeUI";
import { getText } from '@/stores';
@Component({
name: "perTelMarkTimeAxis",
components: { MarketHistoryNote, TitleBar, SubTitle, TableDoubleView, TableSingleView },
})
export default class perTelMarkTimeAxis extends Vue {
title = "营销时光轴"
indexList = ["2019", "2020", "2021", "2022"];
TelList: any = []; //电话营销记录
TelTimeList: any = [];
data: any = [];
active = 0;
keyValueDouble = {
INPUTUSERID: '录入用户',
ISWECHAT: '是否添加微信',
TASKRESULT: '营销结果'
};
keyValueSingle1 = {
BUSINESSTYPE: '营销产品'
};
keyValueSingle2 = {
RESULTDESCRIBE: '备注'
};
onClick() {
console.log(111111);
}
mounted() {
this.getTelTime();
};
/**
* @Description 电话营销
* @Author JiangTao
* @Date 2022-01-12 下午 08:15
*/
getTelTime() {
this.TelTimeList = [];
var parm = {
SERIALNO: this.$store.getters.getCusInfo.SERIALNO,
tc: nettyApi.TRADE_CODE.selectGDHYXJLCX
};
NativeUI.showWaiting('正在查询....');
IF.transferDataInter(nettyApi.commonRq, parm).then((res: any) => {
NativeUI.closeWaiting();
if (res.rc == '1') {
if (res.ISEXISTSTASK == '1') {
this.TelList = res.ARRAY;
let reg1 = new RegExp('303131', 'g');
let reg2 = new RegExp('140331', 'g');
let reg3 = new RegExp('140111', 'g');
let reg4 = new RegExp('302121', 'g');
for (let i = 0; i < (this.TelList as any).length; i++) {
//是否添加微信
if (this.TelList[i].ISWECHAT == '1') {
this.TelList[i].ISWECHAT = '';
} else if (this.TelList[i].ISWECHAT == '2') {
this.TelList[i].ISWECHAT = '';
}
//营销结果
this.TelList[i].TASKRESULT = getText(this.TelList[i].TASKRESULT, 'TelMarketingResult');
//营销产品
this.TelList[i].BUSINESSTYPE = '303131,140331,140111,302121';
this.TelList[i].BUSINESSTYPE = this.TelList[i].BUSINESSTYPE.replace(reg1, '随意分');
this.TelList[i].BUSINESSTYPE = this.TelList[i].BUSINESSTYPE.replace(reg2, '优易贷');
this.TelList[i].BUSINESSTYPE = this.TelList[i].BUSINESSTYPE.replace(reg3, '综合消费贷款');
this.TelList[i].BUSINESSTYPE = this.TelList[i].BUSINESSTYPE.replace(reg4, '综合消费分期');
}
}
this.TelList = [
{
BUSINESSTYPE: "1",
FINISHDATE: "2021-12-24",
INPUTUSERID: "熊思露",
ISWECHAT: "",
RESULTDESCRIBE: "1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111",
SERIALNO: "2022011800000001",
TASKRESULT: "电话未接听"
},
{
BUSINESSTYPE: "2",
FINISHDATE: "2021-12-24",
INPUTUSERID: "熊思露",
ISWECHAT: "",
RESULTDESCRIBE: "1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111",
SERIALNO: "2022011800000001",
TASKRESULT: "电话未接听"
},
{
BUSINESSTYPE: "3",
FINISHDATE: "2021-12-24",
INPUTUSERID: "熊思露",
ISWECHAT: "",
RESULTDESCRIBE: "1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111",
SERIALNO: "2022011800000001",
TASKRESULT: "电话未接听"
},
{
BUSINESSTYPE: "4",
FINISHDATE: "2021-12-24",
INPUTUSERID: "熊思露",
ISWECHAT: "",
RESULTDESCRIBE: "1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111",
SERIALNO: "2022011800000001",
TASKRESULT: "电话未接听"
},
{
BUSINESSTYPE: "5",
FINISHDATE: "2021-12-24",
INPUTUSERID: "熊思露",
ISWECHAT: "",
RESULTDESCRIBE: "1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111",
SERIALNO: "2022011800000001",
TASKRESULT: "电话未接听"
},
];
this.data[0] = this.TelList[0];
let m = 0;
for (let i = 1; i < this.TelList.length; i++) {
if (this.TelList[i].FINISHDATE.substring(0, 4) == this.data[0].FINISHDATE.substring(0, 4)) {
console.log("tgg1", this.TelList[i].FINISHDATE.substring(0, 4));
console.log("tgg2", this.data[0].FINISHDATE.substring(0, 4));
console.log("tgg2++", this.data.concat(this.TelList[i]));
this.data = this.data.concat(this.TelList[i]);
console.log("tgg2--", this.data);
} else {
this.TelTimeList[m] = this.data;
this.data = [];
console.log("tgg2===", this.TelTimeList[m]);
m++;
this.data[0] = this.TelList[i];
}
}
this.TelTimeList[m] = this.data;
console.log("tgg==================", this.TelTimeList);
console.log("tgg==================", this.TelTimeList.length);
} else {
NativeUI.toast(res.msg);
}
});
};
}
</script>
<style scoped>
.markcontent {
width: 80%;
margin: 0 auto;
}
.divBackground {
background-color: white;
}
.slotImg {
width: 10px;
height: 10px;
border-radius: 5px;
background-color: #FF574C;
}
.titleStyle {
display: flex;
align-items: center;
margin-top: 20px;
margin-bottom: 16px;
}
.titleStyle > div:nth-child(2) {
font-size: 18px;
color: #000;
font-weight: bold;
margin-left: 10px;
}
::v-deep .van-index-bar {
margin-left: 30px;
height: calc(100vh - 126px);
overflow-y: auto;
}
::v-deep .van-step__line {
background-color: #FF574C;
}
::v-deep .van-step__title {
width: 80%;
}
::v-deep .van-index-anchor {
line-height: normal;
}
</style>
<template>
<div>
<title-bar title="定期检查" @clickLeft="onClick">
<van-icon slot="left" name="cross" size="24" />
</title-bar>
<div>
<div class="deal-with-top">
<div class="deal-with-top-left">
<img src="../../../../assets/images/risk-warning-logo.png" alt="" />
<div>六一科技有限公司</div>
<div>客户编号:</div>
</div>
<div class="deal-with-top-right"><button>提交</button></div>
</div>
<div class="deal-with-bottom">
<div class="label">
<div :style="credit_status_style" @click="credit_status_click">借款人信用状况调查</div>
<div :style="financial_status_style" @click="financial_status_click">借款人经营及财务情况调查</div>
<div :style="guarantor_status_style" @click="guarantor_status_click">保证人情况调查</div>
<div :style="mortgage_investigation_style" @click="mortgage_investigation_click">抵质押物调查</div>
<div :style="others_style" @click="others_click" style="width: 10%; text-align: center">其他</div>
</div>
<div class="deal-with-bottom-content">
<credit-status v-if="this.credit_status"></credit-status>
<financial-status v-if="this.financial_status"></financial-status>
<guarantor-status v-if="this.guarantor_status"></guarantor-status>
<mortgage-investigation v-if="this.mortgage_investigation"></mortgage-investigation>
<others v-if="this.others"></others>
</div>
</div>
</div>
</div>
</template>
<script lang="ts">
import { Component, Vue } from "vue-property-decorator";
import TitleBar from "@/components/general/TitleBar.vue";
import CreditStatus from "@/components/workbench/upcoming-tasks-content/company-business/upcoming/upcoming-tasks-periodic-inspection/CreditStatus.vue";
import FinancialStatus from "@/components/workbench/upcoming-tasks-content/company-business/upcoming/upcoming-tasks-periodic-inspection/FinancialStatus.vue";
import GuarantorStatus from "@/components/workbench/upcoming-tasks-content/company-business/upcoming/upcoming-tasks-periodic-inspection/GuarantorStatus.vue";
import MortgageInvestigation from "@/components/workbench/upcoming-tasks-content/company-business/upcoming/upcoming-tasks-periodic-inspection/MortgageInvestigation.vue";
import Others from "@/components/workbench/upcoming-tasks-content/company-business/upcoming/upcoming-tasks-periodic-inspection/Others.vue";
/**
* @Description 定期检查
* @Author JiangTao
* @Date 2021-11-10 下午 03:51
*/
@Component({
name: "PeriodicInspectionHandle",
components: { TitleBar, CreditStatus, FinancialStatus, GuarantorStatus, MortgageInvestigation, Others },
})
export default class PeriodicInspectionHandle extends Vue {
pageTitle = ""; // 页面标题
style = {
border: "1px solid #fd5065",
color: "#fd5065",
borderBottom: "2px solid #ffffff",
};
credit_status_style: any = this.style;
financial_status_style: any = {};
guarantor_status_style: any = {};
mortgage_investigation_style: any = {};
others_style: any = {};
credit_status = true;
financial_status = false;
guarantor_status = false;
mortgage_investigation = false;
others = false;
onClick() {
console.log(111111);
}
mounted() {
this.pageTitle = this.$route.meta?.name;
}
credit_status_click() {
this.credit_status_style = this.style;
this.financial_status_style = {};
this.guarantor_status_style = {};
this.mortgage_investigation_style = {};
this.others_style = {};
this.credit_status = true;
this.financial_status = false;
this.guarantor_status = false;
this.mortgage_investigation = false;
this.others = false;
}
financial_status_click() {
this.credit_status_style = {};
this.financial_status_style = this.style;
this.guarantor_status_style = {};
this.mortgage_investigation_style = {};
this.others_style = {};
this.credit_status = false;
this.financial_status = true;
this.guarantor_status = false;
this.mortgage_investigation = false;
this.others = false;
}
guarantor_status_click() {
this.credit_status_style = {};
this.financial_status_style = {};
this.guarantor_status_style = this.style;
this.mortgage_investigation_style = {};
this.others_style = {};
this.credit_status = false;
this.financial_status = false;
this.guarantor_status = true;
this.mortgage_investigation = false;
this.others = false;
}
mortgage_investigation_click() {
this.credit_status_style = {};
this.financial_status_style = {};
this.guarantor_status_style = {};
this.mortgage_investigation_style = this.style;
this.others_style = {};
this.credit_status = false;
this.financial_status = false;
this.guarantor_status = false;
this.mortgage_investigation = true;
this.others = false;
}
others_click() {
this.credit_status_style = {};
this.financial_status_style = {};
this.guarantor_status_style = {};
this.mortgage_investigation_style = {};
this.others_style = this.style;
this.credit_status = false;
this.financial_status = false;
this.guarantor_status = false;
this.mortgage_investigation = false;
this.others = true;
}
}
</script>
<style scoped>
.deal-with-top {
width: 100%;
display: flex;
justify-content: space-between;
align-items: center;
padding: 1% 1.5%;
border-bottom: 1px solid #efefef;
background-color: #fffafa;
}
.deal-with-top-left {
width: 80%;
display: flex;
justify-content: flex-start;
align-items: flex-end;
}
.deal-with-top-left > div:nth-child(2) {
margin-left: 1%;
margin-right: 2%;
font-size: 129%;
line-height: 120%;
}
.deal-with-top-left > div:nth-child(3) {
line-height: 110%;
}
.deal-with-top-left img {
width: 2.42%;
padding-top: -1%;
}
.deal-with-top-right {
width: 9.51%;
}
.deal-with-top-right button {
width: 100%;
font-size: 115%;
padding: 2.6% 0;
background-color: white;
border: 1px solid #fd5065;
color: #fd5065;
border-radius: 3px;
}
.label {
width: 97%;
margin: 0 auto;
margin-top: 1%;
padding-left: 2.5%;
display: flex;
justify-content: flex-start;
border-bottom: 1px solid #999999;
}
.label div {
margin-right: 1%;
background-color: white;
border: 1px solid #999999;
border-bottom: 0;
font-size: 115%;
padding: 0.58% 1.2%;
border-top-right-radius: 7px;
border-top-left-radius: 7px;
}
.deal-with-bottom-content {
width: 93%;
height: calc(100vh - 162px);
margin: 0 auto;
margin-top: 1%;
padding-top: 1%;
padding-bottom: 5%;
overflow-y: auto;
}
</style>
<template>
<div>
<title-bar title="风险预警处理" @clickLeft="onClick">
<van-icon slot="left" name="cross" size="24" />
</title-bar>
<div>
<div class="deal-with-top">
<img src="../../../../assets/images/risk-warning-logo.png" alt="" />
<div>六一科技有限公司</div>
<div>客户编号:</div>
</div>
<div class="deal-with-bottom">
<table>
<tr>
<td>客户名称:</td>
<td>六一科技有限公司</td>
<td>主管客户经理:</td>
<td>李一科</td>
</tr>
<tr>
<td style="width: 100%; display: flex; align-items: flex-start">情况说明:</td>
<td colspan="3" style="padding-right: 3.3%">
<van-field style="border: 1px solid #999999" v-model="text1" rows="2" autosize type="textarea" />
</td>
</tr>
<tr>
<td>是否存在违约风险:</td>
<td>
<div class="judge">
<div @click="default_risk_yes" :style="default_risk_xyes" class="yes"></div>
<div @click="default_risk_no" :style="default_risk_xno" class="no"></div>
</div>
</td>
<td>是否拟报送重大事项</td>
<td>
<div class="judge">
<div @click="major_issues_yes" :style="major_issues_xyes" class="yes"></div>
<div @click="major_issues_no" :style="major_issues_xno" class="no"></div>
</div>
</td>
</tr>
<tr>
<td>处置方案:</td>
<td colspan="3">
<div class="disposal_plan">
<div @click="t1" :style="st1">停止提用未使用额度</div>
<div @click="t2" :style="st2">对客户账户实施封闭式管理</div>
<div @click="t3" :style="st3">对客户或保证人实施催收</div>
<div @click="t4" :style="st4">对客户或保证人实施催收</div>
<div @click="t5" :style="st5">采取资产保全或提起诉讼</div>
<div @click="t6" :style="st6">提供再融资或宽限</div>
<div @click="t7" :style="st7">拟订分期还款安排</div>
<div @click="t8" :style="st8">追加或变更担保</div>
<div @click="t9" :style="st9">其他</div>
</div>
</td>
</tr>
<tr>
<td style="width: 100%; display: flex; align-items: flex-start">处置方案说明:</td>
<td colspan="3" style="padding-right: 3.3%">
<van-field style="border: 1px solid #999999" v-model="text2" rows="2" autosize type="textarea" />
</td>
</tr>
</table>
<div class="submit">提交</div>
</div>
</div>
</div>
</template>
<script lang="ts">
import { Component, Vue } from "vue-property-decorator";
import TitleBar from "@/components/general/TitleBar.vue";
import { Field } from "vant";
import { Picker } from "vant";
Vue.use(Picker);
Vue.use(Field);
/**
* @Description 风险预警处理
* @Author JiangTao
* @Date 2021-11-10 下午 03:50
*/
@Component({
name: "TaskListOperate",
components: { TitleBar },
})
export default class TaskListOperate extends Vue {
pageTitle = ""; // 页面标题
text1 = "";
text2 = "";
checked = true;
value = "";
showPicker = false;
columns = ["1", "2", "3", "4", "5"];
onConfirm(value: any) {
this.value = value;
this.showPicker = false;
}
onClick() {
console.log(111111);
}
mounted() {
this.pageTitle = this.$route.meta?.name;
}
default_risk_xyes: any = {
backgroundColor: " #fd5065",
color: "white",
border: "0",
};
default_risk_xno: any = {};
default_risk_yes() {
this.default_risk_xyes = {
backgroundColor: " #fd5065",
color: "white",
border: "0",
};
this.default_risk_xno = {};
}
default_risk_no() {
this.default_risk_xyes = {};
this.default_risk_xno = {
backgroundColor: " #fd5065",
color: "white",
border: "0",
};
}
major_issues_xyes: any = {
backgroundColor: " #fd5065",
color: "white",
border: "0",
};
major_issues_xno: any = {};
major_issues_yes() {
this.major_issues_xyes = {
backgroundColor: " #fd5065",
color: "white",
border: "0",
};
this.major_issues_xno = {};
}
major_issues_no() {
this.major_issues_xyes = {};
this.major_issues_xno = {
backgroundColor: " #fd5065",
color: "white",
border: "0",
};
}
src = require("../../../../assets/svg/red-subscript.svg");
s = {
backgroundColor: "#fff4f6",
border: "1px solid #fd5065",
color: "#fd5065",
backgroundImage: `url("${this.src}")`,
backgroundRepeat: "no-repeat",
backgroundPosition: "right bottom",
};
st1: any = {};
st2: any = {};
st3: any = {};
st4: any = {};
st5: any = {};
st6: any = {};
st7: any = {};
st8: any = {};
st9: any = {};
t1() {
if (this.st1 === this.s) {
this.st1 = {};
} else {
this.st1 = this.s;
}
}
t2() {
if (this.st2 === this.s) {
this.st2 = {};
} else {
this.st2 = this.s;
}
}
t3() {
if (this.st3 === this.s) {
this.st3 = {};
} else {
this.st3 = this.s;
}
}
t4() {
if (this.st4 === this.s) {
this.st4 = {};
} else {
this.st4 = this.s;
}
}
t5() {
if (this.st5 === this.s) {
this.st5 = {};
} else {
this.st5 = this.s;
}
}
t6() {
if (this.st6 === this.s) {
this.st6 = {};
} else {
this.st6 = this.s;
}
}
t7() {
if (this.st7 === this.s) {
this.st7 = {};
} else {
this.st7 = this.s;
}
}
t8() {
if (this.st8 === this.s) {
this.st8 = {};
} else {
this.st8 = this.s;
}
}
t9() {
if (this.st9 === this.s) {
this.st9 = {};
} else {
this.st9 = this.s;
}
}
}
</script>
<style scoped>
.deal-with-top {
width: 100%;
display: flex;
justify-content: flex-start;
align-items: flex-end;
padding-top: 1%;
padding-bottom: 1%;
padding-left: 1.5%;
border-bottom: 1px solid #efefef;
background-color: #fffafa;
}
.deal-with-top > div:nth-child(2) {
margin-left: 1%;
margin-right: 2%;
font-size: 129%;
line-height: 120%;
}
.deal-with-top > div:nth-child(3) {
line-height: 110%;
}
.deal-with-top img {
width: 1.88%;
padding-top: -1%;
}
.deal-with-bottom {
width: 70%;
margin-left: 10%;
}
table {
width: 100%;
margin-top: 5%;
}
td {
font-size: 115%;
padding-bottom: 1%;
}
tr > td:nth-child(1) {
line-height: 255%;
color: #999999;
width: 17%;
}
table > tr:nth-child(1) > td:nth-child(3),
table > tr:nth-child(3) > td:nth-child(3) {
color: #999999;
width: 20%;
}
table > tr:nth-child(1) > td:nth-child(2) {
width: 30%;
}
.judge {
display: flex;
justify-content: flex-start;
}
.judge > * {
width: 23.2%;
line-height: 205%;
font-size: 93%;
padding-top: 0.5%;
text-align: center;
color: #999999;
border: 1px solid #d5d5d5;
}
.judge > div:nth-child(1) {
border-bottom-left-radius: 6px;
border-top-left-radius: 6px;
}
.judge > div:nth-child(2) {
border-bottom-right-radius: 6px;
border-top-right-radius: 6px;
}
select {
width: 90%;
}
.disposal_plan {
width: 96%;
display: flex;
justify-content: flex-start;
align-items: center;
flex-wrap: wrap;
}
.disposal_plan > * {
width: 30%;
font-size: 114.3%;
padding-top: 0.5%;
padding-bottom: 0.4%;
border-radius: 5px;
text-align: center;
background-color: #f2f2f2;
border: 1px solid rgba(215, 215, 215, 1);
margin: 0.7% 1%;
}
.submit {
width: 50%;
margin: 0 auto;
margin-top: 8%;
font-size: 143%;
background-color: #fd5065;
color: white;
padding: 1% 0;
text-align: center;
border-radius: 50px;
}
.drop-down {
width: 30%;
}
</style>
Markdown 格式
0% or
您添加了 0 到此讨论。请谨慎行事。
先完成此消息的编辑!
想要评论请 注册