金融市场配置等

V0.1
yujialong 1 year ago
parent a9d1f93311
commit 06a6fae1a8
  1. 2
      src/api/config.ts
  2. BIN
      src/assets/images/icon8-1.png
  3. 12
      src/layout/components/AppHeader.vue
  4. 55
      src/layout/components/AppSidebar/Menu.vue
  5. 4
      src/layout/index.vue
  6. 286
      src/views/config/Buyer.vue
  7. 140
      src/views/config/Financial.vue
  8. 16
      src/views/config/Index.vue
  9. 2
      src/views/product/bank/Add.vue
  10. 2
      src/views/product/bank/CardList.vue
  11. 4
      src/views/product/strategy/150.vue
  12. 4
      src/views/product/strategy/151.vue
  13. 3
      src/views/product/strategy/CardList.vue

@ -6,3 +6,5 @@ export const ages = async (): Promise<any> => (await axios.post('/product/ages/l
export const edu = async (): Promise<any> => (await axios.post('/product/edu/list')).data; export const edu = async (): Promise<any> => (await axios.post('/product/edu/list')).data;
export const accountType = async (): Promise<any> => (await axios.post('/product/accountType/list')).data; export const accountType = async (): Promise<any> => (await axios.post('/product/accountType/list')).data;
export const buyerType = async (): Promise<any> => (await axios.post('/product/buyerType/list')).data; export const buyerType = async (): Promise<any> => (await axios.post('/product/buyerType/list')).data;
export const financialMarketFind = async (): Promise<any> => (await axios.post('/product/financialMarket/details')).data;
export const financialMarketSave = async (data: Record<string, any>): Promise<any> => (await axios.post('/product/financialMarket/saveOrUpdate', data)).data;

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 KiB

@ -1,5 +1,5 @@
<template> <template>
<div class="flex justify-between items-center w-full py-6 px-5 overflow-hidden bg-transparent"> <div class="width-[100%] flex justify-between items-center w-full py-6 px-5 overflow-hidden bg-transparent">
<logo :collapse="collapse" /> <logo :collapse="collapse" />
<div class="inline-flex items-center"> <div class="inline-flex items-center">
<el-tooltip effect="light" <el-tooltip effect="light"
@ -39,16 +39,8 @@ import Logo from './Logo.vue';
const router = useRouter(); const router = useRouter();
const switchRole = (type: number) => {
router.push(`/product?type=0&i=1&role=${type}`);
};
onMounted(() => {}); onMounted(() => {});
const handleLogout = () => {
logout();
// router.push(`/login?redirect=${route.fullPath}`);
window.location.reload();
};
// //
const toLevel = () => { const toLevel = () => {
router.push('/'); router.push('/');
@ -57,8 +49,6 @@ const toLevel = () => {
const toRole = () => { const toRole = () => {
router.push(`/role?levelId=${Cookies.get('sand-level')}`); router.push(`/role?levelId=${Cookies.get('sand-level')}`);
}; };
const passwordFormVisible = ref<boolean>(false);
</script> </script>
<style lang="scss" scoped></style> <style lang="scss" scoped></style>

@ -2,7 +2,7 @@
<ul class="switch px-7 mt-5"> <ul class="switch px-7 mt-5">
<template v-if="role == 41"> <template v-if="role == 41">
<li :class="{ active: active == 1 }" <li :class="{ active: active == 1 }"
@click="toPage('/product?type=0&i=1')"> @click="toPage('/product?type=0&i=1&role=41')">
<img class="icon" <img class="icon"
src="@/assets/images/icon5.png" src="@/assets/images/icon5.png"
alt="" /> alt="" />
@ -12,7 +12,7 @@
<p class="text">个人产品</p> <p class="text">个人产品</p>
</li> </li>
<li :class="{ active: active == 2 }" <li :class="{ active: active == 2 }"
@click="toPage('/product?type=1&i=2')"> @click="toPage('/product?type=1&i=2&role=41')">
<img class="icon" <img class="icon"
src="@/assets/images/icon6.png" src="@/assets/images/icon6.png"
alt="" /> alt="" />
@ -24,7 +24,7 @@
</template> </template>
<template v-else-if="role == 42"> <template v-else-if="role == 42">
<li :class="{ active: active == 1 }" <li :class="{ active: active == 1 }"
@click="toPage('/product/strategy/config?type=&i=1&role=42')"> @click="toPage('/product?type=&i=1&role=42')">
<img class="icon" <img class="icon"
src="@/assets/images/icon1.png" src="@/assets/images/icon1.png"
alt="" /> alt="" />
@ -62,67 +62,36 @@
<p class="text">贷后管理模型</p> <p class="text">贷后管理模型</p>
</li> </li>
</template> </template>
<li v-else <li v-else-if="role == 43"
class="active"> class="active">
<img class="icon"
src="@/assets/images/icon6.png"
alt="" />
<img class="icon-1" <img class="icon-1"
src="@/assets/images/icon7-1.png" src="@/assets/images/icon7-1.png"
alt="" /> alt="" />
<p class="text">审批产品</p> <p class="text">审批产品</p>
</li> </li>
<li v-else
class="active">
<img class="icon-1"
src="@/assets/images/icon8-1.png"
alt="" />
<p class="text">参数配置</p>
</li>
</ul> </ul>
</template> </template>
<script setup lang="ts"> <script setup lang="ts">
import { computed, ref, toRefs } from 'vue'; import { computed, ref, toRefs } from 'vue';
import { useRouter, useRoute } from 'vue-router'; import { useRouter, useRoute } from 'vue-router';
import { isShowMenu } from '@/store/useCurrentUser';
const router = useRouter(); const router = useRouter();
const route = useRoute(); const route = useRoute();
const active = computed(() => route.query.i); const active = computed(() => route.query.i);
const role = computed(() => route.query.role || 41); const role = computed(() => route.query.role);
// //
const toPage = (path: string) => { const toPage = (path: string) => {
router.push(path); router.push(path);
}; };
function isExternal(path: string): boolean {
return /^(https?:|mailto:|tel:)/.test(path);
}
// const props = defineProps({ route: { type: Object, required: true }, basePath: { type: String, default: '' } });
// const { route, basePath } = toRefs(props);
// const router = useRouter();
// //
// const isShow = computed(() => !route.value.meta?.hidden);
// //
// const subMenu = computed(() => route.value.meta?.title && route.value.children);
// // title
// const targetRoute = computed(() => (!route.value.meta?.title && route.value.children?.length > 0 ? route.value.children[0] : route.value));
// const icon = computed(() => targetRoute.value.meta?.icon);
// const title = computed(() => targetRoute.value.meta?.title);
// // targetItem使使basePath
// const path = computed(() => (route.value !== targetRoute.value ? targetRoute.value.path : ''));
// const resolvePath = (routePath: string) => {
// if (isExternal(routePath)) {
// return routePath;
// }
// return `${basePath.value}/${routePath}`;
// };
// const handleClick = () => {
// const fullPath = resolvePath(path.value);
// if (isExternal(fullPath)) {
// window.open(fullPath, '_blank');
// } else {
// router.push(resolvePath(path.value));
// }
// };
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>

@ -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 min-h-[calc(100vh-85px)] transition-margin duration-300 overflow-auto" <div class="main h-[calc(100vh-95px)] transition-margin duration-300 overflow-auto"
:class="{ 'md:ml-sidebar': !hideNav }"> :class="{ 'md:ml-sidebar': !hideNav }">
<app-main /> <app-main />
</div> </div>
@ -11,7 +11,7 @@
</template> </template>
<script lang="ts"> <script lang="ts">
import { ref, defineComponent, computed, watch } from 'vue'; import { defineComponent, computed } from 'vue';
import { useRoute } from 'vue-router'; import { useRoute } from 'vue-router';
import Setting from '@/settings'; import Setting from '@/settings';
import { AppSidebar, AppHeader, AppMain } from './components'; import { AppSidebar, AppHeader, AppMain } from './components';

@ -1,150 +1,152 @@
<template> <template>
<h6 class="title">城市人口及年龄参数</h6> <div class="max-h-[calc(100vh-280px)] overflow-auto">
<el-table class="c-table" <h6 class="title">城市人口及年龄参数</h6>
:data="form.ageAduRatioList" <el-table class="c-table"
:span-method="ageSpan" :data="form.ageAduRatioList"
border> :span-method="ageSpan"
<el-table-column prop="productName" border>
label="城市总人口 (人)" <el-table-column prop="productName"
align="center"> label="城市总人口 (人)"
<template #default="{ row }"> align="center">
<el-input v-model.number="row.totalPopulation" <template #default="{ row }">
placeholder="请输入" <el-input v-model.number="row.totalPopulation"
type="number" placeholder="请输入"
min="0"></el-input> type="number"
</template> min="0"></el-input>
</el-table-column> </template>
<el-table-column prop="ageStage" </el-table-column>
label="年龄 (岁)" <el-table-column prop="ageStage"
align="center"></el-table-column> label="年龄 (岁)"
<el-table-column prop="ageRatio" align="center"></el-table-column>
label="年龄占比 (%)" <el-table-column prop="ageRatio"
align="center"> label="年龄占比 (%)"
<template #default="{ row }"> align="center">
<el-input v-model="row.ageRatio" <template #default="{ row }">
placeholder="请输入"></el-input> <el-input v-model="row.ageRatio"
</template> placeholder="请输入"></el-input>
</el-table-column> </template>
</el-table> </el-table-column>
</el-table>
<h6 class="title mt-7">学历参数</h6> <h6 class="title mt-7">学历参数</h6>
<el-table class="c-table" <el-table class="c-table"
:data="edus" :data="edus"
:span-method="eduSpan" :span-method="eduSpan"
border> border>
<el-table-column prop="ageStage" <el-table-column prop="ageStage"
label="年龄 (岁)" label="年龄 (岁)"
align="center"> </el-table-column> align="center"> </el-table-column>
<el-table-column prop="education" <el-table-column prop="education"
label="学历" label="学历"
align="center"></el-table-column> align="center"></el-table-column>
<el-table-column prop="parentIds" <el-table-column prop="parentIds"
label="学历占比 (%)" label="学历占比 (%)"
align="center"> align="center">
<template #default="{ row }"> <template #default="{ row }">
<el-input v-model="row.eduRatio" <el-input v-model="row.eduRatio"
placeholder="请输入"></el-input> placeholder="请输入"></el-input>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
<h6 class="title mt-7">企业数量配置</h6> <h6 class="title mt-7">企业数量配置</h6>
<el-table class="c-table" <el-table class="c-table"
:data="form.enterpriseNumList" :data="form.enterpriseNumList"
border> border>
<el-table-column prop="productName" <el-table-column prop="productName"
label="企业类型" label="企业类型"
align="center"> align="center">
<template #default="{ row }"> <template #default="{ row }">
{{ row.enterpriseType == 1 ? '小微企业' : '创业企业' }} {{ row.enterpriseType == 1 ? '小微企业' : '创业企业' }}
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="parentIds" <el-table-column prop="parentIds"
label="企业数量(家)" label="企业数量(家)"
align="center"> align="center">
<template #default="{ row }"> <template #default="{ row }">
<el-input v-model.number="row.number" <el-input v-model.number="row.number"
placeholder="请输入" placeholder="请输入"
maxlength="3" maxlength="3"
type="number" type="number"
min="0"></el-input> min="0"></el-input>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
<h6 class="title mt-7">单个商品每日需求量</h6> <h6 class="title mt-7">单个商品每日需求量</h6>
<el-table class="c-table" <el-table class="c-table"
:data="form.commodityDemandList" :data="form.commodityDemandList"
border> border>
<el-table-column prop="typeName" <el-table-column prop="typeName"
label="买家类型" label="买家类型"
min-width="100" min-width="100"
align="center"> </el-table-column> align="center"> </el-table-column>
<el-table-column prop="parentIds" <el-table-column prop="parentIds"
label="买家总占比 (%)" label="买家总占比 (%)"
min-width="100" min-width="100"
align="center"> align="center">
<template #default="{ row }"> <template #default="{ row }">
<el-input v-model="row.buyerRatio" <el-input v-model="row.buyerRatio"
placeholder="请输入"></el-input> placeholder="请输入"></el-input>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="parentIds" <el-table-column prop="parentIds"
label="每次需求人数占比 (%)" label="每次需求人数占比 (%)"
min-width="130" min-width="130"
align="center"> align="center">
<template #default="{ row }"> <template #default="{ row }">
<el-input v-model="row.peopleNumRatio" <el-input v-model="row.peopleNumRatio"
placeholder="请输入"></el-input> placeholder="请输入"></el-input>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="parentIds" <el-table-column prop="parentIds"
label="单个买家单次需求" label="单个买家单次需求"
min-width="200" min-width="200"
align="center"> align="center">
<template #default="{ row }"> <template #default="{ row }">
<div class="flex items-center"> <div class="flex items-center">
<template v-if="row.typeId == 7 || row.typeId == 8"> <template v-if="row.typeId == 7 || row.typeId == 8">
<span class="mr-2 whitespace-nowrap">一个保险产品一次最多购买</span> <span class="mr-2 whitespace-nowrap">一个保险产品一次最多购买</span>
<el-input v-model="row.buyerSingleDemand" <el-input v-model="row.buyerSingleDemand"
placeholder="请输入"></el-input> placeholder="请输入"></el-input>
<span class="ml-2"></span> <span class="ml-2"></span>
</template> </template>
<template v-else> <template v-else>
<span class="mr-2 whitespace-nowrap">{{ row.typeId == 9 ? '投入' : '贷款' }}</span> <span class="mr-2 whitespace-nowrap">{{ row.typeId == 9 ? '投入' : '贷款' }}</span>
<el-input v-model="row.buyerSingleDemandMin" <el-input v-model="row.buyerSingleDemandMin"
placeholder="请输入"></el-input> placeholder="请输入"></el-input>
<span class="mx-2">~</span> <span class="mx-2">~</span>
<el-input v-model="row.buyerSingleDemandMax" <el-input v-model="row.buyerSingleDemandMax"
placeholder="请输入"></el-input> placeholder="请输入"></el-input>
<span class="ml-2 whitespace-nowrap">万元</span> <span class="ml-2 whitespace-nowrap">万元</span>
</template> </template>
</div> </div>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
<h6 class="title mt-7">系统账户起始金额</h6> <h6 class="title mt-7">系统账户起始金额</h6>
<el-form v-if="form.moneyAllocationList.length" <el-form v-if="form.moneyAllocationList.length"
class="w-[300px]" class="w-[300px]"
label-width="120px" label-width="120px"
label-suffix=":"> label-suffix=":">
<el-form-item label="银行账户"> <el-form-item label="银行账户">
<el-input v-model="form.moneyAllocationList[0].startingAmount"> <el-input v-model="form.moneyAllocationList[0].startingAmount">
<template #suffix> 万元 </template> <template #suffix> 万元 </template>
</el-input> </el-input>
</el-form-item> </el-form-item>
<el-form-item label="保险账户"> <el-form-item label="保险账户">
<el-input v-model="form.moneyAllocationList[1].startingAmount"> <el-input v-model="form.moneyAllocationList[1].startingAmount">
<template #suffix> 万元 </template> <template #suffix> 万元 </template>
</el-input> </el-input>
</el-form-item> </el-form-item>
<el-form-item label="基金账户"> <el-form-item label="基金账户">
<el-input v-model="form.moneyAllocationList[2].startingAmount"> <el-input v-model="form.moneyAllocationList[2].startingAmount">
<template #suffix> 万元 </template> <template #suffix> 万元 </template>
</el-input> </el-input>
</el-form-item> </el-form-item>
</el-form> </el-form>
</div>
<div class="flex justify-end"> <div class="flex justify-end">
<div class="submit" <div class="submit"

@ -0,0 +1,140 @@
<template>
<div class="max-h-[calc(100vh-280px)] overflow-auto">
<el-form ref="formRef"
label-width="100px"
label-suffix=":"
class="form"
status-icon>
<h6 class="title">单个银行账户</h6>
<el-form-item label="收益计算">
<div>
<p class="text leading-[32px] ">收入 = 收回的本金 + 利息</p>
<p class="text leading-[32px] ">成本 = 贷出去未收回的本金 + 购买渠道金额</p>
<p class="text leading-[32px] ">收益 = 收入 - 成本</p>
</div>
</el-form-item>
<el-form-item label="银行资产">
<div class="flex-1">
<div class="flex items-center">
<span class="text">起始金额</span>
<el-input class="w-[140px] mx-2"
v-model="form[0].startingAmount"></el-input>
<span class="text">万元</span>
</div>
<p class="text mt-4">银行账户金额 = 起始金额 + 累计收益</p>
</div>
</el-form-item>
<h6 class="title">单个保险账户</h6>
<el-form-item label="收益计算">
<div>
<p class="text leading-[32px] ">收入 = 收到的保费</p>
<p class="text leading-[32px] ">成本 = 赔偿金 + 购买渠道金额</p>
<p class="text leading-[32px] ">收益 = 收入 - 成本</p>
</div>
</el-form-item>
<el-form-item label="保险资产">
<div class="flex-1">
<div class="flex items-center">
<span class="text">起始金额</span>
<el-input class="w-[140px] mx-2"
v-model="form[1].startingAmount"></el-input>
<span class="text">万元</span>
</div>
<p class="text mt-4">保险账户金额 = 起始金额 + 累计收益</p>
</div>
</el-form-item>
<h6 class="title">单个基金账户</h6>
<el-form-item label="冻结账户">
<div>
<p class="text leading-[32px] ">冻结账户金额 = 申购金额 + 赎回金额</p>
<p class="text leading-[32px] ">基金申购以及赎回确认份额期间</p>
</div>
</el-form-item>
<el-form-item label="收益计算">
<div>
<p class="text leading-[32px] ">收入 = 申购费用 + 管理费用 + 托管费用 + 销售服务费用 + 赎回费用</p>
<p class="text leading-[32px] ">成本 = 购买渠道金额</p>
<p class="text leading-[32px] ">收益 = 申购费用 + 管理费用 + 托管费用 + 销售服务费用 + 赎回费用</p>
</div>
</el-form-item>
<el-form-item label="基金资产:">
<div class="flex-1">
<div class="flex items-center">
<span class="text">起始金额</span>
<el-input class="w-[140px] mx-2"
v-model="form[2].startingAmount"></el-input>
<span class="text">万元</span>
</div>
<p class="text mt-4">基金账户金额 = 所有基金资产净值+起始金额 + 累计收益 - 购买渠道金额</p>
</div>
</el-form-item>
</el-form>
</div>
<div class="flex justify-end">
<div class="submit"
@click="submit">保存修改</div>
</div>
</template>
<script setup lang="ts">
import { ref, onMounted } from 'vue';
import { ElMessage } from 'element-plus';
import { financialMarketFind, financialMarketSave } from '@/api/config';
const form = ref<Record<string, any>[]>([
{
accountTypeId: 1,
distinguish: 2,
startingAmount: '',
},
{
accountTypeId: 2,
distinguish: 2,
startingAmount: '',
},
{
accountTypeId: 3,
distinguish: 2,
startingAmount: '',
},
]);
const getInfo = async () => {
const { data } = await financialMarketFind();
// res1.list.map((e) => {
// e.startingAmount = '';
// });
if (data.length) form.value = data;
};
const submit = async () => {
if (form.value[0].startingAmount === '' || isNaN(form.value[0].startingAmount)) return ElMessage.error('请输入合理的银行起始金额');
if (form.value[1].startingAmount === '' || isNaN(form.value[1].startingAmount)) return ElMessage.error('请输入合理的保险起始金额');
if (form.value[2].startingAmount === '' || isNaN(form.value[2].startingAmount)) return ElMessage.error('请输入合理的基金起始金额');
await financialMarketSave({ moneyAllocationList: form.value });
ElMessage.success('保存成功!');
getInfo();
};
onMounted(() => {
getInfo();
});
</script>
<style lang="scss" scoped>
@import url(../../styles/form.scss);
.title {
@apply flex items-center mb-5 text-base text-[#222D42] font-semibold;
&:before {
content: '';
@apply w-1 h-4 mr-2 bg-[#006BFF] rounded-sm;
}
}
.text {
@apply whitespace-nowrap text-sm text-[#333];
}
</style>

@ -4,10 +4,12 @@
@tab-click="tabChange"> @tab-click="tabChange">
<el-tab-pane label="系统买方" <el-tab-pane label="系统买方"
name="tab1"> name="tab1">
<buyer></buyer> <buyer />
</el-tab-pane> </el-tab-pane>
<el-tab-pane label="金融市场" <el-tab-pane label="金融市场"
name="tab2"> </el-tab-pane> name="tab2">
<Financial />
</el-tab-pane>
<el-tab-pane label="扫单配置" <el-tab-pane label="扫单配置"
name="tab3"> </el-tab-pane> name="tab3"> </el-tab-pane>
<el-tab-pane label="渠道广告" <el-tab-pane label="渠道广告"
@ -18,12 +20,9 @@
<script setup lang="ts"> <script setup lang="ts">
import { ref, onMounted } from 'vue'; import { ref, onMounted } from 'vue';
import { ElMessage } from 'element-plus';
import type { TabsPaneContext } from 'element-plus'; import type { TabsPaneContext } from 'element-plus';
import Buyer from './Buyer.vue'; import Buyer from './Buyer.vue';
import Financial from './Financial.vue';
defineProps({ modelValue: { type: Object, required: true } });
defineEmits({ 'update:form': null });
const curTab = ref<string>('tab1'); const curTab = ref<string>('tab1');
@ -31,10 +30,7 @@ const curTab = ref<string>('tab1');
const tabChange = (tab: TabsPaneContext, event: Event) => { const tabChange = (tab: TabsPaneContext, event: Event) => {
console.log(tab, event); console.log(tab, event);
}; };
onMounted(() => { onMounted(() => {});
// getGuarantee();
// fetchData();
});
</script> </script>
<style lang="scss" scoped></style> <style lang="scss" scoped></style>

@ -201,11 +201,9 @@
<div class="flex-1"> <div class="flex-1">
<div class="num-inputs"> <div class="num-inputs">
<el-input placeholder="最小额度" <el-input placeholder="最小额度"
min="0"
v-model.number="form.minimumLoan"></el-input> v-model.number="form.minimumLoan"></el-input>
<span class="split">-</span> <span class="split">-</span>
<el-input placeholder="最高额度" <el-input placeholder="最高额度"
min="0"
v-model.number="form.loanCeiling"></el-input> v-model.number="form.loanCeiling"></el-input>
<span class="unit">万元</span> <span class="unit">万元</span>
</div> </div>

@ -115,7 +115,7 @@ const handleDelete = async (id: number) => {
} }
.products { .products {
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-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-[#CAE0FF];
} }

@ -157,8 +157,8 @@ const getConfig = async () => {
let symbol = cur?.ruleOne.match(/[<>=]+/g); let symbol = cur?.ruleOne.match(/[<>=]+/g);
let had = cur?.ruleOne.match(/[有无]+/g); let had = cur?.ruleOne.match(/[有无]+/g);
let temp = { let temp = {
checkpointId: Cookies.get('sand-level'), checkpointId: levelId,
projectId: Cookies.get('sand-projectId'), projectId,
name: e.name, name: e.name,
recordChildren: e.recordChildren, recordChildren: e.recordChildren,
isRule: isRule(e.id) ? 1 : 0, isRule: isRule(e.id) ? 1 : 0,

@ -127,8 +127,8 @@ const getConfig = async () => {
let symbol = cur?.ruleOne.match(/[<>=]+/g); let symbol = cur?.ruleOne.match(/[<>=]+/g);
let had = cur?.ruleOne.match(/[有无]+/g); let had = cur?.ruleOne.match(/[有无]+/g);
let temp = { let temp = {
checkpointId: Cookies.get('sand-level'), checkpointId: levelId,
projectId: Cookies.get('sand-projectId'), projectId,
name: e.name, name: e.name,
recordChildren: e.recordChildren, recordChildren: e.recordChildren,
isRule: isRule(e.id) ? 1 : 0, isRule: isRule(e.id) ? 1 : 0,

@ -18,7 +18,8 @@
</ul> </ul>
</div> </div>
<div class="right flex-1 px-5 pt-2"> <div class="right flex-1 px-5 pt-2">
<component :is="defineAsyncComponent(() => import('./' + id + '.vue'))"></component> <component v-if="id"
:is="defineAsyncComponent(() => import('./' + id + '.vue'))"></component>
</div> </div>
</div> </div>
</el-tab-pane> </el-tab-pane>

Loading…
Cancel
Save