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> <template>
<section class="p-3"> <section class="px-3">
<router-view v-slot="{ Component }"> <router-view v-slot="{ Component }">
<transition name="fade-transform" <transition name="fade-transform"
mode="out-in"> mode="out-in">

@ -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')"> @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="" />

@ -3,7 +3,7 @@
<app-header /> <app-header />
<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-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 }" :class="{ 'md:ml-sidebar': !hideNav }"
id="appMain"> id="appMain">
<app-main /> <app-main />

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

@ -71,6 +71,39 @@ body {
background: #d7d7d7; 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 { .c-table {
@apply rounded-[10px]; @apply rounded-[10px];
th.el-table__cell { th.el-table__cell {
@ -79,6 +112,9 @@ body {
th.el-table__cell > .cell { th.el-table__cell > .cell {
@apply text-[#006BFF]; @apply text-[#006BFF];
} }
.el-input__inner {
@apply px-2;
}
} }
.filter { .filter {
@apply inline-flex items-center; @apply inline-flex items-center;

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

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

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

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

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

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

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

@ -1,32 +1,28 @@
<template> <template>
<div class="block" <div class="block card-list flex py-0">
style="padding-top: 0"> <div class="left">
<div class="flex"> <ul class="products">
<div class="left w-[241px] min-w-[241px] pr-5 py-4"> <li v-for="(item, i) in list"
<ul class="products"> :key="i"
<li v-for="(item, i) in list" :class="{ active: item.id === id }"
:key="i" @click="switchProduct(item.id)">
:class="{ active: item.id === id }" <h6>{{ item.name }}</h6>
@click="switchProduct(item.id)"> <p class="meta">{{ item.remark }}</p>
<h6>{{ item.name }}</h6> </li>
<p class="type">{{ item.remark }}</p> </ul>
</li> </div>
</ul> <div class="right">
</div> <Com1 v-if="id == 1029" />
<div class="right flex-1 px-5 pt-4"> <Com2 v-else-if="id == 1030" />
<Com1 v-if="id == 1029" /> <Com3 v-else-if="id == 1031" />
<Com2 v-else-if="id == 1030" /> <Com4 v-else-if="id == 1032" />
<Com3 v-else-if="id == 1031" /> <Com5 v-else-if="id == 1033" />
<Com4 v-else-if="id == 1032" />
<Com5 v-else-if="id == 1033" />
</div>
</div> </div>
</div> </div>
</template> </template>
<script setup lang="ts"> <script setup lang="ts">
import { computed, onMounted, ref } from 'vue'; import { computed, onMounted, ref } from 'vue';
import type { TabsPaneContext } from 'element-plus';
import { getProcessInformationBasedOnRoles } from '@/api/judgment'; import { getProcessInformationBasedOnRoles } from '@/api/judgment';
import { useRouter, useRoute } from 'vue-router'; import { useRouter, useRoute } from 'vue-router';
import Cookies from 'js-cookie'; import Cookies from 'js-cookie';
@ -60,28 +56,9 @@ onMounted(() => {
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
.left { .card-list {
border-right: 1px solid #e9eff2; .left {
} @apply max-h-[calc(100vh-120px)];
.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];
} }
} }
</style> </style>

@ -1,7 +1,6 @@
<template> <template>
<div class="block flex" <div class="block card-list flex py-0">
style="padding-top: 0"> <div class="left">
<div class="left w-[241px] min-w-[241px] pr-5 py-4">
<div v-if="role == 41" <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" 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"> @click="toAdd">
@ -36,11 +35,11 @@
<h6>{{ item.productName }}</h6> <h6>{{ item.productName }}</h6>
<p class="type">{{ item.productNumber + ' ' + item.guarantyStyle }}</p> <p class="type">{{ item.productNumber + ' ' + item.guarantyStyle }}</p>
<p class="status">{{ getStatus(item.status) }}</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> </li>
</ul> </ul>
</div> </div>
<div class="right flex-1 px-5 pt-2"> <div class="right">
<!-- <component :is="currentSubApp" <!-- <component :is="currentSubApp"
@getList="getList"></component> --> @getList="getList"></component> -->
<config v-if="action === 'config'" <config v-if="action === 'config'"
@ -133,29 +132,9 @@ const handleDelete = async (id: number) => {
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
.left { .card-list {
border-right: 1px solid #e9eff2; .products {
} @apply max-h-[calc(100vh-200px)];
.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];
} }
} }
</style> </style>

@ -1,7 +1,6 @@
<template> <template>
<div class="block flex" <div class="block card-list flex py-0">
style="padding-top: 0"> <div class="left">
<div class="left w-[241px] min-w-[241px] pr-5 py-4">
<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" <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"> @click="toAdd">
<el-icon class="mr-1" <el-icon class="mr-1"
@ -34,11 +33,11 @@
<h6>{{ item.fundName }}</h6> <h6>{{ item.fundName }}</h6>
<p class="type">{{ item.fundraisingScale }}万募集规模</p> <p class="type">{{ item.fundraisingScale }}万募集规模</p>
<p class="type">买入费率{{ item.buying }}赎回费率{{ item.sale }}</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> </li>
</ul> </ul>
</div> </div>
<div class="right flex-1 px-5 pt-2"> <div class="right">
<detail v-if="action === 'detail'"></detail> <detail v-if="action === 'detail'"></detail>
<add v-else-if="action === 'add'" <add v-else-if="action === 'add'"
@getList="getList"></add> @getList="getList"></add>
@ -109,29 +108,9 @@ const handleDelete = async (id: number) => {
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
.left { .card-list {
border-right: 1px solid #e9eff2; .products {
} @apply max-h-[calc(100vh-200px)];
.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];
} }
} }
</style> </style>

@ -53,7 +53,7 @@
<div v-if="item.check"> <div v-if="item.check">
<el-input placeholder="请输入" <el-input placeholder="请输入"
v-model="item.sumInsured"> v-model="item.sumInsured">
<template #append></template> <template #append>{{ item.id === 764 || item.id === 765 ? '元' : '' }}</template>
</el-input> </el-input>
</div> </div>
</div> </div>
@ -64,7 +64,7 @@
<div> <div>
<el-input placeholder="请输入" <el-input placeholder="请输入"
v-model="form.premiumAmount"> v-model="form.premiumAmount">
<template #append></template> <template #append></template>
</el-input> </el-input>
</div> </div>
</el-form-item> </el-form-item>
@ -117,9 +117,7 @@ import { ElMessage } from 'element-plus';
import { insuranceProductDetails, addInsuranceProducts } from '@/api/insurance'; import { insuranceProductDetails, addInsuranceProducts } from '@/api/insurance';
import { getProcessInformationBasedOnRoles, addOperation } from '@/api/judgment'; import { getProcessInformationBasedOnRoles, addOperation } from '@/api/judgment';
import { useRouter, useRoute } from 'vue-router'; import { useRouter, useRoute } from 'vue-router';
import { handleId } from '@/utils/common'; import { handleId, isIllegalNum } from '@/utils/common';
import { getStatus } from '@/store/useProduct';
import Info from './Info.vue';
import Cookies from 'js-cookie'; import Cookies from 'js-cookie';
const emit = defineEmits(['getList']); const emit = defineEmits(['getList']);
@ -214,18 +212,43 @@ const submit = async () => {
const param = JSON.parse(JSON.stringify(form)); const param = JSON.parse(JSON.stringify(form));
if (!param.insuranceName) return ElMessage.error('请输入保险名称'); if (!param.insuranceName) return ElMessage.error('请输入保险名称');
param.insuranceDeadline = param.insuranceDeadline + param.insuranceDeadlineUnit;
config.value[form.insuranceType === 310 ? 0 : 1]?.recordChildren[2]?.recordChildren.map((e) => { if (param.insuranceType === 310) {
e.check && if (!param.minimumAge) return ElMessage.error('请输入最小年龄');
e.sumInsured && 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({ param.insuranceCoverageConfigList.push({
insuredLiabilityId: e.id, insuredLiabilityId: e.id,
sumInsured: +e.sumInsured, 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.applicationMaterial = param.applicationMaterial.join();
param.exemptionFromLiability = param.exemptionFromLiability.join(); param.exemptionFromLiability = param.exemptionFromLiability.join();
debugger;
await addInsuranceProducts(param); await addInsuranceProducts(param);
addRecord(param); addRecord(param);
ElMessage.success('提交成功!'); ElMessage.success('提交成功!');

@ -1,7 +1,6 @@
<template> <template>
<div class="block flex" <div class="block card-list flex py-0">
style="padding-top: 0"> <div class="left">
<div class="left w-[241px] min-w-[241px] pr-5 py-4">
<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" <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"> @click="toAdd">
<el-icon class="mr-1" <el-icon class="mr-1"
@ -35,12 +34,12 @@
<p v-if="item.minimumAge && item.maximumAge" <p v-if="item.minimumAge && item.maximumAge"
class="type">{{ item.minimumAge + '-' + item.maximumAge + '周岁' }}</p> class="type">{{ item.minimumAge + '-' + item.maximumAge + '周岁' }}</p>
<p v-if="item.insuranceCoverageConfig" <p v-if="item.insuranceCoverageConfig"
class="type">{{ item.insuranceCoverageConfig }}</p> class="type">{{ item.insuranceCoverageConfig }}万保额</p>
<p class="date">创建日期{{ item.createTime.split(' ')[0] }}</p> <p class="meta">创建日期{{ item.createTime.split(' ')[0] }}</p>
</li> </li>
</ul> </ul>
</div> </div>
<div class="right flex-1 px-5 pt-2"> <div class="right">
<detail v-if="action === 'detail'"></detail> <detail v-if="action === 'detail'"></detail>
<add v-else-if="action === 'add'" <add v-else-if="action === 'add'"
@getList="getList"></add> @getList="getList"></add>
@ -69,12 +68,12 @@ const list = ref<Array<any>>([]);
const loading = ref<boolean>(false); const loading = ref<boolean>(false);
const id = computed(() => +route.query.id); const id = computed(() => +route.query.id);
// //
const getList = async () => { const getList = async (first: any) => {
loading.value = true; loading.value = true;
try { try {
const { data } = await insuranceList({ pageNum: 1, pageSize: 1000, checkPointId: levelId, projectId, insuranceName: name }); const { data } = await insuranceList({ pageNum: 1, pageSize: 1000, checkPointId: levelId, projectId, insuranceName: name });
list.value = data.records; 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 { } finally {
loading.value = false; loading.value = false;
} }
@ -112,29 +111,9 @@ const handleDelete = async (insId: number) => {
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
.left { .card-list {
border-right: 1px solid #e9eff2; .products {
} @apply max-h-[calc(100vh-200px)];
.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];
} }
} }
</style> </style>

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

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

@ -1,23 +1,22 @@
<template> <template>
<div class="block" <div class="block card-list py-0">
style="padding-top: 0">
<el-tabs v-model="curTab" <el-tabs v-model="curTab"
@tab-click="tabChange"> @tab-click="tabChange">
<el-tab-pane label="额度模型" <el-tab-pane label="额度模型"
name="tab1"> name="tab1">
<div class="flex"> <div class="flex">
<div class="left w-[241px] min-w-[241px] pr-5 py-4"> <div class="left">
<ul class="products"> <ul class="products">
<li v-for="(item, i) in list[0]?.recordChildren" <li v-for="(item, i) in list[0]?.recordChildren"
:key="i" :key="i"
:class="{ active: item.id === id }" :class="{ active: item.id === id }"
@click="switchProduct(item.id)"> @click="switchProduct(item.id)">
<h6>{{ item.name }}</h6> <h6>{{ item.name }}</h6>
<p class="type">{{ item.remark }}</p> <p class="meta">{{ item.remark }}</p>
</li> </li>
</ul> </ul>
</div> </div>
<div class="right flex-1 px-5 pt-2"> <div class="right">
<Com1 v-if="id == 772" /> <Com1 v-if="id == 772" />
<Com2 v-else-if="id == 773" /> <Com2 v-else-if="id == 773" />
</div> </div>
@ -33,7 +32,7 @@
:class="{ active: item.id === id }" :class="{ active: item.id === id }"
@click="switchProduct(item.id)"> @click="switchProduct(item.id)">
<h6>{{ item.name }}</h6> <h6>{{ item.name }}</h6>
<p class="type">{{ item.remark }}</p> <p class="meta">{{ item.remark }}</p>
</li> </li>
</ul> </ul>
</div> </div>
@ -89,28 +88,12 @@ const tabChange = (tab: TabsPaneContext, event: Event) => {
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
.left { .card-list {
border-right: 1px solid #e9eff2; .products {
} @apply max-h-[calc(100vh-180px)];
.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 { .right {
@apply text-sm text-[#8798a9]; @apply max-h-[calc(100vh-150px)];
} }
} }
</style> </style>

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

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

@ -16,7 +16,7 @@
min-width="150"> min-width="150">
</el-table-column> </el-table-column>
<el-table-column label="进黑名单条件" <el-table-column label="进黑名单条件"
min-width="250"> width="540">
<template #default="{ row,$index }"> <template #default="{ row,$index }">
<div v-if="$index < 4" <div v-if="$index < 4"
class="flex items-center"> class="flex items-center">
@ -163,7 +163,7 @@ const projectId = +Cookies.get('sand-projectId');
const levelId = +Cookies.get('sand-level'); const levelId = +Cookies.get('sand-level');
const form = ref<Record<string, any>[]>([]); const form = ref<Record<string, any>[]>([]);
const info = 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 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>> = [ const symbols: Array<Record<string, any>> = [
{ {

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

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

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

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

@ -1,42 +1,48 @@
<template> <template>
<div class="block" <div class="block card-list py-0">
style="padding-top: 0">
<el-tabs v-model="curTab" <el-tabs v-model="curTab"
@tab-click="tabChange"> @tab-click="tabChange">
<el-tab-pane label="准入策略" <el-tab-pane label="准入策略"
name="tab1"> name="tab1">
<div class="flex"> <div class="flex">
<div class="left w-[241px] min-w-[241px] pr-5 py-4"> <div class="left">
<ul class="products"> <ul class="products">
<li v-for="(item, i) in list[0]?.recordChildren" <li v-for="(item, i) in list[0]?.recordChildren"
:key="i" :key="i"
:class="{ active: item.id === id }" :class="{ active: item.id === id }"
@click="switchProduct(item.id)"> @click="switchProduct(item.id)">
<h6>{{ item.name }}</h6> <h6>{{ item.name }}</h6>
<p class="type">{{ item.remark }}</p> <p class="meta">{{ item.remark }}</p>
</li> </li>
</ul> </ul>
</div> </div>
<div class="right flex-1 px-5 pt-2"> <div class="right">
<div v-show="id == 150"> <div v-show="id == 150"
class="c-auto">
<Com1 /> <Com1 />
</div> </div>
<div v-show="id == 151"> <div v-show="id == 151"
class="c-auto">
<Com2 /> <Com2 />
</div> </div>
<div v-show="id == 152"> <div v-show="id == 152"
class="c-auto">
<Com3 /> <Com3 />
</div> </div>
<div v-show="id == 153"> <div v-show="id == 153"
class="c-auto">
<Com4 /> <Com4 />
</div> </div>
<div v-show="id == 154"> <div v-show="id == 154"
class="c-auto">
<Com5 /> <Com5 />
</div> </div>
<div v-show="id == 155"> <div v-show="id == 155"
class="c-auto">
<Com6 /> <Com6 />
</div> </div>
<div v-show="id == 156"> <div v-show="id == 156"
class="c-auto">
<Com7 /> <Com7 />
</div> </div>
</div> </div>
@ -45,7 +51,7 @@
<el-tab-pane label="信用评分策略" <el-tab-pane label="信用评分策略"
name="tab2"> name="tab2">
<div class="flex"> <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" <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"> @click="toAdd">
<el-icon class="mr-1" <el-icon class="mr-1"
@ -55,7 +61,7 @@
</el-icon> </el-icon>
新增评分卡 新增评分卡
</div> </div>
<ul class="products"> <ul class="products max-h-[calc(100vh-225px)]">
<li v-for="(item, i) in list1" <li v-for="(item, i) in list1"
:key="i" :key="i"
:class="{ active: item.id === creditId }" :class="{ active: item.id === creditId }"
@ -70,11 +76,11 @@
</el-popconfirm> </el-popconfirm>
<h6>{{ item.scoreCardName }}</h6> <h6>{{ item.scoreCardName }}</h6>
<p class="type">{{ item.scoringObject ? '企业' : '个人' }}</p> <p class="type">{{ item.scoringObject ? '企业' : '个人' }}</p>
<p class="des">{{ item.description }}</p> <p class="meta">{{ item.description }}</p>
</li> </li>
</ul> </ul>
</div> </div>
<div class="right flex-1 px-5 pt-2"> <div class="right">
<Credit @getList="getList" /> <Credit @getList="getList" />
</div> </div>
</div> </div>
@ -82,18 +88,18 @@
<el-tab-pane label="风险度策略" <el-tab-pane label="风险度策略"
name="tab3"> name="tab3">
<div class="flex"> <div class="flex">
<div class="left w-[241px] min-w-[241px] pr-5 py-4"> <div class="left">
<ul class="products"> <ul class="products">
<li v-for="(item, i) in list2" <li v-for="(item, i) in list2"
:key="i" :key="i"
:class="{ active: item.id === riskId }" :class="{ active: item.id === riskId }"
@click="switchProductRisk(item.id)"> @click="switchProductRisk(item.id)">
<h6>{{ item.name }}</h6> <h6>{{ item.name }}</h6>
<p class="mt-2 des">{{ item.remark }}</p> <p class="meta">{{ item.remark }}</p>
</li> </li>
</ul> </ul>
</div> </div>
<div class="right flex-1 px-5 pt-2"> <div class="right">
<Risk1 v-if="riskId === 702" /> <Risk1 v-if="riskId === 702" />
<Risk2 v-else-if="riskId === 703" /> <Risk2 v-else-if="riskId === 703" />
<Risk3 v-else-if="riskId === 704" /> <Risk3 v-else-if="riskId === 704" />
@ -105,7 +111,7 @@
</template> </template>
<script setup lang="ts"> <script setup lang="ts">
import { computed, onMounted, ref } from 'vue'; import { computed, watch, onMounted, ref } from 'vue';
import type { TabsPaneContext } from 'element-plus'; import type { TabsPaneContext } from 'element-plus';
import { getProcessInformationBasedOnRoles } from '@/api/judgment'; import { getProcessInformationBasedOnRoles } from '@/api/judgment';
import { delCredit, listCredit } from '@/api/model'; import { delCredit, listCredit } from '@/api/model';
@ -153,6 +159,7 @@ 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') {
@ -191,28 +198,12 @@ const tabChange = (tab: TabsPaneContext, event: Event) => {
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
.left { .card-list {
border-right: 1px solid #e9eff2; .products {
} @apply max-h-[calc(100vh-180px)];
.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 { .right {
@apply text-sm text-[#8798a9]; @apply max-h-[calc(100vh-150px)];
} }
} }
</style> </style>

Loading…
Cancel
Save