yujialong 10 months ago
parent f05785d785
commit 7d810cb052
  1. 6
      src/components/Back.vue
  2. 1
      src/components/Panel/index.vue
  3. 5
      src/layout/components/AppHeader.vue
  4. 10
      src/layout/components/AppSidebar/Menu.vue
  5. 5
      src/layout/components/AppSidebar/index.vue
  6. 8
      src/layout/index.vue
  7. 13
      src/views/config/level/Index.vue
  8. 8
      src/views/product/afterLoan/1030.vue
  9. 30
      src/views/product/afterLoan/1031.vue
  10. 6
      src/views/product/afterLoan/1032.vue
  11. 12
      src/views/product/afterLoan/1033.vue
  12. 2
      src/views/product/insurance/Add.vue
  13. 4
      src/views/product/insurance/Info.vue
  14. 2
      src/views/product/insurance/List.vue
  15. 3
      src/views/product/interestRate/772.vue
  16. 2
      src/views/product/interestRate/935.vue
  17. 23
      src/views/product/interestRate/936.vue
  18. 3
      src/views/product/strategy/150.vue
  19. 12
      src/views/product/strategy/151.vue
  20. 6
      src/views/product/strategy/152.vue
  21. 17
      src/views/product/strategy/153.vue
  22. 6
      src/views/product/strategy/154.vue
  23. 3
      src/views/product/strategy/155.vue
  24. 15
      src/views/product/strategy/156.vue
  25. 3
      src/views/product/strategy/CardList.vue
  26. 83
      src/views/product/strategy/Credit.vue
  27. 2
      src/views/product/strategy/Risk1.vue

@ -1,6 +1,7 @@
<template>
<div class="flex items-center p-3 mb-5 bg-white rounded-[10px]">
<div class="inline-flex items-center cursor-pointer">
<div class="inline-flex items-center cursor-pointer"
@click="logout">
<img src="@/assets/images/back.png"
alt=""
class="" />
@ -12,8 +13,11 @@
</template>
<script setup lang="ts">
import { PropType, ref } from 'vue';
import { useRouter, useRoute } from 'vue-router';
import { logout } from '@/store/useCurrentUser';
defineProps({
name: { type: String, required: true },
});
const router = useRouter();
</script>

@ -299,6 +299,7 @@ if (param.token) {
Cookies.set('sand-startTime', param.startTime ?? '');
Cookies.set('sand-resultsDetails', param.resultsDetails ?? '');
Cookies.set('sand-resultAnnouncementTime', param.resultAnnouncementTime ?? '');
Cookies.set('sand-admin', param.admin ?? ''); //
Cookies.remove('sand-submit');
router.replace(route.path);
} else {

@ -1,7 +1,8 @@
<template>
<div class="width-[100%] flex justify-between items-center w-full py-6 px-5 overflow-hidden bg-transparent">
<logo :collapse="collapse" />
<div class="inline-flex items-center">
<div v-if="!hidePanel"
class="inline-flex items-center">
<el-tooltip effect="light"
content="退出实训"
placement="bottom">
@ -10,7 +11,6 @@
alt=""
@click="logout" />
</el-tooltip>
<template v-if="!hidePanel">
<el-tooltip effect="light"
content="返回关卡"
placement="bottom">
@ -27,7 +27,6 @@
alt=""
@click="toRole" />
</el-tooltip>
</template>
</div>
</div>
</template>

@ -1,5 +1,5 @@
<template>
<ul class="switch px-7 mt-5">
<ul class="switch px-7">
<!-- 产品经理 -->
<template v-if="role == 41">
<li :class="{ active: active == 1 }"
@ -102,7 +102,9 @@
alt="" />
<p class="text">参数配置</p>
</li>
<li :class="{ active: route.path === '/config/level' }"
<!-- 中台进来的才需要显示关卡配置 -->
<li v-if="isAdmin"
:class="{ active: route.path === '/config/level' }"
@click="toPage('/config/level')">
<img class="icon"
src="@/assets/images/icon1.png"
@ -117,13 +119,15 @@
</template>
<script setup lang="ts">
import { computed, ref, toRefs } from 'vue';
import { computed, ref } from 'vue';
import { useRouter, useRoute } from 'vue-router';
import Cookies from 'js-cookie';
const router = useRouter();
const route = useRoute();
const active = computed(() => route.query.i);
const role = computed(() => route.query.role);
const isAdmin = ref<number | string>(route.query.admin ?? Cookies.get('sand-admin')); //
//
const toPage = (path: string) => {

@ -1,7 +1,8 @@
<template>
<div>
<el-scrollbar wrap-style="height: calc(100% - 85px)">
<div class="avatar py-3 mx-auto text-center">
<div v-if="!isConfig"
class="avatar py-3 mx-auto mb-5 text-center">
<img class="mx-auto"
src="@/assets/images/6.png"
alt="" />
@ -50,6 +51,7 @@ import dayjs from 'dayjs';
const router = useRouter();
const route = useRoute();
const isConfig = computed(() => route.path.startsWith('/config'));
const projectId = +Cookies.get('sand-projectId');
const levelId = +Cookies.get('sand-level');
const date = ref<string>(dayjs(new Date()).format('YYYY-M-D'));
@ -63,6 +65,7 @@ const roleName = computed(() => {
return '保险产品经理';
}
});
console.log('🚀 ~ roleName ~ roleName:', isConfig.value);
//
const getDate = async () => {
if (levelId && projectId) {

@ -1,6 +1,9 @@
<template>
<div class="min-h-full bg-[url('@/assets/images/1.png')] bg-[length:100%_100%] bg-no-repeat">
<app-header />
<Back v-if="hidePanel"
class="mx-3"
name="金融产品设计及数字化营销沙盘系统后台管理系统" />
<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-86px)] transition-margin duration-300 overflow-auto"
@ -19,12 +22,14 @@ import Settings from '@/settings';
import { AppSidebar, AppHeader, AppMain } from './components';
import useResizeHandler from './composables/useResizeHandler';
import Panel from '@/components/Panel/index.vue';
import Back from '@/components/Back.vue';
export default defineComponent({
name: 'Layout',
components: { AppSidebar, AppHeader, AppMain, Panel },
components: { AppSidebar, AppHeader, AppMain, Panel, Back },
setup() {
const route = useRoute();
const isConfig = computed(() => route.path.startsWith('/config'));
//
const hideNav = computed(() => {
return Settings.hideNavPath.includes(route.path);
@ -38,6 +43,7 @@ export default defineComponent({
return {
hideNav,
hidePanel,
isConfig,
};
},
});

@ -41,7 +41,7 @@
</div>
</div>
</div>
<div class="h-[calc(100vh-240px)] overflow-auto"
<div class="h-[calc(100vh-310px)] overflow-auto"
id="tableWrap">
<el-table v-loading="loading"
:data="list"
@ -135,7 +135,7 @@
<template #default="{ row }">
<el-popconfirm v-if="row.checkpointId"
:title="delTitle"
@confirm.stop="handleDelete([row.checkpointId])">
@confirm.stop="handleDelete([row])">
<template #reference>
<el-button type="text"
size="small">删除</el-button>
@ -280,12 +280,13 @@ const cancel = async (row: Record<string, any>) => {
row.editing = !row.editing;
};
//
const handleDelete = async (id: number[]) => {
const handleDelete = async (rows: Record<string, any>[]) => {
try {
const param = id.map((e) => {
const param = rows.map((e) => {
return {
checkpointId: e,
checkpointId: e.checkpointId,
isDel: 1,
customsPassName: e.customsPassName,
};
});
await updatePass(param);
@ -295,6 +296,6 @@ const handleDelete = async (id: number[]) => {
};
//
const delAll = async () => {
handleDelete(multipleSelection.value.map((e) => e.checkpointId));
handleDelete(multipleSelection.value);
};
</script>

@ -26,7 +26,8 @@
min-width="200"
align="center">
<template #default="{ row }">
<el-select v-model="row.checkObject">
<el-select v-if="row.recordChildren"
v-model="row.checkObject">
<el-option v-for="item in row?.recordChildren[1].subject.itemList"
:key="item"
:label="item.options"
@ -41,7 +42,8 @@
<span v-if="$index === 4">点击后触发</span>
<div v-else
class="flex items-center">
<el-select v-model="row.checkTimeType">
<el-select v-if="row.recordChildren"
v-model="row.checkTimeType">
<el-option v-for="item in row?.recordChildren[2].recordChildren[0].subject.itemList"
:key="item"
:label="item.options"
@ -149,7 +151,7 @@ const addRecord = async (data: Record<string, any>) => {
i !== 4 && rule.push(handleId(1054, 283, e.checkTimeType, preIds + ',' + e.stRecordId + ',1054,1056', 1));
e.timeDays && rule.push(handleId(1057, 284, e.timeDays, preIds + ',' + e.stRecordId + ',1054,1057', 3));
e.governmentData && rule.push(handleId(1058, '', '', preIds + ',' + e.stRecordId + ',1055,1058', ''));
e.creditData && rule.push(handleId(1058, '', '', preIds + ',' + e.stRecordId + ',1055,1058', ''));
e.creditData && rule.push(handleId(1059, '', '', preIds + ',' + e.stRecordId + ',1055,1059', ''));
});
await addOperation({

@ -18,7 +18,8 @@
<template v-if="$index === 1">
存贷比 =
<div class="inline-flex flex-col justify-center mx-2">
<el-select class="w-[140px]"
<el-select v-if="row.recordChildren"
class="w-[140px]"
v-model="row.formulaOne">
<el-option v-for="item in row?.recordChildren[0].subject.itemList"
:key="item"
@ -26,7 +27,8 @@
:value="item.itemId" />
</el-select>
<p class="h-[1px] my-2 bg-[#cdcdcd]"></p>
<el-select class="w-[140px]"
<el-select v-if="row.recordChildren"
class="w-[140px]"
v-model="row.formulaTwo">
<el-option v-for="item in row?.recordChildren[1].subject.itemList"
:key="item"
@ -38,7 +40,8 @@
</template>
<template v-if="$index === 6">
房屋净值 =
<el-select class="w-[140px] mx-2"
<el-select v-if="row.recordChildren"
class="w-[140px] mx-2"
v-model="row.formulaOne">
<el-option v-for="item in row?.recordChildren[0].subject.itemList"
:key="item"
@ -46,7 +49,8 @@
:value="item.itemId" />
</el-select>
-
<el-select class="w-[140px] ml-2"
<el-select v-if="row.recordChildren"
class="w-[140px] ml-2"
v-model="row.formulaTwo">
<el-option v-for="item in row?.recordChildren[1].subject.itemList"
:key="item"
@ -58,7 +62,8 @@
<el-input class="w-[80px] mx-2"
v-model="row.formulaOne"></el-input>
<el-select class="w-[140px] mr-2"
<el-select v-if="row.recordChildren"
class="w-[140px] mr-2"
v-model="row.formulaTwo">
<el-option v-for="item in row?.recordChildren[1].subject.itemList"
:key="item"
@ -69,7 +74,8 @@
</template>
<template v-if="$index === 13">
<el-select class="w-[140px] mx-2"
<el-select v-if="row.recordChildren"
class="w-[140px] mx-2"
v-model="row.formulaOne">
<el-option v-for="item in row?.recordChildren[0].subject.itemList"
:key="item"
@ -82,7 +88,8 @@
<template v-if="$index === 20">
平均额度使用率 =
<div class="inline-flex flex-col justify-center mx-2">
<el-select class="w-[140px]"
<el-select v-if="row.recordChildren"
class="w-[140px]"
v-model="row.formulaOne">
<el-option v-for="item in row?.recordChildren[0].subject.itemList"
:key="item"
@ -90,7 +97,8 @@
:value="item.itemId" />
</el-select>
<p class="h-[1px] my-2 bg-[#cdcdcd]"></p>
<el-select class="w-[140px]"
<el-select v-if="row.recordChildren"
class="w-[140px]"
v-model="row.formulaTwo">
<el-option v-for="item in row?.recordChildren[1].subject.itemList"
:key="item"
@ -103,7 +111,8 @@
<template v-if="$index === 24">
最大用信率 =
<div class="inline-flex flex-col justify-center mx-2">
<el-select class="w-[140px]"
<el-select v-if="row.recordChildren"
class="w-[140px]"
v-model="row.formulaOne">
<el-option v-for="item in row?.recordChildren[0].subject.itemList"
:key="item"
@ -111,7 +120,8 @@
:value="item.itemId" />
</el-select>
<p class="h-[1px] my-2 bg-[#cdcdcd]"></p>
<el-select class="w-[140px]"
<el-select v-if="row.recordChildren"
class="w-[140px]"
v-model="row.formulaTwo">
<el-option v-for="item in row?.recordChildren[1].subject.itemList"
:key="item"

@ -18,7 +18,8 @@
align="center">
<template #default="{ row }">
<div class="flex">
<el-select class="mr-2"
<el-select v-if="row.recordChildren"
class="mr-2"
v-model="row.riskGradeType">
<el-option v-for="item in row?.recordChildren[1].recordChildren[0].subject.itemList"
:key="item"
@ -26,7 +27,8 @@
:value="item.itemId" />
</el-select>
<el-select v-model="row.riskGrade">
<el-select v-if="row.recordChildren"
v-model="row.riskGrade">
<el-option v-for="item in row?.recordChildren[1].recordChildren[1].subject.itemList"
:key="item"
:label="item.options"

@ -11,19 +11,21 @@
align="center">
</el-table-column>
<el-table-column label="选择催收方式"
width="360"
width="440"
align="center">
<template #default="{ row }">
<el-checkbox v-model="row.shortMessageCollection">短信催收</el-checkbox>
<el-checkbox v-model="row.appCollection">APP催收</el-checkbox>
<el-checkbox v-model="row.automaticOutboundCall">自动外呼</el-checkbox>
<el-checkbox v-model="row.manualCollection">人工催收</el-checkbox>
</template>
</el-table-column>
<el-table-column label="短信/APP/自动外呼 话术"
min-width="310"
align="center">
<template #default="{ row }">
<el-select class="w-full"
<el-select v-if="row.recordChildren"
class="w-full"
v-model="row.verbalTrick">
<el-option v-for="item in row?.recordChildren[3].subject.itemList"
:key="item"
@ -65,6 +67,7 @@ const getConfig = async () => {
appCollection: info.value.length ? !!cur.appCollection : false,
automaticOutboundCall: info.value.length ? !!cur.automaticOutboundCall : false,
shortMessageCollection: info.value.length ? !!cur.shortMessageCollection : false,
manualCollection: info.value.length ? !!cur.manualCollection : false,
verbalTrick: +(cur.verbalTrick || 750),
id: cur.id || '',
stRecordId: e.id,
@ -82,15 +85,17 @@ const getDetail = async () => {
}
};
const fieldKeys = ['shortMessageCollection', 'appCollection', 'automaticOutboundCall'];
const fieldKeys = ['shortMessageCollection', 'appCollection', 'automaticOutboundCall', '', 'manualCollection'];
//
const addRecord = async (data: Record<string, any>) => {
console.log('🚀 ~ addRecord ~ data:', data);
const preIds = `1,${levelId},42,69,1033,1149`; // 1id
const rule = [];
data.map((e) => {
e.recordChildren.forEach((n, i) => {
if (i !== 3) {
console.log('🚀 ~ e.recordChildren.forEach ~ n.id:', e[fieldKeys[i]], n.id);
e[fieldKeys[i]] && rule.push(handleId(n.id, '', '', `${preIds},${e.stRecordId},${n.id}`, ''));
} else {
rule.push(handleId(n.id, n.subjectId, e.verbalTrick, `${preIds},${e.stRecordId},${n.id}`, 1));
@ -112,6 +117,7 @@ const submit = async () => {
e.appCollection = +e.appCollection;
e.automaticOutboundCall = +e.automaticOutboundCall;
e.shortMessageCollection = +e.shortMessageCollection;
e.manualCollection = +e.manualCollection;
});
const recordParam = JSON.parse(JSON.stringify(param));

@ -230,7 +230,7 @@ const submit = async () => {
}
param.insuranceCoverageConfigList.push({
insuredLiabilityId: e.id,
sumInsured: +e.sumInsured,
sumInsured: Number(e.sumInsured).toFixed(2),
});
}
}

@ -15,11 +15,11 @@
:key="item"
class="flex">
<p class="w-[130px] mr-32">{{ item.insuranceCoverage }}</p>
<p>{{ item.sumInsured * (item.insuredLiabilityId === 764 || item.insuredLiabilityId === 765 ? 1 : 10000) }}</p>
<p>{{ Number(item.sumInsured * (item.insuredLiabilityId === 764 || item.insuredLiabilityId === 765 ? 1 : 10000)).toFixed(2) }}</p>
</div>
</div>
<p v-if="info.premiumAmount"
class="text">保费金额{{ info.premiumAmount }}</p>
class="text">保费金额{{ Number(info.premiumAmount).toFixed(2) }}</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 ? row.insuranceCoverageConfig + '万' : '-' }}
</template>
</el-table-column>
<el-table-column prop="insuranceDeadline"

@ -62,7 +62,8 @@
class="flex items-center">
<span v-if="!$index"
class="mr-2 whitespace-nowrap">{{ row?.subject?.name }}</span>
<el-select v-model="row.score">
<el-select v-if="row.subject"
v-model="row.score">
<el-option v-for="item in row?.subject?.itemList"
:key="item"
:value="item.options" />

@ -26,7 +26,7 @@
<el-table-column label="分值"
min-width="150">
<template #default="{ row, $index }">
<el-select v-if="$index !== 12 && $index !== 13"
<el-select v-if="$index !== 12 && $index !== 13 && row.subject && row.subject.itemList"
class="w-full"
v-model="row.score">
<el-option v-for="item in row?.subject?.itemList"

@ -17,7 +17,7 @@
min-width="100"
align="center">
<template #default="{ row }">
<el-select v-if="row?.recordChildren?.length < 3"
<el-select v-if="row.recordChildren && row?.recordChildren?.length < 3"
class="w-full"
v-model="row.computationalFormula">
<el-option v-for="item in row.recordChildren[0]?.subject?.itemList"
@ -39,7 +39,7 @@
<el-input v-else-if="$index === 52 || $index === 53"
placeholder="请输入"
v-model="row.floatingCoefficient"></el-input>
<el-select v-else
<el-select v-else-if="row.subject"
class="w-full"
v-model="row.floatingCoefficient">
<el-option v-for="item in row?.subject?.itemList"
@ -173,14 +173,16 @@ const getConfig = async () => {
modelId: info.value[11]?.modelId || '',
indexName: '最低浮动比例',
formula: '--',
floatingCoefficient: info.value[11]?.corporateInterestRateModels[0]?.floatingCoefficient || '',
id: info.value[11]?.corporateInterestRateModels[info.value[11]?.corporateInterestRateModels?.length - 1]?.id || '',
floatingCoefficient: info.value[11]?.corporateInterestRateModels[info.value[11]?.corporateInterestRateModels?.length - 1]?.floatingCoefficient ?? '',
},
{
indexId: info.value[12]?.indexId || '',
modelId: info.value[12]?.modelId || '',
indexName: '最高浮动比例',
formula: '--',
floatingCoefficient: info.value[12]?.corporateInterestRateModels[0]?.floatingCoefficient || '',
id: info.value[12]?.corporateInterestRateModels[info.value[12]?.corporateInterestRateModels?.length - 1]?.id || '',
floatingCoefficient: info.value[12]?.corporateInterestRateModels[info.value[12]?.corporateInterestRateModels?.length - 1]?.floatingCoefficient ?? '',
},
);
form.value.corporateInterestRateModelIndicators = result;
@ -275,12 +277,13 @@ const addRecord = async (data: Record<string, any>) => {
form.value.corporateInterestRateModelIndicators.forEach((e, i) => {
//
e.floatingCoefficient &&
e?.recordChildren?.length &&
rule.push(
handleId(
e.ruleId,
e.subject.subjectId,
e?.subject?.subjectId,
e?.subject?.itemList?.find((n) => n.options === e.floatingCoefficient)?.itemId,
`${listIds},${e.stRecordId}${e.recordChildren.length > 2 ? '' : ',' + e.recordChildren[1].id},${e.ruleId}`,
`${listIds},${e.stRecordId}${e?.recordChildren?.length > 2 ? '' : ',' + e?.recordChildren[1]?.id},${e.ruleId}`,
1,
),
);
@ -290,10 +293,10 @@ const addRecord = async (data: Record<string, any>) => {
!e.rule &&
rule.push(
handleId(
e.recordChildren[0].id,
e.recordChildren[0].subjectId,
e.recordChildren[0]?.subject?.itemList?.find((n) => n.options === e.computationalFormula)?.itemId,
`${listIds},${e.stRecordId},${e.recordChildren[0].id}`,
e?.recordChildren[0]?.id,
e?.recordChildren[0]?.subjectId,
e?.recordChildren[0]?.subject?.itemList?.find((n) => n.options === e.computationalFormula)?.itemId,
`${listIds},${e.stRecordId},${e?.recordChildren[0]?.id}`,
1,
),
);

@ -20,7 +20,8 @@
<!-- 大病报销 || 贫困户 -->
<div v-if="row.stRecordId == 161 || row.stRecordId == 164"
class="flex items-center">
<span class="whitespace-nowrap">{{ row?.recordChildren[row.span ? 1 : 0]?.name }}</span>
<span v-if="row.recordChildren"
class="whitespace-nowrap">{{ row?.recordChildren[row.span ? 1 : 0]?.name }}</span>
<div class="w-[90px] ">
<el-select class="mx-2"
v-model="row.symbol">

@ -18,7 +18,8 @@
<!-- 贷记卡账户状态 -->
<div v-if="row.stRecordId == 204"
class="flex items-center">
<span class="whitespace-nowrap">{{ row?.recordChildren[0]?.name }}</span>
<span v-if="row.recordChildren"
class="whitespace-nowrap">{{ row?.recordChildren[0]?.name }}</span>
<el-input class="w-[150px] mx-2"
v-model="row.ruleOne"></el-input>
<span class="whitespace-nowrap">的信用卡</span>
@ -26,7 +27,8 @@
<!-- 贷记卡审批通过率 -->
<div v-else-if="isRule(row.stRecordId)"
class="flex items-center">
<span class="whitespace-nowrap">{{ row?.recordChildren[0]?.name }}</span>
<span v-if="row.recordChildren"
class="whitespace-nowrap">{{ row?.recordChildren[0]?.name }}</span>
<div class="w-[90px] ">
<el-select class="mx-2"
v-model="row.symbol">
@ -38,7 +40,8 @@
</div>
<el-input class="w-[80px]"
v-model="row.num"></el-input>
<span class="ml-2 whitespace-nowrap">{{ row?.recordChildren[1]?.name }}</span>
<span v-if="row.recordChildren"
class="ml-2 whitespace-nowrap">{{ row?.recordChildren[1]?.name }}</span>
<div class="w-[90px] ">
<el-select class="mx-2"
v-model="row.symbol1">
@ -62,7 +65,8 @@
</div>
<div v-else
class="flex items-center">
<span class="whitespace-nowrap">{{ row?.recordChildren[0]?.name }}</span>
<span v-if="row.recordChildren"
class="whitespace-nowrap">{{ row?.recordChildren[0]?.name }}</span>
<div class="w-[90px] ">
<el-select class="mx-2"
v-model="row.symbol">

@ -38,7 +38,8 @@
<!-- 腾讯 -->
<div v-else-if="$index === 14"
class="flex items-center">
<span class="whitespace-nowrap">{{ row?.recordChildren[0]?.recordChildren[0]?.name }}</span>
<span v-if="row.recordChildren"
class="whitespace-nowrap">{{ row?.recordChildren[0]?.recordChildren[0]?.name }}</span>
<div class="w-[90px] ">
<el-select class="mx-2"
v-model="row.symbol">
@ -101,7 +102,8 @@
</div>
<div v-else-if="$index === 18"
class="w-[90px] ">
<el-select v-model="row.symbol">
<el-select v-if="row.recordChildren"
v-model="row.symbol">
<el-option v-for="item in row?.recordChildren[0]?.subject?.itemList"
:key="item"
:label="item.options"

@ -26,7 +26,8 @@
align="center">
<template #default="{ row }">
<div class="flex items-center">
<span class="whitespace-nowrap">{{ row?.recordChildren[1]?.recordChildren[0]?.name }}认定{{row.name}}</span>
<span v-if="row.recordChildren"
class="whitespace-nowrap">{{ row?.recordChildren[1]?.recordChildren[0]?.name }}认定{{row.name}}</span>
<div class="w-[90px] ">
<el-select class="mx-2"
v-model="row.enterRuleOne">
@ -39,7 +40,8 @@
<span class="whitespace-nowrap">天以上进入黑名单</span>
</div>
<div class="flex items-center mt-2">
<span class="whitespace-nowrap">{{ row?.recordChildren[1]?.recordChildren[1]?.name }}认定{{row.name}}</span>
<span v-if="row.recordChildren"
class="whitespace-nowrap">{{ row?.recordChildren[1]?.recordChildren[1]?.name }}认定{{row.name}}</span>
<div class="w-[90px] ">
<el-select class="mx-2"
v-model="row.enterRuleTwo">
@ -65,7 +67,8 @@
align="center">
<template #default="{ row }">
<div class="flex items-center">
<span class="whitespace-nowrap">{{ row?.recordChildren[1]?.recordChildren[0]?.name }}结清后</span>
<span v-if="row.recordChildren"
class="whitespace-nowrap">{{ row?.recordChildren[1]?.recordChildren[0]?.name }}结清后</span>
<div class="w-[90px] ">
<el-select class="mx-2"
v-model="row.num">
@ -87,7 +90,8 @@
<span class="whitespace-nowrap">后出黑名单</span>
</div>
<div class="flex items-center mt-2">
<span class="whitespace-nowrap">{{ row?.recordChildren[1]?.recordChildren[1]?.name }}结清后</span>
<span v-if="row.recordChildren"
class="whitespace-nowrap">{{ row?.recordChildren[1]?.recordChildren[1]?.name }}结清后</span>
<div class="w-[90px] ">
<el-select class="mx-2"
v-model="row.num1">
@ -119,16 +123,15 @@
</template>
<script setup lang="ts">
import { ref, computed, watch, onMounted } from 'vue';
import { ref, watch } from 'vue';
import { ElMessage } from 'element-plus';
import { accessStrategyInlineBlacklistFind, accessStrategyInlineBlacklistSave } from '@/api/model';
import { getProcessInformationBasedOnRoles, addOperation } from '@/api/judgment';
import type { TableColumnCtx } from 'element-plus';
import { useRouter, useRoute } from 'vue-router';
import { useRoute } from 'vue-router';
import { handleId, getNum, getChinese } from '@/utils/common';
import Cookies from 'js-cookie';
const router = useRouter();
const route = useRoute();
const projectId = +Cookies.get('sand-projectId');
const levelId = +Cookies.get('sand-level');

@ -71,7 +71,8 @@
<span class="whitespace-nowrap ml-2">不良贷款客户</span>
</template>
<template v-else-if="$index === 4">
<el-checkbox-group v-model="row.check">
<el-checkbox-group v-if="row.subject"
v-model="row.check">
<el-checkbox v-for="item in row?.subject?.itemList"
:key="item"
:label="item.options" />
@ -127,7 +128,8 @@
</template>
<template v-else-if="$index === 8">
<span class="whitespace-nowrap mr-2">企业性质涉及</span>
<el-checkbox-group v-model="row.check">
<el-checkbox-group v-if="row.subject"
v-model="row.check">
<el-checkbox v-for="item in row?.subject?.itemList"
:key="item"
:label="item.options" />

@ -79,7 +79,8 @@
<template v-else-if="row.stRecordId === 385">
<span class="whitespace-nowrap">命中</span>
<div class="flex-1">
<el-select v-model="row.select">
<el-select v-if="row.recordChildren"
v-model="row.select">
<el-option v-for="item in row?.recordChildren[0]?.subject?.itemList"
:key="item"
:value="item.options" />

@ -24,28 +24,32 @@
min-width="150"
align="center">
<template #default="{ row }">
<el-checkbox v-model="row.myselfWorkplace"></el-checkbox>
<el-checkbox v-model="row.myselfWorkplace"
@change="e => checkRow(e, row)"></el-checkbox>
</template>
</el-table-column>
<el-table-column label="配偶工作单位"
min-width="150"
align="center">
<template #default="{ row }">
<el-checkbox v-model="row.spouseWorkplace"></el-checkbox>
<el-checkbox v-model="row.spouseWorkplace"
@change="e => checkRow(e, row)"></el-checkbox>
</template>
</el-table-column>
<el-table-column label="本人名下企业"
min-width="150"
align="center">
<template #default="{ row }">
<el-checkbox v-model="row.myselfEnterprise"></el-checkbox>
<el-checkbox v-model="row.myselfEnterprise"
@change="e => checkRow(e, row)"></el-checkbox>
</template>
</el-table-column>
<el-table-column label="配偶名下企业"
min-width="150"
align="center">
<template #default="{ row }">
<el-checkbox v-model="row.spouseEnterprise"></el-checkbox>
<el-checkbox v-model="row.spouseEnterprise"
@change="e => checkRow(e, row)"></el-checkbox>
</template>
</el-table-column>
<el-table-column label="可以准入"
@ -157,6 +161,9 @@ const span = ({ row, column, rowIndex, columnIndex }: SpanMethodProps) => {
}
}
};
const checkRow = (e: boolean, row: Record<string, any>) => {
if (e) row.admittance = false;
};
const checkNone = (row: Record<string, any>) => {
if (row.admittance) {
row.myselfEnterprise = false;

@ -6,7 +6,8 @@
name="tab1">
<div class="flex">
<div class="left">
<ul class="products">
<ul v-if="list[0] && list[0]?.recordChildren"
class="products">
<li v-for="(item, i) in list[0]?.recordChildren"
:key="i"
:class="{ active: item.id === id }"

@ -27,10 +27,11 @@
<el-table-column prop="name"
label="选用"
width="100">
<template #default="{ row }">
<template #default="{ row, $index }">
<div class="items-center">
<el-checkbox class="mr-2"
v-model="row.isChoose"></el-checkbox>
v-model="row.isChoose"
@change="checkAll(row, $index)"></el-checkbox>
<span v-if="row.top">{{row.name}}</span>
</div>
</template>
@ -42,7 +43,7 @@
label="计算公式">
<template #default="{ row }">
<span v-if="isSelect(row.answerId1)">{{ row.remark }}</span>
<el-select v-else
<el-select v-else-if="row.recordChildren"
v-model="row.calculationFormula">
<el-option v-for="item in row?.recordChildren[1]?.subject?.itemList"
:key="item"
@ -55,13 +56,14 @@
width="110"
align="center">
<template #default="{ row }">
<span>{{ isSelect(row.answerId1) ? row.index : row?.recordChildren[2]?.recordChildren[0]?.name }}</span>
<span v-if="isSelect(row.answerId1)">{{ row.index }}</span>
<span v-else-if="row.recordChildren">{{ row?.recordChildren[2]?.recordChildren[0]?.name }}</span>
</template>
</el-table-column>
<el-table-column label="分值"
align="center">
<template #default="{ row }">
<el-select v-if="isSelect(row.answerId1)"
<el-select v-if="isSelect(row.answerId1) && row.subject"
v-model="row.score">
<el-option v-for="item in row?.subject?.itemList"
:key="item"
@ -71,17 +73,16 @@
:class="'flex items-center'">
<span v-if="row.answerId2 === 643"
class="mr-2 whitespace-nowrap">全部为正常贷款满分</span>
<span class="whitespace-nowrap">
{{ row.answerId2 === 627 ?
'每少1倍扣' :
(row.answerId1 === 590 || row.answerId1 === 591 || row.answerId1 === 592) ?
row?.recordChildren[2]?.recordChildren[0]?.recordChildren[0]?.name.replace('分','') :
row.answerId1 === 595 ?
'每降1%扣' :
'' }}
</span>
<span v-if="row.answerId2 === 627"
class="whitespace-nowrap">每少1倍扣</span>
<span v-else-if="(row.answerId1 === 590 || row.answerId1 === 591 || row.answerId1 === 592) && row.recordChildren"
class="whitespace-nowrap">{{ row?.recordChildren[2]?.recordChildren[0]?.recordChildren[0]?.name.replace('分', '') }}</span>
<span v-else-if="row.answerId1 === 595"
class="whitespace-nowrap">每降1%</span>
<div class="w-[100px] mx-2">
<el-select v-model="row.score">
<el-select v-if="row.recordChildren"
v-model="row.score">
<el-option v-for="item in row?.recordChildren[2]?.recordChildren[0]?.recordChildren[0]?.subject?.itemList"
:key="item"
:value="item.options" />
@ -100,7 +101,8 @@
</span>
<template v-if="row.answerId2 !== 627 && row.answerId2 !== 646 && row.answerId2 !== 667 && row.answerId2 !== 668 && row.answerId2 !== 670 && row.answerId2 !== 694 && row.answerId2 !== 695">
<div class="w-[120px] mx-2">
<el-select placeholder=""
<el-select v-if="row.recordChildren"
placeholder=""
v-model="row.percentage">
<el-option v-for="item in row.answerId2 === 669 || row.answerId2 === 671 ? row?.recordChildren[2]?.recordChildren[0]?.recordChildren[0]?.subject?.itemList : row?.recordChildren[2]?.recordChildren[0]?.recordChildren[1]?.subject?.itemList"
:key="item"
@ -140,7 +142,8 @@
min-width="150"
align="center">
<template #default="{ row }">
<el-select v-model="row.score">
<el-select v-if="row.itemList"
v-model="row.score">
<el-option v-for="item in row?.itemList"
:key="item"
:value="item.options" />
@ -646,6 +649,7 @@ watch(
const isSelect = (rule: number): boolean => {
return rule === 589 || rule === 594;
};
interface SpanMethodProps {
row: Record<string, any>;
column: TableColumnCtx<Record<string, any>>;
@ -716,6 +720,51 @@ const span = ({ row, column, rowIndex, columnIndex }: SpanMethodProps) => {
}
}
};
//
const checkAll = (row: Record<string, any>, i: number) => {
const c = row.isChoose;
if (!i) {
list1.value[1].isChoose = c;
list1.value[4].isChoose = c;
list1.value[7].isChoose = c;
list1.value[10].isChoose = c;
} else if (i === 13) {
list1.value[14].isChoose = c;
list1.value[15].isChoose = c;
list1.value[16].isChoose = c;
list1.value[17].isChoose = c;
} else if (i === 18) {
list1.value[19].isChoose = c;
list1.value[20].isChoose = c;
list1.value[21].isChoose = c;
list1.value[22].isChoose = c;
list1.value[23].isChoose = c;
list1.value[24].isChoose = c;
list1.value[25].isChoose = c;
} else if (i === 26) {
list1.value[27].isChoose = c;
list1.value[28].isChoose = c;
list1.value[29].isChoose = c;
list1.value[30].isChoose = c;
list1.value[31].isChoose = c;
list1.value[32].isChoose = c;
} else if (i === 33) {
list1.value[34].isChoose = c;
list1.value[35].isChoose = c;
list1.value[36].isChoose = c;
list1.value[37].isChoose = c;
list1.value[38].isChoose = c;
} else if (i === 39) {
list1.value[40].isChoose = c;
list1.value[43].isChoose = c;
list1.value[46].isChoose = c;
} else if (i === 49) {
list1.value[50].isChoose = c;
list1.value[51].isChoose = c;
}
};
//
const submit = async () => {
if (!form.scoreCardName) return ElMessage.error('请输入评分卡名称');

@ -122,7 +122,7 @@ const addRecord = async () => {
const rule: Array<Record<string, any>> = [];
form.value.forEach((e, i) => {
e.coefficient && rule.push(handleId(e.answerId, e.subjectId, e.coefficient, `${preIds},${i > 9 ? '706,707' : '705,707'},${e.answerId}`, 3));
e.coefficient && rule.push(handleId(e.answerId, e.subjectId, e.coefficient, `${preIds},${i > 4 ? '706,708' : '705,707'},${e.answerId}`, 3));
});
await addOperation({

Loading…
Cancel
Save