yujialong 1 year ago
parent 05999c1e89
commit 1f4cc6a74a
  1. 2
      src/layout/components/AppMain.vue
  2. 2
      src/layout/components/AppSidebar/Menu.vue
  3. 2
      src/layout/index.vue
  4. 2
      src/styles/form.scss
  5. 36
      src/styles/index.scss
  6. 10
      src/utils/common.ts
  7. 4
      src/views/Home.vue
  8. 9
      src/views/config/level/Index.vue
  9. 2
      src/views/config/param/Buyer.vue
  10. 2
      src/views/config/param/Financial.vue
  11. 116
      src/views/product/afterLoan/1030.vue
  12. 2
      src/views/product/afterLoan/1033.vue
  13. 65
      src/views/product/afterLoan/CardList.vue
  14. 35
      src/views/product/bank/CardList.vue
  15. 35
      src/views/product/fund/CardList.vue
  16. 45
      src/views/product/insurance/Add.vue
  17. 41
      src/views/product/insurance/CardList.vue
  18. 8
      src/views/product/insurance/Info.vue
  19. 2
      src/views/product/insurance/List.vue
  20. 37
      src/views/product/interestRate/CardList.vue
  21. 10
      src/views/product/strategy/150.vue
  22. 10
      src/views/product/strategy/151.vue
  23. 4
      src/views/product/strategy/152.vue
  24. 12
      src/views/product/strategy/153.vue
  25. 2
      src/views/product/strategy/154.vue
  26. 2
      src/views/product/strategy/155.vue
  27. 2
      src/views/product/strategy/156.vue
  28. 73
      src/views/product/strategy/CardList.vue

@ -1,5 +1,5 @@
<template>
<section class="p-3">
<section class="px-3">
<router-view v-slot="{ Component }">
<transition name="fade-transform"
mode="out-in">

@ -36,7 +36,7 @@
<p class="text">产品风控配置</p>
</li>
<li :class="{ active: active == 2 }"
@click="toPage('/product/strategy?&i=2&role=42')">
@click="toPage('/product/strategy?&i=2&role=42&id=150')">
<img class="icon"
src="@/assets/images/icon2.png"
alt="" />

@ -3,7 +3,7 @@
<app-header />
<app-sidebar v-if="!hideNav"
class="sidebar fixed w-sidebar h-full px-5 overflow-hidden transition-width duration-300 z-40" />
<div class="main h-[calc(100vh-95px)] transition-margin duration-300 overflow-auto"
<div class="main h-[calc(100vh-86px)] transition-margin duration-300 overflow-auto"
:class="{ 'md:ml-sidebar': !hideNav }"
id="appMain">
<app-main />

@ -1,5 +1,5 @@
.form {
@apply max-h-[calc(100vh-210px)] pr-2 overflow-auto;
@apply pr-2;
.step {
@apply relative pl-[42px];
&:before {

@ -71,6 +71,39 @@ body {
background: #d7d7d7;
}
.card-list {
.left {
@apply w-[241px] min-w-[241px] pr-5 py-4 border-r border-solid border-[#e9eff2];
}
.products {
@apply max-h-[calc(100vh-150px)] pr-1 overflow-auto;
li {
@apply relative p-5 pt-7 mb-5 rounded-[10px] cursor-pointer border border-solid border-[transparent] bg-[url('@/assets/images/10.png')] bg-[length:100%_100%] bg-no-repeat;
&.active {
@apply border-[#CAE0FF];
}
}
.del {
@apply absolute top-0 right-0;
}
h6 {
@apply text-[#14436b] font-semibold;
}
.type,
.status {
@apply my-[15px] text-sm text-[#333];
}
.meta {
@apply mt-[15px] text-sm text-[#8798a9];
}
}
.right {
@apply flex-1 w-[calc(100vw-533px)] max-h-[calc(100vh-100px)] overflow-auto px-5 pt-2;
}
}
// .c-auto {
// @apply w-[calc(100vw-533px)] max-h-[calc(100vh-160px)] overflow-auto;
// }
.c-table {
@apply rounded-[10px];
th.el-table__cell {
@ -79,6 +112,9 @@ body {
th.el-table__cell > .cell {
@apply text-[#006BFF];
}
.el-input__inner {
@apply px-2;
}
}
.filter {
@apply inline-flex items-center;

@ -212,3 +212,13 @@ export const getChinese = (str: string): string => {
}
return '';
};
/**
*
*/
export const isIllegalNum = (str: string | number): boolean => {
if (str) {
return isNaN(str) || str < 0;
}
return true;
};

@ -32,9 +32,9 @@
:key="i"
:class="['item', { active: curLevel === item.checkpointId }]"
@click="selecLevel(item)">
<span class="num">LV.{{ i + 1 }}</span>
<span class="num">LV.{{ item.serialNumber }}</span>
<div class="texts">
<h6>{{ numToChinese(i + 1) }}</h6>
<h6>{{ numToChinese(item.serialNumber) }}</h6>
<p class="des mul-ellipsis2">{{ item.customsPassName }}</p>
<img v-if="item.collect"
class="icon"

@ -41,13 +41,13 @@
</div>
</div>
</div>
<div class="h-[calc(100vh-270px)] overflow-auto"
<div class="h-[calc(100vh-240px)] overflow-auto"
id="tableWrap">
<el-table v-loading="loading"
:data="list"
@selection-change="handleSelectionChange">
<el-table-column label="移动"
width="100">
width="80">
<template #default="{ row, $index }">
<el-popover placement="right"
trigger="hover">
@ -86,6 +86,7 @@
</template>
</el-table-column>
<el-table-column prop="customsPassName"
min-width="200"
label="关卡名称">
<template #default="{ row }">
<div class="flex items-center">
@ -112,9 +113,11 @@
</template>
</el-table-column>
<el-table-column prop="creator"
min-width="170"
label="创建人"></el-table-column>
<el-table-column prop="createTime"
label="创建时间"
width="180"
sortable="custom"></el-table-column>
<el-table-column label="启用关卡"
width="140"
@ -128,7 +131,7 @@
</template>
</el-table-column>
<el-table-column label="操作"
width="140">
width="120">
<template #default="{ row }">
<el-popconfirm v-if="row.checkpointId"
:title="delTitle"

@ -1,5 +1,5 @@
<template>
<div class="max-h-[calc(100vh-280px)] overflow-auto">
<div class="max-h-[calc(100vh-250px)] overflow-auto">
<h6 class="title">城市人口及年龄参数</h6>
<el-table class="c-table"
:data="form.ageAduRatioList"

@ -1,5 +1,5 @@
<template>
<div class="max-h-[calc(100vh-280px)] overflow-auto">
<div class="max-h-[calc(100vh-250px)] overflow-auto">
<el-form ref="formRef"
label-width="100px"
label-suffix=":"

@ -1,66 +1,68 @@
<template>
<!-- 贷后检查 -->
<el-table class="c-table"
:data="form"
:span-method="span"
:cell-style="{background:'#fff'}"
border>
<el-table-column prop="name"
label="选用"
width="150"
align="center">
<template #default="{ row }">
<el-checkbox v-model="row.isChoose"></el-checkbox>
</template>
</el-table-column>
<el-table-column prop="recordName"
label="检查方式"
min-width="150"
align="center">
<template #default="{ row, $index }">
{{ $index === 1 ? '贷后全检' : row.recordName }}
</template>
</el-table-column>
<el-table-column label="检查对象"
min-width="250"
align="center">
<template #default="{ row }">
<el-select v-model="row.checkObject">
<el-option v-for="item in row?.recordChildren[1].subject.itemList"
:key="item"
:label="item.options"
:value="item.itemId" />
</el-select>
</template>
</el-table-column>
<el-table-column label="检查时间"
min-width="200"
align="center">
<template #default="{ row, $index }">
<span v-if="$index === 4">点击后触发</span>
<div v-else
class="flex items-center">
<el-select v-model="row.checkTimeType">
<el-option v-for="item in row?.recordChildren[2].recordChildren[0].subject.itemList"
<div class="c-auto">
<el-table class="c-table"
:data="form"
:span-method="span"
:cell-style="{background:'#fff'}"
border>
<el-table-column prop="name"
label="选用"
width="150"
align="center">
<template #default="{ row }">
<el-checkbox v-model="row.isChoose"></el-checkbox>
</template>
</el-table-column>
<el-table-column prop="recordName"
label="检查方式"
min-width="150"
align="center">
<template #default="{ row, $index }">
{{ $index === 1 ? '贷后全检' : row.recordName }}
</template>
</el-table-column>
<el-table-column label="检查对象"
width="200"
align="center">
<template #default="{ row }">
<el-select v-model="row.checkObject">
<el-option v-for="item in row?.recordChildren[1].subject.itemList"
:key="item"
:label="item.options"
:value="item.itemId" />
</el-select>
<el-input class="w-[100px] mx-2"
placeholder="请输入"
v-model="row.timeDays"></el-input>
</div>
</template>
</el-table-column>
<el-table-column label="检查内容"
min-width="200"
align="center">
<template #default="{ row }">
<el-checkbox v-model="row.governmentData">政务数据</el-checkbox>
<el-checkbox v-model="row.creditData">征信数据</el-checkbox>
</template>
</el-table-column>
</el-table>
</template>
</el-table-column>
<el-table-column label="检查时间"
width="270"
align="center">
<template #default="{ row, $index }">
<span v-if="$index === 4">点击后触发</span>
<div v-else
class="flex items-center">
<el-select v-model="row.checkTimeType">
<el-option v-for="item in row?.recordChildren[2].recordChildren[0].subject.itemList"
:key="item"
:label="item.options"
:value="item.itemId" />
</el-select>
<el-input class="w-[100px] mx-2"
placeholder="请输入"
v-model="row.timeDays"></el-input>
</div>
</template>
</el-table-column>
<el-table-column label="检查内容"
width="230"
align="center">
<template #default="{ row }">
<el-checkbox v-model="row.governmentData">政务数据</el-checkbox>
<el-checkbox v-model="row.creditData">征信数据</el-checkbox>
</template>
</el-table-column>
</el-table>
</div>
<div class="flex justify-end">
<div class="submit"

@ -11,6 +11,7 @@
align="center">
</el-table-column>
<el-table-column label="选择催收方式"
width="340"
align="center">
<template #default="{ row }">
<el-checkbox v-model="row.shortMessageCollection">短信催收</el-checkbox>
@ -19,6 +20,7 @@
</template>
</el-table-column>
<el-table-column label="短信/APP/自动外呼 话术"
width="310"
align="center">
<template #default="{ row }">
<el-select class=""

@ -1,32 +1,28 @@
<template>
<div class="block"
style="padding-top: 0">
<div class="flex">
<div class="left w-[241px] min-w-[241px] pr-5 py-4">
<ul class="products">
<li v-for="(item, i) in list"
:key="i"
:class="{ active: item.id === id }"
@click="switchProduct(item.id)">
<h6>{{ item.name }}</h6>
<p class="type">{{ item.remark }}</p>
</li>
</ul>
</div>
<div class="right flex-1 px-5 pt-4">
<Com1 v-if="id == 1029" />
<Com2 v-else-if="id == 1030" />
<Com3 v-else-if="id == 1031" />
<Com4 v-else-if="id == 1032" />
<Com5 v-else-if="id == 1033" />
</div>
<div class="block card-list flex py-0">
<div class="left">
<ul class="products">
<li v-for="(item, i) in list"
:key="i"
:class="{ active: item.id === id }"
@click="switchProduct(item.id)">
<h6>{{ item.name }}</h6>
<p class="meta">{{ item.remark }}</p>
</li>
</ul>
</div>
<div class="right">
<Com1 v-if="id == 1029" />
<Com2 v-else-if="id == 1030" />
<Com3 v-else-if="id == 1031" />
<Com4 v-else-if="id == 1032" />
<Com5 v-else-if="id == 1033" />
</div>
</div>
</template>
<script setup lang="ts">
import { computed, onMounted, ref } from 'vue';
import type { TabsPaneContext } from 'element-plus';
import { getProcessInformationBasedOnRoles } from '@/api/judgment';
import { useRouter, useRoute } from 'vue-router';
import Cookies from 'js-cookie';
@ -60,28 +56,9 @@ onMounted(() => {
</script>
<style lang="scss" scoped>
.left {
border-right: 1px solid #e9eff2;
}
.products {
@apply max-h-[calc(100vh-205px)] pr-1 overflow-auto;
li {
@apply relative p-5 pt-7 mb-5 rounded-[10px] cursor-pointer border border-solid border-[transparent] bg-[url('@/assets/images/10.png')] bg-[length:100%_100%] bg-no-repeat;
&.active {
@apply border-[#CAE0FF];
}
}
.del {
@apply absolute top-0 right-0;
}
h6 {
@apply text-[#14436b];
}
.type {
@apply my-3 text-sm text-[#333];
}
.des {
@apply text-sm text-[#8798a9];
.card-list {
.left {
@apply max-h-[calc(100vh-120px)];
}
}
</style>

@ -1,7 +1,6 @@
<template>
<div class="block flex"
style="padding-top: 0">
<div class="left w-[241px] min-w-[241px] pr-5 py-4">
<div class="block card-list flex py-0">
<div class="left">
<div v-if="role == 41"
class="flex justify-center items-center py-2 mb-3 text-sm text-[#006BFF] bg-[rgba(0,107,255,0.1)] border border-solid border-[#006BFF] rounded-[10px] cursor-pointer"
@click="toAdd">
@ -36,11 +35,11 @@
<h6>{{ item.productName }}</h6>
<p class="type">{{ item.productNumber + ' ' + item.guarantyStyle }}</p>
<p class="status">{{ getStatus(item.status) }}</p>
<p class="date">创建日期{{ item.createTime.split(' ')[0] }}</p>
<p class="meta">创建日期{{ item.createTime.split(' ')[0] }}</p>
</li>
</ul>
</div>
<div class="right flex-1 px-5 pt-2">
<div class="right">
<!-- <component :is="currentSubApp"
@getList="getList"></component> -->
<config v-if="action === 'config'"
@ -133,29 +132,9 @@ const handleDelete = async (id: number) => {
</script>
<style lang="scss" scoped>
.left {
border-right: 1px solid #e9eff2;
}
.products {
@apply max-h-[calc(100vh-205px)] pr-1 overflow-auto;
li {
@apply relative p-5 pt-7 mb-5 rounded-[10px] cursor-pointer border border-solid border-[transparent] bg-[url('@/assets/images/10.png')] bg-[length:100%_100%] bg-no-repeat;
&.active {
@apply border-[#CAE0FF];
}
}
.del {
@apply absolute top-0 right-0;
}
h6 {
@apply text-[#14436b];
}
.type,
.status {
@apply my-[15px] text-sm text-[#333];
}
.date {
@apply text-sm text-[#8798a9];
.card-list {
.products {
@apply max-h-[calc(100vh-200px)];
}
}
</style>

@ -1,7 +1,6 @@
<template>
<div class="block flex"
style="padding-top: 0">
<div class="left w-[241px] min-w-[241px] pr-5 py-4">
<div class="block card-list flex py-0">
<div class="left">
<div class="flex justify-center items-center py-2 mb-3 text-sm text-[#006BFF] bg-[rgba(0,107,255,0.1)] border border-solid border-[#006BFF] rounded-[10px] cursor-pointer"
@click="toAdd">
<el-icon class="mr-1"
@ -34,11 +33,11 @@
<h6>{{ item.fundName }}</h6>
<p class="type">{{ item.fundraisingScale }}万募集规模</p>
<p class="type">买入费率{{ item.buying }}赎回费率{{ item.sale }}</p>
<p class="date">创建日期{{ item.createTime.split(' ')[0] }}</p>
<p class="meta">创建日期{{ item.createTime.split(' ')[0] }}</p>
</li>
</ul>
</div>
<div class="right flex-1 px-5 pt-2">
<div class="right">
<detail v-if="action === 'detail'"></detail>
<add v-else-if="action === 'add'"
@getList="getList"></add>
@ -109,29 +108,9 @@ const handleDelete = async (id: number) => {
</script>
<style lang="scss" scoped>
.left {
border-right: 1px solid #e9eff2;
}
.products {
@apply max-h-[calc(100vh-205px)] pr-1 overflow-auto;
li {
@apply relative p-5 pt-7 mb-5 rounded-[10px] cursor-pointer border border-solid border-[transparent] bg-[url('@/assets/images/10.png')] bg-[length:100%_100%] bg-no-repeat;
&.active {
@apply border-[#CAE0FF];
}
}
.del {
@apply absolute top-0 right-0;
}
h6 {
@apply text-[#14436b];
}
.type,
.status {
@apply my-[15px] text-sm text-[#333];
}
.date {
@apply text-sm text-[#8798a9];
.card-list {
.products {
@apply max-h-[calc(100vh-200px)];
}
}
</style>

@ -53,7 +53,7 @@
<div v-if="item.check">
<el-input placeholder="请输入"
v-model="item.sumInsured">
<template #append></template>
<template #append>{{ item.id === 764 || item.id === 765 ? '元' : '' }}</template>
</el-input>
</div>
</div>
@ -64,7 +64,7 @@
<div>
<el-input placeholder="请输入"
v-model="form.premiumAmount">
<template #append></template>
<template #append></template>
</el-input>
</div>
</el-form-item>
@ -117,9 +117,7 @@ import { ElMessage } from 'element-plus';
import { insuranceProductDetails, addInsuranceProducts } from '@/api/insurance';
import { getProcessInformationBasedOnRoles, addOperation } from '@/api/judgment';
import { useRouter, useRoute } from 'vue-router';
import { handleId } from '@/utils/common';
import { getStatus } from '@/store/useProduct';
import Info from './Info.vue';
import { handleId, isIllegalNum } from '@/utils/common';
import Cookies from 'js-cookie';
const emit = defineEmits(['getList']);
@ -214,18 +212,43 @@ const submit = async () => {
const param = JSON.parse(JSON.stringify(form));
if (!param.insuranceName) return ElMessage.error('请输入保险名称');
param.insuranceDeadline = param.insuranceDeadline + param.insuranceDeadlineUnit;
config.value[form.insuranceType === 310 ? 0 : 1]?.recordChildren[2]?.recordChildren.map((e) => {
e.check &&
e.sumInsured &&
if (param.insuranceType === 310) {
if (!param.minimumAge) return ElMessage.error('请输入最小年龄');
if (!param.maximumAge) return ElMessage.error('请输入最大年龄');
if (isIllegalNum(param.minimumAge) || isIllegalNum(param.maximumAge)) return ElMessage.error('请输入合理的年龄');
if (param.minimumAge > param.maximumAge) return ElMessage.error('最小年龄不得大于最大年龄');
}
let invalid = 0;
for (const e of config.value[form.insuranceType === 310 ? 0 : 1]?.recordChildren[2]?.recordChildren) {
if (e.check) {
if (isIllegalNum(e.sumInsured)) {
invalid = 1;
ElMessage.error('请输入合理的保额');
break;
}
param.insuranceCoverageConfigList.push({
insuredLiabilityId: e.id,
sumInsured: +e.sumInsured,
});
});
if (param.premiumAmount && !isNaN(param.premiumAmount)) param.premiumAmount = Number(param.premiumAmount).toFixed(2);
}
}
if (invalid) return false;
if (!param.insuranceCoverageConfigList.length) return ElMessage.error('请至少输入一项保险额度');
if (isIllegalNum(param.premiumAmount)) {
return ElMessage.error('请输入合理的保费金额');
} else {
param.premiumAmount = Number(param.premiumAmount).toFixed(2);
}
if (!param.formOfPayment) return ElMessage.error('请选择缴纳形式');
if (isIllegalNum(param.insuranceDeadline)) return ElMessage.error('请输入保险期限');
if (!param.insuranceDeadlineUnit) return ElMessage.error('请选择保险期限');
param.insuranceDeadline = param.insuranceDeadline + param.insuranceDeadlineUnit;
if (!param.applicationMaterial.length) return ElMessage.error('请至少选择一项申请材料');
if (!param.exemptionFromLiability.length) return ElMessage.error('请至少选择一项责任免除');
param.applicationMaterial = param.applicationMaterial.join();
param.exemptionFromLiability = param.exemptionFromLiability.join();
debugger;
await addInsuranceProducts(param);
addRecord(param);
ElMessage.success('提交成功!');

@ -1,7 +1,6 @@
<template>
<div class="block flex"
style="padding-top: 0">
<div class="left w-[241px] min-w-[241px] pr-5 py-4">
<div class="block card-list flex py-0">
<div class="left">
<div class="flex justify-center items-center py-2 mb-3 text-sm text-[#006BFF] bg-[rgba(0,107,255,0.1)] border border-solid border-[#006BFF] rounded-[10px] cursor-pointer"
@click="toAdd">
<el-icon class="mr-1"
@ -35,12 +34,12 @@
<p v-if="item.minimumAge && item.maximumAge"
class="type">{{ item.minimumAge + '-' + item.maximumAge + '周岁' }}</p>
<p v-if="item.insuranceCoverageConfig"
class="type">{{ item.insuranceCoverageConfig }}</p>
<p class="date">创建日期{{ item.createTime.split(' ')[0] }}</p>
class="type">{{ item.insuranceCoverageConfig }}万保额</p>
<p class="meta">创建日期{{ item.createTime.split(' ')[0] }}</p>
</li>
</ul>
</div>
<div class="right flex-1 px-5 pt-2">
<div class="right">
<detail v-if="action === 'detail'"></detail>
<add v-else-if="action === 'add'"
@getList="getList"></add>
@ -69,12 +68,12 @@ const list = ref<Array<any>>([]);
const loading = ref<boolean>(false);
const id = computed(() => +route.query.id);
//
const getList = async () => {
const getList = async (first: any) => {
loading.value = true;
try {
const { data } = await insuranceList({ pageNum: 1, pageSize: 1000, checkPointId: levelId, projectId, insuranceName: name });
list.value = data.records;
route.path !== '/product/insurance/add' && list.value.length && !id.value && switchProduct(list.value[0].insuranceId);
first && list.value.length && switchProduct(list.value[0].insuranceId);
} finally {
loading.value = false;
}
@ -112,29 +111,9 @@ const handleDelete = async (insId: number) => {
</script>
<style lang="scss" scoped>
.left {
border-right: 1px solid #e9eff2;
}
.products {
@apply max-h-[calc(100vh-205px)] pr-1 overflow-auto;
li {
@apply relative p-5 pt-7 mb-5 rounded-[10px] cursor-pointer border border-solid border-[transparent] bg-[url('@/assets/images/10.png')] bg-[length:100%_100%] bg-no-repeat;
&.active {
@apply border-[#CAE0FF];
}
}
.del {
@apply absolute top-0 right-0;
}
h6 {
@apply text-[#14436b];
}
.type,
.status {
@apply my-[15px] text-sm text-[#333];
}
.date {
@apply mt-[15px] text-sm text-[#8798a9];
.card-list {
.products {
@apply max-h-[calc(100vh-200px)];
}
}
</style>

@ -9,17 +9,17 @@
<div class="text">
<div class="flex">
<p class="w-[130px] mr-32">保险责任</p>
<p class="">保额</p>
<p class="">保额</p>
</div>
<div v-for="(item, i) in info.insuranceCoverageConfigList"
:key="item"
class="flex">
<p class="w-[130px] mr-32">{{item.insuranceCoverage}}</p>
<p class="">{{item.sumInsured}}</p>
<p class="w-[130px] mr-32">{{ item.insuranceCoverage }}</p>
<p>{{ item.sumInsured * (item.insuredLiabilityId === 764 || item.insuredLiabilityId === 765 ? 1 : 10000) }}</p>
</div>
</div>
<p v-if="info.premiumAmount"
class="text">保费金额{{ info.premiumAmount }}</p>
class="text">保费金额{{ info.premiumAmount }}</p>
<p v-if="info.formOfPayment"
class="text">缴纳形式{{ info.formOfPayment }}</p>
<div v-if="info.applicationMaterialList?.length"

@ -52,7 +52,7 @@
label="保险额度(元)"
min-width="300">
<template #default="{ row }">
{{ row.insuranceCoverageConfig || '-' }}
{{ row.insuranceCoverageConfig ? row.insuranceCoverageConfig + '万保额' : '-' }}
</template>
</el-table-column>
<el-table-column prop="insuranceDeadline"

@ -1,23 +1,22 @@
<template>
<div class="block"
style="padding-top: 0">
<div class="block card-list py-0">
<el-tabs v-model="curTab"
@tab-click="tabChange">
<el-tab-pane label="额度模型"
name="tab1">
<div class="flex">
<div class="left w-[241px] min-w-[241px] pr-5 py-4">
<div class="left">
<ul class="products">
<li v-for="(item, i) in list[0]?.recordChildren"
:key="i"
:class="{ active: item.id === id }"
@click="switchProduct(item.id)">
<h6>{{ item.name }}</h6>
<p class="type">{{ item.remark }}</p>
<p class="meta">{{ item.remark }}</p>
</li>
</ul>
</div>
<div class="right flex-1 px-5 pt-2">
<div class="right">
<Com1 v-if="id == 772" />
<Com2 v-else-if="id == 773" />
</div>
@ -33,7 +32,7 @@
:class="{ active: item.id === id }"
@click="switchProduct(item.id)">
<h6>{{ item.name }}</h6>
<p class="type">{{ item.remark }}</p>
<p class="meta">{{ item.remark }}</p>
</li>
</ul>
</div>
@ -89,28 +88,12 @@ const tabChange = (tab: TabsPaneContext, event: Event) => {
</script>
<style lang="scss" scoped>
.left {
border-right: 1px solid #e9eff2;
}
.products {
@apply max-h-[calc(100vh-205px)] pr-1 overflow-auto;
li {
@apply relative p-5 pt-7 mb-5 rounded-[10px] cursor-pointer border border-solid border-[transparent] bg-[url('@/assets/images/10.png')] bg-[length:100%_100%] bg-no-repeat;
&.active {
@apply border-[#CAE0FF];
}
}
.del {
@apply absolute top-0 right-0;
}
h6 {
@apply text-[#14436b];
}
.type {
@apply my-3 text-sm text-[#333];
.card-list {
.products {
@apply max-h-[calc(100vh-180px)];
}
.des {
@apply text-sm text-[#8798a9];
.right {
@apply max-h-[calc(100vh-150px)];
}
}
</style>

@ -1,6 +1,6 @@
<template>
<!-- 政务 -->
<div class="w-[calc(100vw-533px)] overflow-auto">
<div class="c-auto">
<el-table class="c-table"
:data="form"
:max-height="height"
@ -14,7 +14,6 @@
align="center">
</el-table-column>
<el-table-column label="规则"
fixed
width="350"
align="center">
<template #default="{ row }">
@ -141,7 +140,7 @@ const projectId = +Cookies.get('sand-projectId');
const levelId = +Cookies.get('sand-level');
const form = ref<Record<string, any>[]>([]);
const info = ref<Record<string, any>[]>([]);
const height = window.innerHeight - 270;
const height = window.innerHeight - 230;
const symbols: Array<Record<string, any>> = [
{
name: '>=',
@ -345,9 +344,4 @@ const addRecord = async (data: Record<string, any>) => {
<style lang="scss" scoped>
@import url(../../../styles/form.scss);
.c-table {
:deep(.el-input__inner) {
@apply px-2;
}
}
</style>

@ -7,11 +7,12 @@
border>
<el-table-column prop="name"
label="进入黑名单指标"
min-width="150"
fixed
min-width="220"
align="center">
</el-table-column>
<el-table-column label="本人进黑名单规则"
min-width="250"
width="700"
align="center">
<template #default="{ row }">
<!-- 贷记卡账户状态 -->
@ -78,7 +79,7 @@
</template>
</el-table-column>
<el-table-column label="配偶拒入标准同本人"
width="160"
min-width="160"
align="center">
<template #default="{ row }">
<el-checkbox v-model="row.mateRejectedStandardIdentity"></el-checkbox>
@ -97,7 +98,6 @@ import { ref, computed, watch, onMounted } from 'vue';
import { ElMessage } from 'element-plus';
import { accessStrategyCreditBlacklistFind, accessStrategyCreditBlacklistSave } from '@/api/model';
import { getProcessInformationBasedOnRoles, addOperation } from '@/api/judgment';
import type { TableColumnCtx } from 'element-plus';
import { useRouter, useRoute } from 'vue-router';
import { handleId } from '@/utils/common';
import Cookies from 'js-cookie';
@ -108,7 +108,7 @@ const projectId = +Cookies.get('sand-projectId');
const levelId = +Cookies.get('sand-level');
const form = ref<Record<string, any>[]>([]);
const info = ref<Record<string, any>[]>([]);
const height = window.innerHeight - 270;
const height = window.innerHeight - 230;
const symbols: Array<Record<string, any>> = [
{
name: '>=',

@ -16,7 +16,7 @@
min-width="150">
</el-table-column>
<el-table-column label="进黑名单条件"
min-width="250">
width="540">
<template #default="{ row,$index }">
<div v-if="$index < 4"
class="flex items-center">
@ -163,7 +163,7 @@ const projectId = +Cookies.get('sand-projectId');
const levelId = +Cookies.get('sand-level');
const form = ref<Record<string, any>[]>([]);
const info = ref<Record<string, any>[]>([]);
const height = window.innerHeight - 270;
const height = window.innerHeight - 230;
const spanRows = [1, 2, 3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 15, 17, 19, 20, 21, 22, 23, 24, 25, 26, 27];
const symbols: Array<Record<string, any>> = [
{

@ -8,11 +8,12 @@
border>
<el-table-column prop="name"
label="五级分类"
fixed
min-width="150"
align="center">
</el-table-column>
<el-table-column label="未结清是否进黑名单"
min-width="150"
min-width="170"
align="center">
<template #default="{ row, $index }">
<span v-if="$index == 4">不存在未结清情况</span>
@ -21,7 +22,7 @@
</template>
</el-table-column>
<el-table-column label="进入黑名单规则"
min-width="250"
width="320"
align="center">
<template #default="{ row }">
<div class="flex items-center">
@ -53,14 +54,14 @@
</template>
</el-table-column>
<el-table-column label="结清是否能出黑名单"
min-width="150"
min-width="170"
align="center">
<template #default="{ row }">
<el-checkbox v-model="row.outBlacklist"></el-checkbox>
</template>
</el-table-column>
<el-table-column label="结清出黑名单规则"
min-width="300"
width="380"
align="center">
<template #default="{ row }">
<div class="flex items-center">
@ -133,7 +134,7 @@ const projectId = +Cookies.get('sand-projectId');
const levelId = +Cookies.get('sand-level');
const form = ref<Record<string, any>[]>([]);
const info = ref<Record<string, any>[]>([]);
const height = window.innerHeight - 270;
const height = window.innerHeight - 230;
const nums: Array<number> = [1, 3, 5, 10, 20, 30, 40];
const units: Array<string> = ['年', '个月', '天'];
//
@ -160,7 +161,6 @@ const getConfig = async () => {
result.push(temp);
});
form.value = result;
console.log('🚀 ~ file: 153.vue:163 ~ getConfig ~ form.value:', form.value);
};
//
const getDetail = async () => {

@ -273,7 +273,7 @@ const projectId = +Cookies.get('sand-projectId');
const levelId = +Cookies.get('sand-level');
const form = ref<Record<string, any>[]>([]);
const info = ref<Record<string, any>[]>([]);
const height = window.innerHeight - 270;
const height = window.innerHeight - 230;
const symbols: Array<string> = ['>=', '<', '>', '==', '<='];
const nums: Array<number> = [1, 3, 5, 6, 16, 33, 40];
const units: Array<string> = ['年', '月', '天'];

@ -133,7 +133,7 @@ const projectId = +Cookies.get('sand-projectId');
const levelId = +Cookies.get('sand-level');
const form = ref<Record<string, any>[]>([]);
const info = ref<Record<string, any>[]>([]);
const height = window.innerHeight - 270;
const height = window.innerHeight - 230;
const symbols: Array<string> = ['>=', '<', '>', '==', '<='];
const nums: Array<number> = [2, 3, 4, 7, 10, 30, 60, 85];
const units: Array<string> = ['年', '月', '天'];

@ -72,7 +72,7 @@ const projectId = +Cookies.get('sand-projectId');
const levelId = +Cookies.get('sand-level');
const form = ref<Record<string, any>[]>([]);
const info = ref<Record<string, any>[]>([]);
const height = window.innerHeight - 270;
const height = window.innerHeight - 230;
//
const getConfig = async () => {
const { process } = await getProcessInformationBasedOnRoles(156);

@ -1,42 +1,48 @@
<template>
<div class="block"
style="padding-top: 0">
<div class="block card-list py-0">
<el-tabs v-model="curTab"
@tab-click="tabChange">
<el-tab-pane label="准入策略"
name="tab1">
<div class="flex">
<div class="left w-[241px] min-w-[241px] pr-5 py-4">
<div class="left">
<ul class="products">
<li v-for="(item, i) in list[0]?.recordChildren"
:key="i"
:class="{ active: item.id === id }"
@click="switchProduct(item.id)">
<h6>{{ item.name }}</h6>
<p class="type">{{ item.remark }}</p>
<p class="meta">{{ item.remark }}</p>
</li>
</ul>
</div>
<div class="right flex-1 px-5 pt-2">
<div v-show="id == 150">
<div class="right">
<div v-show="id == 150"
class="c-auto">
<Com1 />
</div>
<div v-show="id == 151">
<div v-show="id == 151"
class="c-auto">
<Com2 />
</div>
<div v-show="id == 152">
<div v-show="id == 152"
class="c-auto">
<Com3 />
</div>
<div v-show="id == 153">
<div v-show="id == 153"
class="c-auto">
<Com4 />
</div>
<div v-show="id == 154">
<div v-show="id == 154"
class="c-auto">
<Com5 />
</div>
<div v-show="id == 155">
<div v-show="id == 155"
class="c-auto">
<Com6 />
</div>
<div v-show="id == 156">
<div v-show="id == 156"
class="c-auto">
<Com7 />
</div>
</div>
@ -45,7 +51,7 @@
<el-tab-pane label="信用评分策略"
name="tab2">
<div class="flex">
<div class="left w-[241px] min-w-[241px] pr-5 py-4">
<div class="left">
<div class="flex justify-center items-center py-2 mb-3 text-sm text-[#006BFF] bg-[rgba(0,107,255,0.1)] border border-solid border-[#006BFF] rounded-[10px] cursor-pointer"
@click="toAdd">
<el-icon class="mr-1"
@ -55,7 +61,7 @@
</el-icon>
新增评分卡
</div>
<ul class="products">
<ul class="products max-h-[calc(100vh-225px)]">
<li v-for="(item, i) in list1"
:key="i"
:class="{ active: item.id === creditId }"
@ -70,11 +76,11 @@
</el-popconfirm>
<h6>{{ item.scoreCardName }}</h6>
<p class="type">{{ item.scoringObject ? '企业' : '个人' }}</p>
<p class="des">{{ item.description }}</p>
<p class="meta">{{ item.description }}</p>
</li>
</ul>
</div>
<div class="right flex-1 px-5 pt-2">
<div class="right">
<Credit @getList="getList" />
</div>
</div>
@ -82,18 +88,18 @@
<el-tab-pane label="风险度策略"
name="tab3">
<div class="flex">
<div class="left w-[241px] min-w-[241px] pr-5 py-4">
<div class="left">
<ul class="products">
<li v-for="(item, i) in list2"
:key="i"
:class="{ active: item.id === riskId }"
@click="switchProductRisk(item.id)">
<h6>{{ item.name }}</h6>
<p class="mt-2 des">{{ item.remark }}</p>
<p class="meta">{{ item.remark }}</p>
</li>
</ul>
</div>
<div class="right flex-1 px-5 pt-2">
<div class="right">
<Risk1 v-if="riskId === 702" />
<Risk2 v-else-if="riskId === 703" />
<Risk3 v-else-if="riskId === 704" />
@ -105,7 +111,7 @@
</template>
<script setup lang="ts">
import { computed, onMounted, ref } from 'vue';
import { computed, watch, onMounted, ref } from 'vue';
import type { TabsPaneContext } from 'element-plus';
import { getProcessInformationBasedOnRoles } from '@/api/judgment';
import { delCredit, listCredit } from '@/api/model';
@ -153,6 +159,7 @@ const getList = async (refresh?: number) => {
if (curTab.value === 'tab1') {
const { process } = await getProcessInformationBasedOnRoles(67);
// eslint-disable-next-line no-unused-expressions
console.log('🚀 ~ file: CardList.vue:163 ~ getList ~ id.value:', id.value);
!id.value && switchProduct(process[0].recordChildren[0].id);
list.value = process;
} else if (curTab.value === 'tab2') {
@ -191,28 +198,12 @@ const tabChange = (tab: TabsPaneContext, event: Event) => {
</script>
<style lang="scss" scoped>
.left {
border-right: 1px solid #e9eff2;
}
.products {
@apply max-h-[calc(100vh-205px)] pr-1 overflow-auto;
li {
@apply relative p-5 pt-7 mb-5 rounded-[10px] cursor-pointer border border-solid border-[transparent] bg-[url('@/assets/images/10.png')] bg-[length:100%_100%] bg-no-repeat;
&.active {
@apply border-[#CAE0FF];
}
}
.del {
@apply absolute top-0 right-0;
}
h6 {
@apply text-[#14436b];
}
.type {
@apply my-3 text-sm text-[#333];
.card-list {
.products {
@apply max-h-[calc(100vh-180px)];
}
.des {
@apply text-sm text-[#8798a9];
.right {
@apply max-h-[calc(100vh-150px)];
}
}
</style>

Loading…
Cancel
Save