yujialong 12 months ago
parent a9e14bda0b
commit c2fce16b83
  1. 4
      .env
  2. 6
      src/layout/components/AppSidebar/Menu.vue
  3. 2
      src/layout/index.vue
  4. 2
      src/styles/index.scss
  5. 8
      src/views/product/afterLoan/1030.vue
  6. 8
      src/views/product/afterLoan/1033.vue
  7. 19
      src/views/product/bank/Config.vue
  8. 1
      src/views/product/fund/Add.vue
  9. 9
      src/views/product/insurance/Add.vue
  10. 4
      src/views/product/strategy/150.vue
  11. 2
      src/views/product/strategy/151.vue
  12. 2
      src/views/product/strategy/152.vue
  13. 2
      src/views/product/strategy/153.vue
  14. 2
      src/views/product/strategy/154.vue
  15. 2
      src/views/product/strategy/155.vue
  16. 4
      src/views/product/strategy/156.vue
  17. 11
      src/views/product/strategy/CardList.vue
  18. 2
      src/views/product/strategy/Credit.vue

@ -2,7 +2,7 @@ VITE_APP_TITLE=金融产品设计及数字化营销沙盘
VITE_PORT=9520 VITE_PORT=9520
VITE_PROXY=http://192.168.31.125:8080 VITE_PROXY=http://192.168.31.125:8080
VITE_PUBLIC_PATH=./ VITE_PUBLIC_PATH=./
VITE_BASE_API=http://192.168.31.217:9000 # VITE_BASE_API=http://192.168.31.217:9000
# VITE_BASE_API=http://121.37.12.51 VITE_BASE_API=http://121.37.12.51
VITE_I18N_LOCALE=zh-cn VITE_I18N_LOCALE=zh-cn
VITE_I18N_FALLBACK_LOCALE=zh-cn VITE_I18N_FALLBACK_LOCALE=zh-cn

@ -36,7 +36,7 @@
<p class="text">产品风控配置</p> <p class="text">产品风控配置</p>
</li> </li>
<li :class="{ active: active == 2 }" <li :class="{ active: active == 2 }"
@click="toPage('/product/strategy?&i=2&role=42&id=150')"> @click="toPage('/product/strategy?i=2&role=42&id=150')">
<img class="icon" <img class="icon"
src="@/assets/images/icon2.png" src="@/assets/images/icon2.png"
alt="" /> alt="" />
@ -46,7 +46,7 @@
<p class="text">贷前准入模型</p> <p class="text">贷前准入模型</p>
</li> </li>
<li :class="{ active: active == 3 }" <li :class="{ active: active == 3 }"
@click="toPage('/product/interestRate/tab1?&i=3&role=42')"> @click="toPage('/product/interestRate/tab1?&i=3&role=42&id=772')">
<img class="icon" <img class="icon"
src="@/assets/images/icon3.png" src="@/assets/images/icon3.png"
alt="" /> alt="" />
@ -56,7 +56,7 @@
<p class="text">利率定价模型</p> <p class="text">利率定价模型</p>
</li> </li>
<li :class="{ active: active == 4 }" <li :class="{ active: active == 4 }"
@click="toPage('/product/afterLoan?&i=4&role=42')"> @click="toPage('/product/afterLoan?&i=4&role=42&id=1029')">
<img class="icon" <img class="icon"
src="@/assets/images/icon4.png" src="@/assets/images/icon4.png"
alt="" /> alt="" />

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

@ -81,7 +81,7 @@ body {
li { 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; @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 { &.active {
@apply border-[#CAE0FF]; @apply border-[#519aff];
} }
} }
.del { .del {

@ -8,7 +8,7 @@
border> border>
<el-table-column prop="name" <el-table-column prop="name"
label="选用" label="选用"
width="150" width="100"
align="center"> align="center">
<template #default="{ row }"> <template #default="{ row }">
<el-checkbox v-model="row.isChoose"></el-checkbox> <el-checkbox v-model="row.isChoose"></el-checkbox>
@ -23,7 +23,7 @@
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="检查对象" <el-table-column label="检查对象"
width="200" min-width="200"
align="center"> align="center">
<template #default="{ row }"> <template #default="{ row }">
<el-select v-model="row.checkObject"> <el-select v-model="row.checkObject">
@ -35,7 +35,7 @@
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="检查时间" <el-table-column label="检查时间"
width="270" min-width="270"
align="center"> align="center">
<template #default="{ row, $index }"> <template #default="{ row, $index }">
<span v-if="$index === 4">点击后触发</span> <span v-if="$index === 4">点击后触发</span>
@ -54,7 +54,7 @@
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="检查内容" <el-table-column label="检查内容"
width="230" min-width="230"
align="center"> align="center">
<template #default="{ row }"> <template #default="{ row }">
<el-checkbox v-model="row.governmentData">政务数据</el-checkbox> <el-checkbox v-model="row.governmentData">政务数据</el-checkbox>

@ -7,11 +7,11 @@
border> border>
<el-table-column prop="recordName" <el-table-column prop="recordName"
label="逾期时长" label="逾期时长"
min-width="150" width="150"
align="center"> align="center">
</el-table-column> </el-table-column>
<el-table-column label="选择催收方式" <el-table-column label="选择催收方式"
width="340" width="360"
align="center"> align="center">
<template #default="{ row }"> <template #default="{ row }">
<el-checkbox v-model="row.shortMessageCollection">短信催收</el-checkbox> <el-checkbox v-model="row.shortMessageCollection">短信催收</el-checkbox>
@ -20,10 +20,10 @@
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="短信/APP/自动外呼 话术" <el-table-column label="短信/APP/自动外呼 话术"
width="310" min-width="310"
align="center"> align="center">
<template #default="{ row }"> <template #default="{ row }">
<el-select class="" <el-select class="w-full"
v-model="row.verbalTrick"> v-model="row.verbalTrick">
<el-option v-for="item in row?.recordChildren[3].subject.itemList" <el-option v-for="item in row?.recordChildren[3].subject.itemList"
:key="item" :key="item"

@ -14,7 +14,8 @@
<h6 class="step-name mb-7">办理账户</h6> <h6 class="step-name mb-7">办理账户</h6>
<el-form-item label="提供材料" <el-form-item label="提供材料"
prop="accountMaterials"> prop="accountMaterials">
<el-checkbox-group v-model="form.accountMaterials"> <el-checkbox-group v-model="form.accountMaterials"
@change="denyAll('accountMaterials', 769)">
<el-checkbox v-for="(item, i) in config[0]?.recordChildren[0]?.subject?.itemList" <el-checkbox v-for="(item, i) in config[0]?.recordChildren[0]?.subject?.itemList"
:key="i" :key="i"
:label="item.itemId">{{ item.options }}</el-checkbox> :label="item.itemId">{{ item.options }}</el-checkbox>
@ -54,7 +55,8 @@
:value="item.itemId" /> :value="item.itemId" />
</el-select> </el-select>
</div> </div>
<el-checkbox-group v-model="form.borrowerMaterial"> <el-checkbox-group v-model="form.borrowerMaterial"
@change="denyAll('borrowerMaterial', 770)">
<el-checkbox v-for="(item, i) in config[1]?.recordChildren[1]?.recordChildren[0]?.subject?.itemList" <el-checkbox v-for="(item, i) in config[1]?.recordChildren[1]?.recordChildren[0]?.subject?.itemList"
:key="i" :key="i"
:label="item.itemId">{{ item.options }}</el-checkbox> :label="item.itemId">{{ item.options }}</el-checkbox>
@ -83,7 +85,8 @@
<template v-else> <template v-else>
<p class="field-name mt-5">配偶材料</p> <p class="field-name mt-5">配偶材料</p>
<div> <div>
<el-checkbox-group v-model="form.mateMaterial"> <el-checkbox-group v-model="form.mateMaterial"
@change="denyAll('mateMaterial', 350)">
<el-checkbox v-for="(item, i) in config[1]?.recordChildren[2]?.subject?.itemList" <el-checkbox v-for="(item, i) in config[1]?.recordChildren[2]?.subject?.itemList"
:key="i" :key="i"
:label="item.itemId">{{ item.options }}</el-checkbox> :label="item.itemId">{{ item.options }}</el-checkbox>
@ -91,7 +94,8 @@
</div> </div>
<p class="field-name mt-5">经营类材料</p> <p class="field-name mt-5">经营类材料</p>
<div> <div>
<el-checkbox-group v-model="form.businessMaterials"> <el-checkbox-group v-model="form.businessMaterials"
@change="denyAll('businessMaterials', 351)">
<el-checkbox v-for="(item, i) in config[1]?.recordChildren[3]?.subject?.itemList" <el-checkbox v-for="(item, i) in config[1]?.recordChildren[3]?.subject?.itemList"
:key="i" :key="i"
:label="item.itemId">{{ item.options }}</el-checkbox> :label="item.itemId">{{ item.options }}</el-checkbox>
@ -100,7 +104,8 @@
</template> </template>
<p class="field-name mt-5">补充材料</p> <p class="field-name mt-5">补充材料</p>
<div> <div>
<el-checkbox-group v-model="form.supplementaryMaterials"> <el-checkbox-group v-model="form.supplementaryMaterials"
@change="denyAll('supplementaryMaterials', 352)">
<el-checkbox v-for="(item, i) in config[1]?.recordChildren[4]?.subject?.itemList" <el-checkbox v-for="(item, i) in config[1]?.recordChildren[4]?.subject?.itemList"
:key="i" :key="i"
:label="item.itemId">{{ item.options }}</el-checkbox> :label="item.itemId">{{ item.options }}</el-checkbox>
@ -459,6 +464,10 @@ const getDetail = async () => {
} }
} }
}; };
// ()
const denyAll = (field: string, denyId: number) => {
if (form[field].includes(denyId)) form[field] = [denyId];
};
watch( watch(
() => route.query, () => route.query,
() => { () => {

@ -520,6 +520,7 @@ const submit = async () => {
if (isIllegalNum(param.fundraisingScale)) return ElMessage.error('请输入合理的募集规模'); if (isIllegalNum(param.fundraisingScale)) return ElMessage.error('请输入合理的募集规模');
if (!param.modeOfOperation) return ElMessage.error('请选择运作方式'); if (!param.modeOfOperation) return ElMessage.error('请选择运作方式');
if (!param.shareholdingAllocationsList.length || !param.shareholdingAllocationsList.filter((e) => e.stockCode).length) return ElMessage.error('请配置持股'); if (!param.shareholdingAllocationsList.length || !param.shareholdingAllocationsList.filter((e) => e.stockCode).length) return ElMessage.error('请配置持股');
if (param.shareholdingAllocationsList.find((e) => isIllegalNum(e.proportion))) return ElMessage.error('持股比重请输入数字');
if (!param.buyingDuration || !param.sellingTime) return ElMessage.error('请输入份额时长'); if (!param.buyingDuration || !param.sellingTime) return ElMessage.error('请输入份额时长');
if (isIllegalNum(param.buyingDuration) || isIllegalNum(param.sellingTime)) return ElMessage.error('请输入合理的份额时长'); if (isIllegalNum(param.buyingDuration) || isIllegalNum(param.sellingTime)) return ElMessage.error('请输入合理的份额时长');

@ -173,14 +173,15 @@ watch(
); );
// //
const addRecord = async (data: Record<string, any>) => { const addRecord = async (data: Record<string, any>) => {
const preIds = `1,${Cookies.get('sand-level')},275,${data.insuranceType === 310 ? 276 : 277}`; // 1id const isAcci = data.insuranceType === 310; //
const preIds = `1,${Cookies.get('sand-level')},275,${isAcci ? 276 : 277}`; // 1id
const rule: Array<Record<string, any>> = [handleId(278, 118, data.insuranceName, preIds + ',278', 3), handleId(279, 119, data.insuranceType, preIds + ',279', 1)]; const rule: Array<Record<string, any>> = [handleId(278, 118, data.insuranceName, preIds + ',278', 3), handleId(279, 119, data.insuranceType, preIds + ',279', 1)];
data.minimumAge && rule.push(handleId(680, 219, data.minimumAge, preIds + ',678,680', 3)); data.minimumAge && rule.push(handleId(680, 219, data.minimumAge, preIds + ',678,680', 3));
data.maximumAge && rule.push(handleId(679, 218, data.maximumAge, preIds + ',678,679', 3)); data.maximumAge && rule.push(handleId(679, 218, data.maximumAge, preIds + ',678,679', 3));
// //
config.value[form.insuranceType === 310 ? 0 : 1]?.recordChildren[2]?.recordChildren?.map((e) => { config.value[form.insuranceType === 310 ? 0 : 1]?.recordChildren[2]?.recordChildren?.map((e) => {
rule.push(handleId(766, 140, e.check ? 345 : 346, `${preIds},280,${e.id},766`, 1)); rule.push(handleId(isAcci ? 766 : 768, 140, e.check ? 345 : 346, `${preIds},${isAcci ? 280 : 288},${e.id},${isAcci ? 766 : 768}`, 1));
e.check && e.sumInsured && rule.push(handleId(767, 234, e.sumInsured, `${preIds},280,${e.id},767`, 3)); e.check && e.sumInsured && rule.push(handleId(isAcci ? 767 : 769, 234, e.sumInsured, `${preIds},${isAcci ? 280 : 288},${e.id},${isAcci ? 767 : 769}`, 3));
}); });
data.premiumAmount && rule.push(handleId(296, 134, data.premiumAmount, preIds + ',296', 3)); data.premiumAmount && rule.push(handleId(296, 134, data.premiumAmount, preIds + ',296', 3));
data.formOfPayment && rule.push(handleId(297, 135, data.formOfPayment, preIds + ',297', 1)); data.formOfPayment && rule.push(handleId(297, 135, data.formOfPayment, preIds + ',297', 1));
@ -196,7 +197,7 @@ const addRecord = async (data: Record<string, any>) => {
1, 1,
), ),
); );
data.applicationMaterial && rule.push(handleId(299, 137, data.applicationMaterial, preIds + ',299', 1)); data.applicationMaterial && rule.push(handleId(isAcci ? 299 : 300, isAcci ? 137 : 138, data.applicationMaterial, `${preIds},${isAcci ? 299 : 300}`, 1));
data.exemptionFromLiability && rule.push(handleId(301, 139, data.exemptionFromLiability, preIds + ',301', 1)); data.exemptionFromLiability && rule.push(handleId(301, 139, data.exemptionFromLiability, preIds + ',301', 1));
await addOperation({ await addOperation({

@ -215,7 +215,7 @@ const getDetail = async () => {
watch( watch(
() => route.query, () => route.query,
() => { () => {
getDetail(); route.query.id === '150' && getDetail();
}, },
{ {
immediate: true, immediate: true,
@ -234,7 +234,7 @@ interface SpanMethodProps {
} }
// //
const span = ({ row, column, rowIndex, columnIndex }: SpanMethodProps) => { const span = ({ row, column, rowIndex, columnIndex }: SpanMethodProps) => {
if (columnIndex === 0 || columnIndex === 2 || columnIndex === 3 || columnIndex === 4 || columnIndex === 5 || columnIndex === 6) { if (columnIndex === 0 || columnIndex === 2 || columnIndex === 3 || columnIndex === 4 || columnIndex === 5 || columnIndex === 6 || columnIndex === 7) {
if (rowIndex === 4 || rowIndex === 6 || rowIndex === 8) { if (rowIndex === 4 || rowIndex === 6 || rowIndex === 8) {
return { return {
rowspan: 2, rowspan: 2,

@ -168,7 +168,7 @@ const getDetail = async () => {
watch( watch(
() => route.query, () => route.query,
() => { () => {
getDetail(); route.query.id === '151' && getDetail();
}, },
{ {
immediate: true, immediate: true,

@ -322,7 +322,7 @@ const getDetail = async () => {
watch( watch(
() => route.query, () => route.query,
() => { () => {
getDetail(); route.query.id === '152' && getDetail();
}, },
{ {
immediate: true, immediate: true,

@ -175,7 +175,7 @@ const getDetail = async () => {
watch( watch(
() => route.query, () => route.query,
() => { () => {
getDetail(); route.query.id === '153' && getDetail();
}, },
{ {
immediate: true, immediate: true,

@ -315,7 +315,7 @@ const getDetail = async () => {
watch( watch(
() => route.query, () => route.query,
() => { () => {
getDetail(); route.query.id === '154' && getDetail();
}, },
{ {
immediate: true, immediate: true,

@ -254,7 +254,7 @@ const getDetail = async () => {
watch( watch(
() => route.query, () => route.query,
() => { () => {
getDetail(); route.query.id === '155' && getDetail();
}, },
{ {
immediate: true, immediate: true,

@ -23,7 +23,7 @@
<el-table-column label="本人工作单位" <el-table-column label="本人工作单位"
min-width="150" min-width="150"
align="center"> align="center">
<template #default="{ row, $index }"> <template #default="{ row }">
<el-checkbox v-model="row.myselfWorkplace"></el-checkbox> <el-checkbox v-model="row.myselfWorkplace"></el-checkbox>
</template> </template>
</el-table-column> </el-table-column>
@ -124,7 +124,7 @@ const getDetail = async () => {
watch( watch(
() => route.query, () => route.query,
() => { () => {
getDetail(); route.query.id === '156' && getDetail();
}, },
{ {
immediate: true, immediate: true,

@ -144,11 +144,11 @@ const riskId = ref<number>(702);
// //
const switchProduct = (id: number) => { const switchProduct = (id: number) => {
router.push(`/product/strategy?&i=${route.query.i}&role=${route.query.role}&id=${id}`); router.push(`/product/strategy?i=${route.query.i}&role=${route.query.role}&id=${id}`);
}; };
// //
const switchProductCredit = (id: number) => { const switchProductCredit = (id?: number) => {
router.push(`/product/strategy?&i=${route.query.i}&role=${route.query.role}&creditId=${id}`); router.push(`/product/strategy?i=${route.query.i}&role=${route.query.role}&creditId=${id}`);
}; };
// //
const switchProductRisk = (id: number) => { const switchProductRisk = (id: number) => {
@ -159,7 +159,6 @@ const getList = async (refresh?: number) => {
if (curTab.value === 'tab1') { if (curTab.value === 'tab1') {
const { process } = await getProcessInformationBasedOnRoles(67); const { process } = await getProcessInformationBasedOnRoles(67);
// eslint-disable-next-line no-unused-expressions // 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); !id.value && switchProduct(process[0].recordChildren[0].id);
list.value = process; list.value = process;
} else if (curTab.value === 'tab2') { } else if (curTab.value === 'tab2') {
@ -170,7 +169,7 @@ const getList = async (refresh?: number) => {
pageSize: 50, pageSize: 50,
}); });
// eslint-disable-next-line no-unused-expressions // eslint-disable-next-line no-unused-expressions
((!route.query.add && !creditId.value && res.data.length) || refresh) && switchProductCredit(res.data[0].id); res.data.length ? ((!route.query.add && !creditId.value) || refresh) && switchProductCredit(res.data[0].id) : toAdd();
list1.value = res.data; list1.value = res.data;
} else { } else {
const { process } = await getProcessInformationBasedOnRoles(149); const { process } = await getProcessInformationBasedOnRoles(149);
@ -189,7 +188,7 @@ const handleDelete = async (id: number) => {
// //
const toAdd = () => { const toAdd = () => {
router.push(`/product/strategy?type=${route.query.type}&i=${route.query.i}&role=${route.query.role}&add=1`); router.push(`/product/strategy?i=${route.query.i}&role=${route.query.role}&add=1`);
}; };
// tab // tab
const tabChange = (tab: TabsPaneContext, event: Event) => { const tabChange = (tab: TabsPaneContext, event: Event) => {

@ -122,7 +122,7 @@
border> border>
<el-table-column prop="name" <el-table-column prop="name"
label="选用" label="选用"
min-width="150" width="100"
align="center"> align="center">
<template #default="{ row }"> <template #default="{ row }">
<el-checkbox v-model="row.isChoose"></el-checkbox> <el-checkbox v-model="row.isChoose"></el-checkbox>

Loading…
Cancel
Save