模型添加loading

master
yujialong 7 months ago
parent 1369206c2e
commit 73ee648b97
  1. 2
      .env
  2. 65
      src/api/model.ts
  3. 1
      src/components/StrategyConfirm.vue
  4. 22
      src/views/product/afterLoan/1029/Detail.vue
  5. 1
      src/views/product/afterLoan/1029/Index.vue
  6. 22
      src/views/product/afterLoan/1030/Detail.vue
  7. 1
      src/views/product/afterLoan/1030/Index.vue
  8. 22
      src/views/product/afterLoan/1031/Detail.vue
  9. 1
      src/views/product/afterLoan/1031/Index.vue
  10. 22
      src/views/product/afterLoan/1032/Detail.vue
  11. 333
      src/views/product/bank/Config.vue
  12. 7
      src/views/product/interestRate/772/Detail.vue
  13. 3
      src/views/product/interestRate/772/Index.vue
  14. 12
      src/views/product/interestRate/935/Detail.vue
  15. 2
      src/views/product/interestRate/935/Index.vue
  16. 38
      src/views/product/interestRate/936/Detail.vue
  17. 2
      src/views/product/interestRate/936/Index.vue
  18. 22
      src/views/product/strategy/150/Detail.vue
  19. 2
      src/views/product/strategy/150/Index.vue
  20. 22
      src/views/product/strategy/151/Detail.vue
  21. 5
      src/views/product/strategy/151/Index.vue
  22. 22
      src/views/product/strategy/152/Detail.vue
  23. 3
      src/views/product/strategy/152/Index.vue
  24. 28
      src/views/product/strategy/153/Detail.vue
  25. 3
      src/views/product/strategy/153/Index.vue
  26. 22
      src/views/product/strategy/154/Detail.vue
  27. 3
      src/views/product/strategy/154/Index.vue
  28. 22
      src/views/product/strategy/155/Detail.vue
  29. 3
      src/views/product/strategy/155/Index.vue
  30. 22
      src/views/product/strategy/156/Detail.vue
  31. 3
      src/views/product/strategy/156/Index.vue
  32. 23
      src/views/product/strategy/512/Detail.vue
  33. 3
      src/views/product/strategy/512/Index.vue
  34. 23
      src/views/product/strategy/513/Detail.vue
  35. 3
      src/views/product/strategy/513/Index.vue
  36. 113
      src/views/product/strategy/Risk1.vue
  37. 84
      src/views/product/strategy/Risk2.vue
  38. 83
      src/views/product/strategy/Risk3.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.51: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_BASE_API=https://www.occupationlab.com # VITE_BASE_API=https://www.occupationlab.com
VITE_I18N_LOCALE=zh-cn VITE_I18N_LOCALE=zh-cn

@ -95,31 +95,31 @@ export const accessStrategyNegativeIndustryStrategy = async (data: Record<string
}) })
).data; ).data;
export const accessStrategyNegativeIndustryStrategyFind = async (params: Record<string, any>): Promise<any> => export const accessStrategyNegativeIndustryStrategyFind = async (params: Record<string, any>): Promise<any> =>
(await axios.post(`/product/accessStrategyNegativeIndustryStrategy/details`, {}, { params })).data; (await axios.post(`${host}/product/accessStrategyNegativeIndustryStrategy/details`, {}, { params })).data;
export const accessStrategyNegativeIndustryStrategySave = async (data: Record<string, any>): Promise<any> => export const accessStrategyNegativeIndustryStrategySave = async (data: Record<string, any>): Promise<any> =>
(await axios.post(`/product/accessStrategyNegativeIndustryStrategy/saveOrUpdate`, data)).data; (await axios.post(`${host}/product/accessStrategyNegativeIndustryStrategy/saveOrUpdate`, data)).data;
export const accessStrategyNegativeIndustryStrategyDel = async (data: Record<string, any>): Promise<any> => export const accessStrategyNegativeIndustryStrategyDel = async (data: Record<string, any>): Promise<any> =>
(await axios.post(`${host}/product/accessStrategyNegativeIndustryStrategy/delete`, data)).data; (await axios.post(`${host}/product/accessStrategyNegativeIndustryStrategy/delete`, data)).data;
export const delCredit = async (data: Record<string, any>): Promise<any> => (await axios.post(`/product/creditScoringStrategy/delete`, data)).data; export const delCredit = async (data: Record<string, any>): Promise<any> => (await axios.post(`${host}/product/creditScoringStrategy/delete`, data)).data;
export const findCredit = async (id: number): Promise<any> => (await axios.post(`/product/creditScoringStrategy/details?strategyId=${id}`)).data; export const findCredit = async (id: number): Promise<any> => (await axios.post(`${host}/product/creditScoringStrategy/details?strategyId=${id}`)).data;
export const listCredit = async (data: Record<string, any>): Promise<any> => export const listCredit = async (data: Record<string, any>): Promise<any> =>
( (
await axios.post(`/product/creditScoringStrategy/list`, { await axios.post(`${host}/product/creditScoringStrategy/list`, {
...data, ...data,
...getIds(), ...getIds(),
}) })
).data; ).data;
export const saveCredit = async (data: Record<string, any>): Promise<any> => (await axios.post(`/product/creditScoringStrategy/saveOrUpdate`, data)).data; export const saveCredit = async (data: Record<string, any>): Promise<any> => (await axios.post(`${host}/product/creditScoringStrategy/saveOrUpdate`, data)).data;
export const detailRick = async (type: number): Promise<any> => export const detailRick = async (type: number): Promise<any> =>
( (
await axios.post(`/product/riskDegreeStrategy/details`, { await axios.post(`${host}/product/riskDegreeStrategy/details`, {
...getIds(), ...getIds(),
type, type,
}) })
).data; ).data;
export const saveRick = async (data: Record<string, any>): Promise<any> => (await axios.post(`/product/riskDegreeStrategy/saveOrUpdate`, data)).data; export const saveRick = async (data: Record<string, any>): Promise<any> => (await axios.post(`${host}/product/riskDegreeStrategy/saveOrUpdate`, data)).data;
export const interestRateModelList = async (data: Record<string, any>): Promise<any> => export const interestRateModelList = async (data: Record<string, any>): Promise<any> =>
( (
@ -129,13 +129,13 @@ export const interestRateModelList = async (data: Record<string, any>): Promise<
}) })
).data; ).data;
export const businessInterestRateDetails = async (params: Record<string, any>): Promise<any> => export const businessInterestRateDetails = async (params: Record<string, any>): Promise<any> =>
(await axios.post(`/product/interestRateModel/businessInterestRateDetails`, {}, { params })).data; (await axios.post(`${host}/product/interestRateModel/businessInterestRateDetails`, {}, { params })).data;
export const businessInterestRateSaveOrUpdate = async (data: Record<string, any>): Promise<any> => export const businessInterestRateSaveOrUpdate = async (data: Record<string, any>): Promise<any> =>
(await axios.post(`/product/interestRateModel/businessInterestRateSaveOrUpdate`, data)).data; (await axios.post(`${host}/product/interestRateModel/businessInterestRateSaveOrUpdate`, data)).data;
export const personalInterestRateDetails = async (params: Record<string, any>): Promise<any> => export const personalInterestRateDetails = async (params: Record<string, any>): Promise<any> =>
(await axios.post(`/product/interestRateModel/personalInterestRateDetails`, {}, { params })).data; (await axios.post(`${host}/product/interestRateModel/personalInterestRateDetails`, {}, { params })).data;
export const personalInterestRateSaveOrUpdate = async (data: Record<string, any>): Promise<any> => export const personalInterestRateSaveOrUpdate = async (data: Record<string, any>): Promise<any> =>
(await axios.post(`/product/interestRateModel/personalInterestRateSaveOrUpdate`, data)).data; (await axios.post(`${host}/product/interestRateModel/personalInterestRateSaveOrUpdate`, data)).data;
export const deleteBusinessInterestRate = async (data: Record<string, any>): Promise<any> => export const deleteBusinessInterestRate = async (data: Record<string, any>): Promise<any> =>
(await axios.post(`${host}/product/interestRateModel/deleteBusinessInterestRate`, data)).data; (await axios.post(`${host}/product/interestRateModel/deleteBusinessInterestRate`, data)).data;
export const deletePersonalInterestRate = async (data: Record<string, any>): Promise<any> => export const deletePersonalInterestRate = async (data: Record<string, any>): Promise<any> =>
@ -143,72 +143,73 @@ export const deletePersonalInterestRate = async (data: Record<string, any>): Pro
export const quotaModelList = async (data: Record<string, any>): Promise<any> => export const quotaModelList = async (data: Record<string, any>): Promise<any> =>
( (
await axios.post(`/product/quotaModel/list`, { await axios.post(`${host}/product/quotaModel/list`, {
...getIds(), ...getIds(),
...data, ...data,
}) })
).data; ).data;
export const quotaModelDel = async (data: Record<string, any>): Promise<any> => (await axios.post(`${host}/product/quotaModel/delete`, data)).data; export const quotaModelDel = async (data: Record<string, any>): Promise<any> => (await axios.post(`${host}/product/quotaModel/delete`, data)).data;
export const businessQuotaModelDetails = async (): Promise<any> => (await axios.post(`/product/quotaModel/businessQuotaModelDetails`, getIds())).data; export const businessQuotaModelDetails = async (): Promise<any> => (await axios.post(`${host}/product/quotaModel/businessQuotaModelDetails`, getIds())).data;
export const businessQuotaModelSaveOrUpdate = async (data: Record<string, any>): Promise<any> => export const businessQuotaModelSaveOrUpdate = async (data: Record<string, any>): Promise<any> =>
(await axios.post(`/product/quotaModel/businessQuotaModelSaveOrUpdate`, data)).data; (await axios.post(`${host}/product/quotaModel/businessQuotaModelSaveOrUpdate`, data)).data;
export const personalCreditModelDetails = async (params: Record<string, any>): Promise<any> => export const personalCreditModelDetails = async (params: Record<string, any>): Promise<any> =>
(await axios.post(`/product/quotaModel/personalCreditModelDetails`, {}, { params })).data; (await axios.post(`${host}/product/quotaModel/personalCreditModelDetails`, {}, { params })).data;
export const personalCreditModelSaveOrUpdate = async (data: Record<string, any>): Promise<any> => export const personalCreditModelSaveOrUpdate = async (data: Record<string, any>): Promise<any> =>
(await axios.post(`/product/quotaModel/personalCreditModelSaveOrUpdate`, data)).data; (await axios.post(`${host}/product/quotaModel/personalCreditModelSaveOrUpdate`, data)).data;
export const fiveLevelClassification = async (data: Record<string, any>): Promise<any> => export const fiveLevelClassification = async (data: Record<string, any>): Promise<any> =>
( (
await axios.post(`/product/fiveLevelClassification/list`, { await axios.post(`${host}/product/fiveLevelClassification/list`, {
...getIds(), ...getIds(),
...data, ...data,
}) })
).data; ).data;
export const fiveLevelClassificationDetails = async (params: Record<string, any>): Promise<any> => export const fiveLevelClassificationDetails = async (params: Record<string, any>): Promise<any> =>
(await axios.post(`/product/fiveLevelClassification/details`, {}, { params })).data; (await axios.post(`${host}/product/fiveLevelClassification/details`, {}, { params })).data;
export const fiveLevelClassificationSave = async (data: Record<string, any>): Promise<any> => (await axios.post(`/product/fiveLevelClassification/saveOrUpdate`, data)).data; export const fiveLevelClassificationSave = async (data: Record<string, any>): Promise<any> => (await axios.post(`${host}/product/fiveLevelClassification/saveOrUpdate`, data)).data;
export const fiveLevelClassificationDel = async (data: Record<string, any>): Promise<any> => (await axios.post(`${host}/product/fiveLevelClassification/delete`, data)).data; export const fiveLevelClassificationDel = async (data: Record<string, any>): Promise<any> => (await axios.post(`${host}/product/fiveLevelClassification/delete`, data)).data;
export const postLoanInspection = async (data: Record<string, any>): Promise<any> => export const postLoanInspection = async (data: Record<string, any>): Promise<any> =>
( (
await axios.post(`/product/postLoanInspection/list`, { await axios.post(`${host}/product/postLoanInspection/list`, {
...getIds(), ...getIds(),
...data, ...data,
}) })
).data; ).data;
export const postLoanInspectionDetails = async (params: Record<string, any>): Promise<any> => (await axios.post(`/product/postLoanInspection/details`, {}, { params })).data; export const postLoanInspectionDetails = async (params: Record<string, any>): Promise<any> => (await axios.post(`${host}/product/postLoanInspection/details`, {}, { params })).data;
export const postLoanInspectionSave = async (data: Record<string, any>): Promise<any> => (await axios.post(`/product/postLoanInspection/saveOrUpdate`, data)).data; export const postLoanInspectionSave = async (data: Record<string, any>): Promise<any> => (await axios.post(`${host}/product/postLoanInspection/saveOrUpdate`, data)).data;
export const postLoanInspectionDel = async (data: Record<string, any>): Promise<any> => (await axios.post(`${host}/product/postLoanInspection/delete`, data)).data; export const postLoanInspectionDel = async (data: Record<string, any>): Promise<any> => (await axios.post(`${host}/product/postLoanInspection/delete`, data)).data;
export const postCreditScore = async (data: Record<string, any>): Promise<any> => export const postCreditScore = async (data: Record<string, any>): Promise<any> =>
( (
await axios.post(`/product/postCreditScore/list`, { await axios.post(`${host}/product/postCreditScore/list`, {
...getIds(), ...getIds(),
...data, ...data,
}) })
).data; ).data;
export const postCreditScoreDetails = async (params: Record<string, any>): Promise<any> => (await axios.post(`/product/postCreditScore/details`, {}, { params })).data; export const postCreditScoreDetails = async (params: Record<string, any>): Promise<any> => (await axios.post(`${host}/product/postCreditScore/details`, {}, { params })).data;
export const postCreditScoreSave = async (data: Record<string, any>): Promise<any> => (await axios.post(`/product/postCreditScore/saveOrUpdate`, data)).data; export const postCreditScoreSave = async (data: Record<string, any>): Promise<any> => (await axios.post(`${host}/product/postCreditScore/saveOrUpdate`, data)).data;
export const postCreditScoreDel = async (data: Record<string, any>): Promise<any> => (await axios.post(`${host}/product/postCreditScore/delete`, data)).data; export const postCreditScoreDel = async (data: Record<string, any>): Promise<any> => (await axios.post(`${host}/product/postCreditScore/delete`, data)).data;
export const postLoanWarning = async (data: Record<string, any>): Promise<any> => export const postLoanWarning = async (data: Record<string, any>): Promise<any> =>
( (
await axios.post(`/product/postLoanWarning/list`, { await axios.post(`${host}/product/postLoanWarning/list`, {
...getIds(), ...getIds(),
...data, ...data,
}) })
).data; ).data;
export const postLoanWarningDetails = async (params: Record<string, any>): Promise<any> => (await axios.post(`/product/postLoanWarning/details`, {}, { params })).data; export const postLoanWarningDetails = async (params: Record<string, any>): Promise<any> => (await axios.post(`${host}/product/postLoanWarning/details`, {}, { params })).data;
export const postLoanWarningSave = async (data: Record<string, any>): Promise<any> => (await axios.post(`/product/postLoanWarning/saveOrUpdate`, data)).data; export const postLoanWarningSave = async (data: Record<string, any>): Promise<any> => (await axios.post(`${host}/product/postLoanWarning/saveOrUpdate`, data)).data;
export const postLoanWarningDel = async (data: Record<string, any>): Promise<any> => (await axios.post(`${host}/product/postLoanWarning/delete`, data)).data; export const postLoanWarningDel = async (data: Record<string, any>): Promise<any> => (await axios.post(`${host}/product/postLoanWarning/delete`, data)).data;
export const collectionAfterLoan = async (data: Record<string, any>): Promise<any> => export const collectionAfterLoan = async (data: Record<string, any>): Promise<any> =>
( (
await axios.post(`/product/collectionAfterLoan/list`, { await axios.post(`${host}/product/collectionAfterLoan/list`, {
...getIds(), ...getIds(),
...data, ...data,
}) })
).data; ).data;
export const collectionAfterLoanDetails = async (params: Record<string, any>): Promise<any> => (await axios.post(`/product/collectionAfterLoan/details`, {}, { params })).data; export const collectionAfterLoanDetails = async (params: Record<string, any>): Promise<any> =>
export const collectionAfterLoanSave = async (data: Record<string, any>): Promise<any> => (await axios.post(`/product/collectionAfterLoan/saveOrUpdate`, data)).data; (await axios.post(`${host}/product/collectionAfterLoan/details`, {}, { params })).data;
export const collectionAfterLoanSave = async (data: Record<string, any>): Promise<any> => (await axios.post(`${host}/product/collectionAfterLoan/saveOrUpdate`, data)).data;
export const collectionAfterLoanDel = async (data: Record<string, any>): Promise<any> => (await axios.post(`${host}/product/collectionAfterLoan/delete`, data)).data; export const collectionAfterLoanDel = async (data: Record<string, any>): Promise<any> => (await axios.post(`${host}/product/collectionAfterLoan/delete`, data)).data;

@ -31,6 +31,7 @@ const visible = computed({
}); });
const syncCheck = ref<boolean>(false); const syncCheck = ref<boolean>(false);
const submit = () => { const submit = () => {
visible.value = false;
emit('submit', +syncCheck.value); emit('submit', +syncCheck.value);
}; };
</script> </script>

@ -3,7 +3,8 @@
<el-form label-width="90px" <el-form label-width="90px"
label-suffix=":" label-suffix=":"
class="form" class="form"
:disabled="disabled"> :disabled="disabled"
v-loading="loading">
<el-form-item label="策略名称"> <el-form-item label="策略名称">
<el-input class="w-[320px]" <el-input class="w-[320px]"
placeholder="请输入20以内字符" placeholder="请输入20以内字符"
@ -94,14 +95,14 @@
</el-table-column> </el-table-column>
</el-table> </el-table>
</el-form-item> </el-form-item>
<div v-if="!disabled"
class="flex justify-end mt-3">
<div class="dia-btn cancel"
@click="emit('close')">取消</div>
<div class="dia-btn"
@click="confirmSubmit">确定</div>
</div>
</el-form> </el-form>
<div v-if="!disabled"
class="flex justify-end mt-3">
<div class="dia-btn cancel"
@click="emit('close')">取消</div>
<div class="dia-btn"
@click="confirmSubmit">确定</div>
</div>
<Confirm v-model="syncVisible" <Confirm v-model="syncVisible"
@submit="submit" /> @submit="submit" />
@ -147,10 +148,13 @@ const getConfig = async () => {
}); });
}); });
form.value = result; form.value = result;
loading.value = false;
}; };
const loading = ref<boolean>(false);
const syncVisible = ref<boolean>(false); const syncVisible = ref<boolean>(false);
// //
const getDetail = async () => { const getDetail = async () => {
loading.value = true;
try { try {
if (strategyId.value) { if (strategyId.value) {
const { data } = await fiveLevelClassificationDetails({ const { data } = await fiveLevelClassificationDetails({
@ -181,12 +185,14 @@ const addRecord = async (data: Record<string, any>) => {
parentId: preIds, parentId: preIds,
lcJudgmentRuleReq: rule, lcJudgmentRuleReq: rule,
}); });
loading.value = false;
ElMessage.success('提交成功!'); ElMessage.success('提交成功!');
syncVisible.value = false; syncVisible.value = false;
emit('close', 1); emit('close', 1);
}; };
// //
const submit = async (synchronizeUpdate?: number) => { const submit = async (synchronizeUpdate?: number) => {
loading.value = true;
let param = JSON.parse(JSON.stringify(form.value)); let param = JSON.parse(JSON.stringify(form.value));
const recordParam = JSON.parse(JSON.stringify(param)); const recordParam = JSON.parse(JSON.stringify(param));

@ -91,6 +91,7 @@ import { Delete } from '@element-plus/icons-vue';
import { pageSizes, pageLayout } from '@/utils/common'; import { pageSizes, pageLayout } from '@/utils/common';
import { fiveLevelClassification, fiveLevelClassificationDel } from '@/api/model'; import { fiveLevelClassification, fiveLevelClassificationDel } from '@/api/model';
import Search from '@/components/Search.vue'; import Search from '@/components/Search.vue';
const Detail = defineAsyncComponent(() => import('./Detail.vue')); const Detail = defineAsyncComponent(() => import('./Detail.vue'));
const keyWord = ref<string>(); const keyWord = ref<string>();

@ -3,7 +3,8 @@
<el-form label-width="90px" <el-form label-width="90px"
label-suffix=":" label-suffix=":"
class="form" class="form"
:disabled="disabled"> :disabled="disabled"
v-loading="loading">
<el-form-item label="策略名称"> <el-form-item label="策略名称">
<el-input class="w-[320px]" <el-input class="w-[320px]"
placeholder="请输入20以内字符" placeholder="请输入20以内字符"
@ -73,14 +74,14 @@
</el-table-column> </el-table-column>
</el-table> </el-table>
</el-form-item> </el-form-item>
<div v-if="!disabled"
class="flex justify-end mt-3">
<div class="dia-btn cancel"
@click="emit('close')">取消</div>
<div class="dia-btn"
@click="confirmSubmit">确定</div>
</div>
</el-form> </el-form>
<div v-if="!disabled"
class="flex justify-end mt-3">
<div class="dia-btn cancel"
@click="emit('close')">取消</div>
<div class="dia-btn"
@click="confirmSubmit">确定</div>
</div>
<Confirm v-model="syncVisible" <Confirm v-model="syncVisible"
@submit="submit" /> @submit="submit" />
@ -106,6 +107,7 @@ const emit = defineEmits(['clsoe']);
const { strategyId, strategyName } = toRefs(props.row); const { strategyId, strategyName } = toRefs(props.row);
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 loading = ref<boolean>(false);
const syncVisible = ref<boolean>(false); const syncVisible = ref<boolean>(false);
// //
const getConfig = async () => { const getConfig = async () => {
@ -129,9 +131,11 @@ const getConfig = async () => {
result.push(temp); result.push(temp);
}); });
form.value = result; form.value = result;
loading.value = false;
}; };
// //
const getDetail = async () => { const getDetail = async () => {
loading.value = true;
try { try {
if (strategyId.value) { if (strategyId.value) {
const { data } = await postLoanInspectionDetails({ const { data } = await postLoanInspectionDetails({
@ -189,12 +193,14 @@ const addRecord = async (data: Record<string, any>) => {
parentId: preIds, parentId: preIds,
lcJudgmentRuleReq: rule, lcJudgmentRuleReq: rule,
}); });
loading.value = false;
ElMessage.success('提交成功!'); ElMessage.success('提交成功!');
syncVisible.value = false; syncVisible.value = false;
emit('close', 1); emit('close', 1);
}; };
// //
const submit = async (synchronizeUpdate?: number) => { const submit = async (synchronizeUpdate?: number) => {
loading.value = true;
let param = JSON.parse(JSON.stringify(form.value)); let param = JSON.parse(JSON.stringify(form.value));
param.map((e, i) => { param.map((e, i) => {
e.creditData = +e.creditData; e.creditData = +e.creditData;

@ -91,6 +91,7 @@ import { Delete } from '@element-plus/icons-vue';
import { pageSizes, pageLayout } from '@/utils/common'; import { pageSizes, pageLayout } from '@/utils/common';
import { postLoanInspection, postLoanInspectionDel } from '@/api/model'; import { postLoanInspection, postLoanInspectionDel } from '@/api/model';
import Search from '@/components/Search.vue'; import Search from '@/components/Search.vue';
const Detail = defineAsyncComponent(() => import('./Detail.vue')); const Detail = defineAsyncComponent(() => import('./Detail.vue'));
const keyWord = ref<string>(); const keyWord = ref<string>();

@ -3,7 +3,8 @@
<el-form label-width="90px" <el-form label-width="90px"
label-suffix=":" label-suffix=":"
class="form" class="form"
:disabled="disabled"> :disabled="disabled"
v-loading="loading">
<el-form-item label="策略名称"> <el-form-item label="策略名称">
<el-input class="w-[320px]" <el-input class="w-[320px]"
placeholder="请输入20以内字符" placeholder="请输入20以内字符"
@ -193,14 +194,14 @@
</el-table-column> </el-table-column>
</el-table> </el-table>
</el-form-item> </el-form-item>
<div v-if="!disabled"
class="flex justify-end mt-3">
<div class="dia-btn cancel"
@click="emit('close')">取消</div>
<div class="dia-btn"
@click="confirmSubmit">确定</div>
</div>
</el-form> </el-form>
<div v-if="!disabled"
class="flex justify-end mt-3">
<div class="dia-btn cancel"
@click="emit('close')">取消</div>
<div class="dia-btn"
@click="confirmSubmit">确定</div>
</div>
<Confirm v-model="syncVisible" <Confirm v-model="syncVisible"
@submit="submit" /> @submit="submit" />
@ -228,6 +229,7 @@ const form = ref<Record<string, any>[]>([]);
const info = ref<Record<string, any>[]>([]); const info = ref<Record<string, any>[]>([]);
// //
const answer = [[697, 693], [698, 691], [1, 707], [716], [], [695, 696], [696, 694]]; const answer = [[697, 693], [698, 691], [1, 707], [716], [], [695, 696], [696, 694]];
const loading = ref<boolean>(false);
const syncVisible = ref<boolean>(false); const syncVisible = ref<boolean>(false);
// //
const getConfig = async () => { const getConfig = async () => {
@ -268,9 +270,11 @@ const getConfig = async () => {
}); });
} }
form.value = result; form.value = result;
loading.value = false;
}; };
// //
const getDetail = async () => { const getDetail = async () => {
loading.value = true;
try { try {
if (strategyId.value) { if (strategyId.value) {
const { data } = await postCreditScoreDetails({ const { data } = await postCreditScoreDetails({
@ -365,12 +369,14 @@ const addRecord = async (data: Record<string, any>) => {
parentId: preIds, parentId: preIds,
lcJudgmentRuleReq: rule, lcJudgmentRuleReq: rule,
}); });
loading.value = false;
ElMessage.success('提交成功!'); ElMessage.success('提交成功!');
syncVisible.value = false; syncVisible.value = false;
emit('close', 1); emit('close', 1);
}; };
// //
const submit = async (synchronizeUpdate?: number) => { const submit = async (synchronizeUpdate?: number) => {
loading.value = true;
let param = JSON.parse(JSON.stringify(form.value)); let param = JSON.parse(JSON.stringify(form.value));
const recordParam = JSON.parse(JSON.stringify(param)); const recordParam = JSON.parse(JSON.stringify(param));
param.map((e) => { param.map((e) => {

@ -91,6 +91,7 @@ import { Delete } from '@element-plus/icons-vue';
import { pageSizes, pageLayout } from '@/utils/common'; import { pageSizes, pageLayout } from '@/utils/common';
import { postCreditScore, postCreditScoreDel } from '@/api/model'; import { postCreditScore, postCreditScoreDel } from '@/api/model';
import Search from '@/components/Search.vue'; import Search from '@/components/Search.vue';
const Detail = defineAsyncComponent(() => import('./Detail.vue')); const Detail = defineAsyncComponent(() => import('./Detail.vue'));
const keyWord = ref<string>(); const keyWord = ref<string>();

@ -3,7 +3,8 @@
<el-form label-width="90px" <el-form label-width="90px"
label-suffix=":" label-suffix=":"
class="form" class="form"
:disabled="disabled"> :disabled="disabled"
v-loading="loading">
<el-form-item label="策略名称"> <el-form-item label="策略名称">
<el-input class="w-[320px]" <el-input class="w-[320px]"
placeholder="请输入20以内字符" placeholder="请输入20以内字符"
@ -52,14 +53,14 @@
</template></el-table-column> </template></el-table-column>
</el-table> </el-table>
</el-form-item> </el-form-item>
<div v-if="!disabled"
class="flex justify-end mt-3">
<div class="dia-btn cancel"
@click="emit('close')">取消</div>
<div class="dia-btn"
@click="confirmSubmit">确定</div>
</div>
</el-form> </el-form>
<div v-if="!disabled"
class="flex justify-end mt-3">
<div class="dia-btn cancel"
@click="emit('close')">取消</div>
<div class="dia-btn"
@click="confirmSubmit">确定</div>
</div>
<Confirm v-model="syncVisible" <Confirm v-model="syncVisible"
@submit="submit" /> @submit="submit" />
@ -84,6 +85,7 @@ const emit = defineEmits(['clsoe']);
const { strategyId, strategyName } = toRefs(props.row); const { strategyId, strategyName } = toRefs(props.row);
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 loading = ref<boolean>(false);
const syncVisible = ref<boolean>(false); const syncVisible = ref<boolean>(false);
// //
const getConfig = async () => { const getConfig = async () => {
@ -103,9 +105,11 @@ const getConfig = async () => {
}); });
}); });
form.value = result; form.value = result;
loading.value = false;
}; };
// //
const getDetail = async () => { const getDetail = async () => {
loading.value = true;
try { try {
if (strategyId.value) { if (strategyId.value) {
const { data } = await postLoanWarningDetails({ const { data } = await postLoanWarningDetails({
@ -135,12 +139,14 @@ const addRecord = async (data: Record<string, any>) => {
parentId: preIds, parentId: preIds,
lcJudgmentRuleReq: rule, lcJudgmentRuleReq: rule,
}); });
loading.value = false;
ElMessage.success('提交成功!'); ElMessage.success('提交成功!');
syncVisible.value = false; syncVisible.value = false;
emit('close', 1); emit('close', 1);
}; };
// //
const submit = async (synchronizeUpdate?: number) => { const submit = async (synchronizeUpdate?: number) => {
loading.value = true;
let param = JSON.parse(JSON.stringify(form.value)); let param = JSON.parse(JSON.stringify(form.value));
param.forEach((e) => { param.forEach((e) => {
e.isChoose = +e.isChoose; e.isChoose = +e.isChoose;

@ -277,21 +277,30 @@
class="flex items-center mb-3"> class="flex items-center mb-3">
<div class="radio-wrap"> <div class="radio-wrap">
<span class="label">{{ item.name }}</span> <span class="label">{{ item.name }}</span>
<el-radio-group v-model="form.creditScoringStrategyList[i].tacticsSelectedStatus"> <el-radio-group v-model="form.creditScoringStrategyList[i].tacticsSelectedStatus"
<el-radio v-for="(option, j) in item?.recordChildren[0]?.subject?.itemList" @change="getCredits(i)">
<el-radio v-for="(option, j) in whethers1"
:key="j" :key="j"
:label="option.itemId">{{ option.options }}</el-radio> :label="option.itemId">{{ option.options }}</el-radio>
</el-radio-group> </el-radio-group>
</div> </div>
<el-select v-if="form.creditScoringStrategyList[i].tacticsSelectedStatus === 803" <template v-if="form.creditScoringStrategyList[i].tacticsSelectedStatus === 803 && item.blackList">
class="ml-5" <el-select class="ml-5 mr-3"
v-model="form.creditScoringStrategyList[i].tacticsId" v-model="form.creditScoringStrategyList[i].tacticsId"
placeholder="请选择"> placeholder="请选择">
<el-option v-for="item in credits.filter(e => !e.scoringObject)" <el-option v-for="item in item?.blackList"
:key="item" :key="item"
:value="item.scoreCardName" /> :label="item.scoreCardName"
</el-select> :value="item.id" />
</el-select>
<img v-if="form.creditScoringStrategyList[i].tacticsId"
src="@/assets/svgs/preview.svg"
alt=""
class="cursor-pointer"
@click="previewCredits(item, i)">
</template>
</div> </div>
</div> </div>
</el-form-item> </el-form-item>
@ -327,20 +336,24 @@
:key="i" :key="i"
class="radio-wrap mb-3"> class="radio-wrap mb-3">
<span class="label">{{ item.name }}</span> <span class="label">{{ item.name }}</span>
<el-radio-group v-model="form.interestRatePricingModelList[i].tacticsSelectedStatus"> <el-radio-group v-model="form.interestRatePricingModelList[i].tacticsSelectedStatus"
@change="getRate(i)">
<el-radio v-for="(option, j) in whethers1" <el-radio v-for="(option, j) in whethers1"
:key="j" :key="j"
:label="option.itemId">{{ option.options }}</el-radio> :label="option.itemId">{{ option.options }}</el-radio>
</el-radio-group> </el-radio-group>
<el-select v-if="form.interestRatePricingModelList[i].tacticsSelectedStatus === 803"
class="ml-5" <template v-if="form.interestRatePricingModelList[i].tacticsSelectedStatus === 803 && item.blackList">
v-model="form.interestRatePricingModelList[i].tacticsId" <el-select v-if="form.interestRatePricingModelList[i].tacticsSelectedStatus === 803"
placeholder="请选择"> class="ml-5 mr-3"
<el-option v-for="item in config[2]?.recordChildren[4]?.recordChildren[1]?.recordChildren[1]?.subject?.itemList" v-model="form.interestRatePricingModelList[i].tacticsId"
:key="item.itemId" placeholder="请选择">
:label="item.options" <el-option v-for="item in item?.blackList"
:value="item.itemId" /> :key="item.itemId"
</el-select> :label="item.modelName"
:value="item.id" />
</el-select>
</template>
</div> </div>
<div class="radio-wrap items-start mb-3"> <div class="radio-wrap items-start mb-3">
@ -363,19 +376,20 @@
<div class="radio-wrap items-start mb-3"> <div class="radio-wrap items-start mb-3">
<span class="label">企业利率模型</span> <span class="label">企业利率模型</span>
<el-radio-group v-model="form.interestRatePricingModelList[2].tacticsSelectedStatus"> <el-radio-group v-model="form.interestRatePricingModelList[2].tacticsSelectedStatus"
@change="getRate(2)">
<el-radio v-for="(option, j) in whethers1" <el-radio v-for="(option, j) in whethers1"
:key="j" :key="j"
:label="option.itemId">{{ option.options }}</el-radio> :label="option.itemId">{{ option.options }}</el-radio>
</el-radio-group> </el-radio-group>
<el-select v-if="form.interestRatePricingModelList[2].tacticsSelectedStatus === 803" <el-select v-if="form.interestRatePricingModelList[2].tacticsSelectedStatus === 803 && form.interestRatePricingModelList[2].blackList"
class="ml-5" class="ml-5"
v-model="form.interestRatePricingModelList[2].tacticsId" v-model="form.interestRatePricingModelList[2].tacticsId"
placeholder="请选择"> placeholder="请选择">
<el-option v-for="item in config[2]?.recordChildren[4]?.recordChildren[1]?.recordChildren[1]?.subject?.itemList" <el-option v-for="item in form.interestRatePricingModelList[2].blackList"
:key="item.itemId" :key="item.itemId"
:label="item.options" :label="item.modelName"
:value="item.itemId" /> :value="item.id" />
</el-select> </el-select>
</div> </div>
</div> </div>
@ -563,20 +577,30 @@
:key="i" :key="i"
class="radio-wrap mb-3"> class="radio-wrap mb-3">
<span class="label min-w-[85px]">{{ item.name }}</span> <span class="label min-w-[85px]">{{ item.name }}</span>
<el-radio-group v-model="form.postLoanSelectionStrategyList[i].tacticsSelectedStatus"> <el-radio-group v-model="form.postLoanSelectionStrategyList[i].tacticsSelectedStatus"
@change="getAfter(i)">
<el-radio v-for="(option, j) in item?.recordChildren[0]?.subject?.itemList" <el-radio v-for="(option, j) in item?.recordChildren[0]?.subject?.itemList"
:key="j" :key="j"
:label="option.itemId">{{ option.options }}</el-radio> :label="option.itemId">{{ option.options }}</el-radio>
</el-radio-group> </el-radio-group>
<el-select v-if="form.postLoanSelectionStrategyList[i].tacticsSelectedStatus === 803"
class="ml-5" <template v-if="form.postLoanSelectionStrategyList[i].tacticsSelectedStatus === 803 && item.blackList">
v-model="form.postLoanSelectionStrategyList[i].tacticsId" <el-select v-if="form.postLoanSelectionStrategyList[i].tacticsSelectedStatus === 803"
placeholder="请选择"> class="ml-5 mr-3"
<el-option v-for="item in config[2]?.recordChildren[4]?.recordChildren[1]?.recordChildren[1]?.subject?.itemList" v-model="form.postLoanSelectionStrategyList[i].tacticsId"
:key="item.itemId" placeholder="请选择">
:label="item.options" <el-option v-for="item in item.blackList"
:value="item.itemId" /> :key="item.itemId"
</el-select> :label="item.strategyName"
:value="item.strategyId" />
</el-select>
<img v-if="form.postLoanSelectionStrategyList[i].tacticsId"
src="@/assets/svgs/preview.svg"
alt=""
class="cursor-pointer"
@click="previewAfter(item, i)">
</template>
</div> </div>
</div> </div>
</el-form-item> </el-form-item>
@ -616,7 +640,6 @@ import type { TabsPaneContext, FormInstance } from 'element-plus';
import { findById, riskSave, riskUpdate, riskControlDetailsAreDisplayed } from '@/api/bank'; import { findById, riskSave, riskUpdate, riskControlDetailsAreDisplayed } from '@/api/bank';
import { getProcessInformationBasedOnRoles, addOperation } from '@/api/judgment'; import { getProcessInformationBasedOnRoles, addOperation } from '@/api/judgment';
import { import {
listCredit,
accessStrategyGovernmentBlacklistList, accessStrategyGovernmentBlacklistList,
accessStrategyCreditBlacklist, accessStrategyCreditBlacklist,
accessStrategyBusinessBlacklist, accessStrategyBusinessBlacklist,
@ -624,6 +647,14 @@ import {
accessStrategyEnterpriseBlacklist, accessStrategyEnterpriseBlacklist,
accessStrategyAntiFraudStrategy, accessStrategyAntiFraudStrategy,
accessStrategyNegativeIndustryStrategy, accessStrategyNegativeIndustryStrategy,
listCredit,
quotaModelList,
interestRateModelList,
fiveLevelClassification,
postLoanInspection,
postCreditScore,
postLoanWarning,
collectionAfterLoan,
} from '@/api/model'; } from '@/api/model';
import { useRouter, useRoute } from 'vue-router'; import { useRouter, useRoute } from 'vue-router';
import { handleId, getIds, getUsername } from '@/utils/common'; import { handleId, getIds, getUsername } from '@/utils/common';
@ -684,7 +715,6 @@ const route = useRoute();
const id = computed(() => +route.query.id); const id = computed(() => +route.query.id);
const curTab = ref<string>(route.query.show ? 'tab2' : 'tab1'); const curTab = ref<string>(route.query.show ? 'tab2' : 'tab1');
const config = ref<any[]>([]); const config = ref<any[]>([]);
const credits = ref<Record<string, any>[]>([]);
const info = ref<Record<string, any>>({}); const info = ref<Record<string, any>>({});
const whethers = ref<Record<string, any>>([ const whethers = ref<Record<string, any>>([
{ {
@ -764,6 +794,7 @@ let form = reactive<RuleForm>({
const curPreviewTitle = ref<string>(); const curPreviewTitle = ref<string>();
const assessNames = ['政务黑名单', '征信黑名单', '商采黑名单', '行内黑名单', '企业黑名单', '反欺诈策略', '负面行业黑名单策略']; const assessNames = ['政务黑名单', '征信黑名单', '商采黑名单', '行内黑名单', '企业黑名单', '反欺诈策略', '负面行业黑名单策略'];
const afterNames = ['五级分类策略', '贷后检查策略', '贷后评分卡', '贷后预警策略', '贷后催收策略'];
const dynamicComponentMap = { const dynamicComponentMap = {
'150': defineAsyncComponent(() => import('../strategy/150/Detail.vue')), '150': defineAsyncComponent(() => import('../strategy/150/Detail.vue')),
'151': defineAsyncComponent(() => import('../strategy/151/Detail.vue')), '151': defineAsyncComponent(() => import('../strategy/151/Detail.vue')),
@ -772,10 +803,13 @@ const dynamicComponentMap = {
'154': defineAsyncComponent(() => import('../strategy/154/Detail.vue')), '154': defineAsyncComponent(() => import('../strategy/154/Detail.vue')),
'155': defineAsyncComponent(() => import('../strategy/155/Detail.vue')), '155': defineAsyncComponent(() => import('../strategy/155/Detail.vue')),
'156': defineAsyncComponent(() => import('../strategy/156/Detail.vue')), '156': defineAsyncComponent(() => import('../strategy/156/Detail.vue')),
// '148': defineAsyncComponent(() => import('./Credit.vue')), '512': defineAsyncComponent(() => import('../strategy/512/Detail.vue')),
// '702': defineAsyncComponent(() => import('./Risk1.vue')), '513': defineAsyncComponent(() => import('../strategy/513/Detail.vue')),
// '703': defineAsyncComponent(() => import('./Risk2.vue')), '1029': defineAsyncComponent(() => import('../afterLoan/1029/Detail.vue')),
// '704': defineAsyncComponent(() => import('./Risk3.vue')), '1030': defineAsyncComponent(() => import('../afterLoan/1030/Detail.vue')),
'1031': defineAsyncComponent(() => import('../afterLoan/1031/Detail.vue')),
'1032': defineAsyncComponent(() => import('../afterLoan/1032/Detail.vue')),
'1033': defineAsyncComponent(() => import('../afterLoan/1033/Detail.vue')),
}; };
const app = getCurrentInstance().appContext.app; const app = getCurrentInstance().appContext.app;
for (const [name, asyncComponent] of Object.entries(dynamicComponentMap)) { for (const [name, asyncComponent] of Object.entries(dynamicComponentMap)) {
@ -804,6 +838,64 @@ const getAccess = async (i: number) => {
} }
} }
}; };
//
const getCredits = async (i: number) => {
const list = config.value[2]?.recordChildren[2]?.recordChildren;
if (!list[i].blackList) {
try {
const res = await listCredit({
...strategyParams,
type: i,
});
if (res) list[i].blackList = res.data.records;
} finally {
}
}
};
//
const getRate = async (i: number) => {
const list = config.value[2].recordChildren[4].recordChildren;
if (!list[i].blackList) {
try {
let res;
if (!i) {
res = await quotaModelList({
...strategyParams,
type: 1,
}); //
} else if (i === 1) {
res = await interestRateModelList({
...strategyParams,
type: 1,
}); //
} else if (i === 2) {
res = await interestRateModelList({
...strategyParams,
type: 2,
}); //
form.interestRatePricingModelList[2].blackList = res.page.records;
}
if (res && i !== 2) list[i].blackList = res.page.records;
} finally {
}
}
};
//
const getAfter = async (i: number) => {
const list = config.value[7]?.recordChildren;
if (!list[i].blackList) {
try {
let res;
if (!i) res = await fiveLevelClassification(strategyParams); //
if (i === 1) res = await postLoanInspection(strategyParams); //
if (i === 2) res = await postCreditScore(strategyParams); //
if (i === 3) res = await postLoanWarning(strategyParams); //
if (i === 4) res = await collectionAfterLoan(strategyParams); //
if (res) list[i].blackList = res.page.records;
} finally {
}
}
};
// //
const getConfig = async () => { const getConfig = async () => {
const { process } = await getProcessInformationBasedOnRoles(info.value.productType ? 71 : 70); // 7071 const { process } = await getProcessInformationBasedOnRoles(info.value.productType ? 71 : 70); // 7071
@ -874,39 +966,6 @@ const getConfig = async () => {
e.tacticsSelectedStatus === 803 && getAccess(i); e.tacticsSelectedStatus === 803 && getAccess(i);
}); });
} }
const { data } = await listCredit({
...getIds(),
pageNum: 1,
pageSize: 1000,
});
credits.value = [
{
scoringObject: 0,
scoreCardName: '个人信用评分策略',
},
{
scoringObject: 0,
scoreCardName: '个人评分-评级贷',
},
{
scoringObject: 0,
scoreCardName: '个人标准评分卡',
},
{
scoringObject: 1,
scoreCardName: '企业标准评分卡',
},
{
scoringObject: 1,
scoreCardName: '大型企业评分卡',
},
{
scoringObject: 1,
scoreCardName: '小型企业评分卡',
},
...data,
];
}; };
// //
const getDetail = async () => { const getDetail = async () => {
@ -1135,11 +1194,14 @@ const addRecord = async (data: Record<string, any>) => {
// //
const list2 = data.creditScoringStrategyList; const list2 = data.creditScoringStrategyList;
list2[0].tacticsSelectedStatus && lcRule.push(handleId(1307, 327, list2[0].tacticsSelectedStatus, `${preIds},114,129,1046,1307`, 1)); if (list2.length) {
// list2[0].tacticsId && lcRule.push(handleId(1390, 339, list2[0].tacticsId, `${preIds},114,129,1046,1390`, 3)); const list = config.value[2]?.recordChildren[2]?.recordChildren;
list2[0].tacticsSelectedStatus && lcRule.push(handleId(1307, 327, list2[0].tacticsSelectedStatus, `${preIds},114,129,1046,1307`, 1));
list2[0].tacticsId && lcRule.push(handleId(1390, 339, list[0].blackList.find((e) => e.id === list2[0].tacticsId)?.scoreCardName || '', `${preIds},114,129,1046,1390`, 3));
list2[1].tacticsSelectedStatus && lcRule.push(handleId(1391, 327, list2[1].tacticsSelectedStatus, `${preIds},114,129,1047,1391`, 1)); list2[1].tacticsSelectedStatus && lcRule.push(handleId(1391, 327, list2[1].tacticsSelectedStatus, `${preIds},114,129,1047,1391`, 1));
// list2[1].tacticsId && lcRule.push(handleId(1392, 339, list2[1].tacticsId, `${preIds},114,129,1047,1392`, 3)); list2[1].tacticsId && lcRule.push(handleId(1392, 339, list[1].blackList.find((e) => e.id === list2[1].tacticsId)?.scoreCardName || '', `${preIds},114,129,1047,1392`, 3));
}
// //
data.personalRiskDegreeStrategySelectedStatus && lcRule.push(handleId(1301, 327, data.personalRiskDegreeStrategySelectedStatus, preIds + ',114,130,1301', 1)); data.personalRiskDegreeStrategySelectedStatus && lcRule.push(handleId(1301, 327, data.personalRiskDegreeStrategySelectedStatus, preIds + ',114,130,1301', 1));
@ -1147,17 +1209,20 @@ const addRecord = async (data: Record<string, any>) => {
// //
const list3 = data.interestRatePricingModelList; const list3 = data.interestRatePricingModelList;
list3[0].tacticsSelectedStatus && lcRule.push(handleId(1398, 327, list3[0].tacticsSelectedStatus, `${preIds},114,131,1394,1398`, 1)); if (list3.length) {
// list3[0].tacticsId && lcRule.push(handleId(1399, 339, list3[0].tacticsId, `${preIds},114,131,1394,1399`, 3)); const list = config.value[2].recordChildren[4].recordChildren;
list3[0].tacticsSelectedStatus && lcRule.push(handleId(1398, 327, list3[0].tacticsSelectedStatus, `${preIds},114,131,1394,1398`, 1));
list3[0].tacticsId && lcRule.push(handleId(1399, 339, list[0].blackList.find((e) => e.id === list3[0].tacticsId)?.modelName || '', `${preIds},114,131,1394,1399`, 3));
list3[1].tacticsSelectedStatus && lcRule.push(handleId(1400, 327, list3[1].tacticsSelectedStatus, `${preIds},114,131,1395,1400`, 1)); list3[1].tacticsSelectedStatus && lcRule.push(handleId(1400, 327, list3[1].tacticsSelectedStatus, `${preIds},114,131,1395,1400`, 1));
// list3[1].tacticsId && lcRule.push(handleId(1401, 339, list3[1].tacticsId, `${preIds},114,131,1395,1401`, 3)); list3[1].tacticsId && lcRule.push(handleId(1401, 339, list[1].blackList.find((e) => e.id === list3[1].tacticsId)?.modelName || '', `${preIds},114,131,1395,1401`, 3));
data.enterpriseQuotaModelSelectedStatus && lcRule.push(handleId(1402, 327, data.enterpriseQuotaModelSelectedStatus, preIds + ',114,131,1396,1402', 1)); data.enterpriseQuotaModelSelectedStatus && lcRule.push(handleId(1402, 327, data.enterpriseQuotaModelSelectedStatus, preIds + ',114,131,1396,1402', 1));
data.enterpriseQuotaModel && lcRule.push(handleId(1403, 338, data.enterpriseQuotaModel, preIds + ',114,131,1396,1403', 1)); data.enterpriseQuotaModel && lcRule.push(handleId(1403, 338, data.enterpriseQuotaModel, preIds + ',114,131,1396,1403', 1));
list3[2].tacticsSelectedStatus && lcRule.push(handleId(1404, 327, list3[2].tacticsSelectedStatus, `${preIds},114,131,1397,1404`, 1)); list3[2].tacticsSelectedStatus && lcRule.push(handleId(1404, 327, list3[2].tacticsSelectedStatus, `${preIds},114,131,1397,1404`, 1));
// list3[2].tacticsId && lcRule.push(handleId(1405, 339, list3[2].tacticsId, `${preIds},114,131,1397,1405`, 3)); list3[2].tacticsId && lcRule.push(handleId(1405, 339, list3[2].blackList.find((e) => e.id === list3[2].tacticsId)?.modelName || '', `${preIds},114,131,1397,1405`, 3));
}
data.dueDiligenceMode && lcRule.push(handleId(132, 56, data.dueDiligenceMode, preIds + ',115,132', 1)); data.dueDiligenceMode && lcRule.push(handleId(132, 56, data.dueDiligenceMode, preIds + ',115,132', 1));
data.dueDiligenceContent && lcRule.push(handleId(133, 57, data.dueDiligenceContent, preIds + ',115,133', 1)); data.dueDiligenceContent && lcRule.push(handleId(133, 57, data.dueDiligenceContent, preIds + ',115,133', 1));
@ -1180,6 +1245,26 @@ const addRecord = async (data: Record<string, any>) => {
data.guaranteeContractSelectedStatus && lcRule.push(handleId(1273, 325, data.guaranteeContractSelectedStatus, preIds + ',118,139,309,1273', 1)); data.guaranteeContractSelectedStatus && lcRule.push(handleId(1273, 325, data.guaranteeContractSelectedStatus, preIds + ',118,139,309,1273', 1));
data.guaranteeContract && lcRule.push(handleId(1272, 144, data.guaranteeContract, preIds + ',118,139,309,1272', 1)); data.guaranteeContract && lcRule.push(handleId(1272, 144, data.guaranteeContract, preIds + ',118,139,309,1272', 1));
//
const list4 = data.postLoanSelectionStrategyList;
if (list4.length) {
const list = config.value[7]?.recordChildren;
list4[0].tacticsSelectedStatus && lcRule.push(handleId(1411, 327, list4[0].tacticsSelectedStatus, `${preIds},119,1406,1411`, 1));
list4[0].tacticsId && lcRule.push(handleId(1412, 339, list[0].blackList.find((e) => e.strategyId === list4[0].tacticsId)?.strategyName || '', `${preIds},119,1406,1412`, 3));
list4[1].tacticsSelectedStatus && lcRule.push(handleId(1413, 327, list4[1].tacticsSelectedStatus, `${preIds},119,1407,1413`, 1));
list4[1].tacticsId && lcRule.push(handleId(1414, 339, list[1].blackList.find((e) => e.strategyId === list4[1].tacticsId)?.strategyName || '', `${preIds},119,1407,1414`, 3));
list4[2].tacticsSelectedStatus && lcRule.push(handleId(1415, 327, list4[2].tacticsSelectedStatus, `${preIds},119,1408,1415`, 1));
list4[2].tacticsId && lcRule.push(handleId(1416, 339, list[2].blackList.find((e) => e.strategyId === list4[2].tacticsId)?.strategyName || '', `${preIds},119,1408,1416`, 3));
list4[3].tacticsSelectedStatus && lcRule.push(handleId(1417, 327, list4[3].tacticsSelectedStatus, `${preIds},119,1409,1417`, 1));
list4[3].tacticsId && lcRule.push(handleId(1418, 339, list[3].blackList.find((e) => e.strategyId === list4[3].tacticsId)?.strategyName || '', `${preIds},119,1409,1418`, 3));
list4[4].tacticsSelectedStatus && lcRule.push(handleId(1419, 327, list4[4].tacticsSelectedStatus, `${preIds},119,1410,1419`, 1));
list4[4].tacticsId && lcRule.push(handleId(1420, 339, list[4].blackList.find((e) => e.strategyId === list4[4].tacticsId)?.strategyName || '', `${preIds},119,1410,1420`, 3));
}
} else { } else {
data.provideMaterialSelectedStatus && lcRule.push(handleId(1294, 325, data.provideMaterialSelectedStatus, preIds + ',72,75,1294', 1)); data.provideMaterialSelectedStatus && lcRule.push(handleId(1294, 325, data.provideMaterialSelectedStatus, preIds + ',72,75,1294', 1));
data.accountMaterials && lcRule.push(handleId(1295, 20, data.accountMaterials, preIds + ',72,75,1295', 1)); data.accountMaterials && lcRule.push(handleId(1295, 20, data.accountMaterials, preIds + ',72,75,1295', 1));
@ -1239,11 +1324,14 @@ const addRecord = async (data: Record<string, any>) => {
// //
const list2 = data.creditScoringStrategyList; const list2 = data.creditScoringStrategyList;
list2[0].tacticsSelectedStatus && lcRule.push(handleId(1364, 327, list2[0].tacticsSelectedStatus, `${preIds},74,84,1304,1364`, 1)); if (list2.length) {
// list2[0].tacticsId && lcRule.push(handleId(1366, 327, list2[0].tacticsId, `${preIds},74,84,1304,1366`, 3)); const list = config.value[2]?.recordChildren[2]?.recordChildren;
list2[0].tacticsSelectedStatus && lcRule.push(handleId(1364, 327, list2[0].tacticsSelectedStatus, `${preIds},74,84,1304,1364`, 1));
list2[0].tacticsId && lcRule.push(handleId(1366, 339, list[0].blackList.find((e) => e.id === list2[0].tacticsId)?.scoreCardName || '', `${preIds},74,84,1304,1366`, 3));
list2[1].tacticsSelectedStatus && lcRule.push(handleId(1365, 327, list2[1].tacticsSelectedStatus, `${preIds},74,84,1305,1365`, 1)); list2[1].tacticsSelectedStatus && lcRule.push(handleId(1365, 327, list2[1].tacticsSelectedStatus, `${preIds},74,84,1305,1365`, 1));
// list2[1].tacticsId && lcRule.push(handleId(1367, 339, list2[1].tacticsId, `${preIds},74,84,1305,1367`, 3)); list2[1].tacticsId && lcRule.push(handleId(1367, 339, list[1].blackList.find((e) => e.id === list2[1].tacticsId)?.scoreCardName || '', `${preIds},74,84,1305,1367`, 3));
}
// //
data.personalRiskDegreeStrategySelectedStatus && lcRule.push(handleId(1339, 327, data.personalRiskDegreeStrategySelectedStatus, preIds + '74,85,1339', 1)); data.personalRiskDegreeStrategySelectedStatus && lcRule.push(handleId(1339, 327, data.personalRiskDegreeStrategySelectedStatus, preIds + '74,85,1339', 1));
@ -1251,17 +1339,20 @@ const addRecord = async (data: Record<string, any>) => {
// //
const list3 = data.interestRatePricingModelList; const list3 = data.interestRatePricingModelList;
list3[0].tacticsSelectedStatus && lcRule.push(handleId(1310, 327, list3[0].tacticsSelectedStatus, `${preIds},74,86,1308,1310`, 1)); if (list3.length) {
// list3[0].tacticsId && lcRule.push(handleId(1360, 339, list3[0].tacticsId, `${preIds},74,86,1308,1360`, 3)); const list = config.value[2].recordChildren[4].recordChildren;
list3[0].tacticsSelectedStatus && lcRule.push(handleId(1310, 327, list3[0].tacticsSelectedStatus, `${preIds},74,86,1308,1310`, 1));
list3[0].tacticsId && lcRule.push(handleId(1360, 339, list[0].blackList.find((e) => e.id === list3[0].tacticsId)?.modelName || '', `${preIds},74,86,1308,1360`, 3));
list3[1].tacticsSelectedStatus && lcRule.push(handleId(1311, 327, list3[1].tacticsSelectedStatus, `${preIds},74,86,1309,1311`, 1)); list3[1].tacticsSelectedStatus && lcRule.push(handleId(1311, 327, list3[1].tacticsSelectedStatus, `${preIds},74,86,1309,1311`, 1));
// list3[1].tacticsId && lcRule.push(handleId(1361, 339, list3[1].tacticsId, `${preIds},74,86,1309,1361`, 3)); list3[1].tacticsId && lcRule.push(handleId(1361, 339, list[1].blackList.find((e) => e.id === list3[1].tacticsId)?.modelName || '', `${preIds},74,86,1309,1361`, 3));
data.enterpriseQuotaModelSelectedStatus && lcRule.push(handleId(1343, 327, data.enterpriseQuotaModelSelectedStatus, preIds + '74,86,1341,1343', 1)); data.enterpriseQuotaModelSelectedStatus && lcRule.push(handleId(1343, 327, data.enterpriseQuotaModelSelectedStatus, preIds + '74,86,1341,1343', 1));
data.enterpriseQuotaModel && lcRule.push(handleId(1362, 338, data.enterpriseQuotaModel, preIds + ',74,86,1341,1362', 1)); data.enterpriseQuotaModel && lcRule.push(handleId(1362, 338, data.enterpriseQuotaModel, preIds + ',74,86,1341,1362', 1));
list3[2].tacticsSelectedStatus && lcRule.push(handleId(1344, 327, list3[2].tacticsSelectedStatus, `${preIds},74,86,1342,1344`, 1)); list3[2].tacticsSelectedStatus && lcRule.push(handleId(1344, 327, list3[2].tacticsSelectedStatus, `${preIds},74,86,1342,1344`, 1));
// list3[2].tacticsId && lcRule.push(handleId(1363, 339, list3[2].tacticsId, `${preIds},74,86,1342,1363`, 3)); list3[2].tacticsId && lcRule.push(handleId(1363, 339, list3[2].blackList.find((e) => e.id === list3[2].tacticsId)?.modelName || '', `${preIds},74,86,1342,1363`, 3));
}
data.dueDiligenceMode && lcRule.push(handleId(88, 32, data.dueDiligenceMode, preIds + ',87,88', 1)); data.dueDiligenceMode && lcRule.push(handleId(88, 32, data.dueDiligenceMode, preIds + ',87,88', 1));
data.dueDiligenceContent && lcRule.push(handleId(89, 33, data.dueDiligenceContent, preIds + ',87,89', 1)); data.dueDiligenceContent && lcRule.push(handleId(89, 33, data.dueDiligenceContent, preIds + ',87,89', 1));
@ -1286,21 +1377,24 @@ const addRecord = async (data: Record<string, any>) => {
data.guaranteeContract && lcRule.push(handleId(1252, 147, data.guaranteeContract, preIds + ',96,98,313,1252', 1)); data.guaranteeContract && lcRule.push(handleId(1252, 147, data.guaranteeContract, preIds + ',96,98,313,1252', 1));
// //
const list4 = data.bankRiskControlAllocationTacticsList; const list4 = data.postLoanSelectionStrategyList;
list4[0].tacticsSelectedStatus && lcRule.push(handleId(1350, 327, list4[0].tacticsSelectedStatus, `${preIds},99,1345,1350`, 1)); if (list4.length) {
// list4[0].tacticsId && lcRule.push(handleId(1355, 339, govList.value.find((e) => e.strategyId === list4[0].tacticsId)?.strategyName, `${preIds},99,1345,1355`, 3)); const list = config.value[7]?.recordChildren;
list4[0].tacticsSelectedStatus && lcRule.push(handleId(1350, 327, list4[0].tacticsSelectedStatus, `${preIds},99,1345,1350`, 1));
list4[0].tacticsId && lcRule.push(handleId(1355, 339, list[0].blackList.find((e) => e.strategyId === list4[0].tacticsId)?.strategyName || '', `${preIds},99,1345,1355`, 3));
list4[1].tacticsSelectedStatus && lcRule.push(handleId(1351, 327, list4[1].tacticsSelectedStatus, `${preIds},99,1346,1351`, 1)); list4[1].tacticsSelectedStatus && lcRule.push(handleId(1351, 327, list4[1].tacticsSelectedStatus, `${preIds},99,1346,1351`, 1));
// list4[1].tacticsId && lcRule.push(handleId(1356, 339, govList.value.find((e) => e.strategyId === list4[1].tacticsId)?.strategyName, `${preIds},99,1346,1356`, 3)); list4[1].tacticsId && lcRule.push(handleId(1356, 339, list[1].blackList.find((e) => e.strategyId === list4[1].tacticsId)?.strategyName || '', `${preIds},99,1346,1356`, 3));
list4[2].tacticsSelectedStatus && lcRule.push(handleId(1352, 327, list4[2].tacticsSelectedStatus, `${preIds},99,1347,1352`, 1)); list4[2].tacticsSelectedStatus && lcRule.push(handleId(1352, 327, list4[2].tacticsSelectedStatus, `${preIds},99,1347,1352`, 1));
// list4[2].tacticsId && lcRule.push(handleId(1357, 339, govList.value.find((e) => e.strategyId === list4[2].tacticsId)?.strategyName, `${preIds},99,1347,1357`, 3)); list4[2].tacticsId && lcRule.push(handleId(1357, 339, list[2].blackList.find((e) => e.strategyId === list4[2].tacticsId)?.strategyName || '', `${preIds},99,1347,1357`, 3));
list4[3].tacticsSelectedStatus && lcRule.push(handleId(1353, 327, list4[3].tacticsSelectedStatus, `${preIds},99,1348,1353`, 1)); list4[3].tacticsSelectedStatus && lcRule.push(handleId(1353, 327, list4[3].tacticsSelectedStatus, `${preIds},99,1348,1353`, 1));
// list4[3].tacticsId && lcRule.push(handleId(1358, 339, govList.value.find((e) => e.strategyId === list4[3].tacticsId)?.strategyName, `${preIds},99,1348,1358`, 3)); list4[3].tacticsId && lcRule.push(handleId(1358, 339, list[3].blackList.find((e) => e.strategyId === list4[3].tacticsId)?.strategyName || '', `${preIds},99,1348,1358`, 3));
list4[4].tacticsSelectedStatus && lcRule.push(handleId(1354, 327, list4[4].tacticsSelectedStatus, `${preIds},99,1349,1354`, 1)); list4[4].tacticsSelectedStatus && lcRule.push(handleId(1354, 327, list4[4].tacticsSelectedStatus, `${preIds},99,1349,1354`, 1));
// list4[4].tacticsId && lcRule.push(handleId(1359, 339, govList.value.find((e) => e.strategyId === list4[4].tacticsId)?.strategyName, `${preIds},99,1349,1359`, 3)); list4[4].tacticsId && lcRule.push(handleId(1359, 339, list[4].blackList.find((e) => e.strategyId === list4[4].tacticsId)?.strategyName || '', `${preIds},99,1349,1359`, 3));
}
} }
await addOperation({ await addOperation({
@ -1320,6 +1414,27 @@ const preview = (row: Record<string, any>, i: number) => {
curPreviewTitle.value = `查看${assessNames[i]}策略`; curPreviewTitle.value = `查看${assessNames[i]}策略`;
visible.value = true; visible.value = true;
}; };
//
const previewCredits = (row: Record<string, any>, i: number) => {
const { tacticsId } = form.creditScoringStrategyList[i];
curRow.value = {
id: tacticsId,
};
curPreview.value = i ? '513' : '512';
curPreviewTitle.value = `查看${i ? '企业' : '个人'}信用评分策略`;
visible.value = true;
};
//
const previewAfter = (row: Record<string, any>, i: number) => {
const { tacticsId } = form.postLoanSelectionStrategyList[i];
curRow.value = {
strategyId: tacticsId,
strategyName: row.blackList.find((e) => e.strategyId === tacticsId)?.strategyName,
};
curPreview.value = Object.keys(dynamicComponentMap)[i + 9];
curPreviewTitle.value = `查看${afterNames[i]}策略`;
visible.value = true;
};
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>

@ -2,7 +2,6 @@
<!-- 个人额度模型 --> <!-- 个人额度模型 -->
<el-form label-width="90px" <el-form label-width="90px"
label-suffix=":" label-suffix=":"
class="form"
:disabled="disabled"> :disabled="disabled">
<el-form-item label="模型名称"> <el-form-item label="模型名称">
<el-input class="w-[320px]" <el-input class="w-[320px]"
@ -106,7 +105,6 @@ import { ElMessage, ElLoading } from 'element-plus';
import { personalCreditModelDetails, personalCreditModelSaveOrUpdate } from '@/api/model'; import { personalCreditModelDetails, personalCreditModelSaveOrUpdate } from '@/api/model';
import { getProcessInformationBasedOnRoles, addOperation } from '@/api/judgment'; import { getProcessInformationBasedOnRoles, addOperation } from '@/api/judgment';
import type { TableColumnCtx } from 'element-plus'; import type { TableColumnCtx } from 'element-plus';
import { useRouter, useRoute } from 'vue-router';
import { handleId, getIds } from '@/utils/common'; import { handleId, getIds } from '@/utils/common';
import Cookies from 'js-cookie'; import Cookies from 'js-cookie';
@ -131,6 +129,7 @@ const form = ref<Record<string, any>>({
const formProcess = ref<Record<string, any>[]>([]); const formProcess = ref<Record<string, any>[]>([]);
const info = ref<Record<string, any>[]>([]); const info = ref<Record<string, any>[]>([]);
const len = ref<number>(0); const len = ref<number>(0);
let loading = null;
const syncVisible = ref<boolean>(false); const syncVisible = ref<boolean>(false);
// //
const getConfig = async () => { const getConfig = async () => {
@ -190,9 +189,11 @@ const getConfig = async () => {
}); });
} }
form.value.individualCreditModels = result; form.value.individualCreditModels = result;
loading?.close();
}; };
// //
const getDetail = async () => { const getDetail = async () => {
loading = ElLoading.service();
try { try {
if (id.value) { if (id.value) {
const { data } = await personalCreditModelDetails({ const { data } = await personalCreditModelDetails({
@ -300,12 +301,14 @@ const addRecord = async (data: Record<string, any>) => {
parentId: preIds, parentId: preIds,
lcJudgmentRuleReq: rule, lcJudgmentRuleReq: rule,
}); });
loading?.close();
ElMessage.success('提交成功!'); ElMessage.success('提交成功!');
syncVisible.value = false; syncVisible.value = false;
emit('close', 1); emit('close', 1);
}; };
// //
const submit = async (synchronizeUpdate?: number) => { const submit = async (synchronizeUpdate?: number) => {
loading = ElLoading.service();
const param = JSON.parse(JSON.stringify(form.value)); const param = JSON.parse(JSON.stringify(form.value));
param?.individualCreditModels.forEach((e, i) => { param?.individualCreditModels.forEach((e, i) => {
delete e.recordChildren; delete e.recordChildren;

@ -91,6 +91,7 @@ import { Delete } from '@element-plus/icons-vue';
import { pageSizes, pageLayout } from '@/utils/common'; import { pageSizes, pageLayout } from '@/utils/common';
import { quotaModelList, quotaModelDel } from '@/api/model'; import { quotaModelList, quotaModelDel } from '@/api/model';
import Search from '@/components/Search.vue'; import Search from '@/components/Search.vue';
const Detail = defineAsyncComponent(() => import('./Detail.vue')); const Detail = defineAsyncComponent(() => import('./Detail.vue'));
const keyWord = ref<string>(); const keyWord = ref<string>();
@ -147,7 +148,7 @@ const toAdd = () => {
visible.value = true; visible.value = true;
}; };
// //
const toDetail = async (row: Record<string, any>, detail: boolean = false) => { const toDetail = async (row: Record<string, any>, detail = false) => {
i.value++; i.value++;
isDetail.value = detail; isDetail.value = detail;
curRow.value = row; curRow.value = row;

@ -168,11 +168,11 @@ const getConfig = async () => {
}); });
} }
form.value.individualInterestRateModels = result; form.value.individualInterestRateModels = result;
loading.close(); loading?.close();
}; };
// //
const getDetail = async (load?: number) => { const getDetail = async () => {
if (load) loading = ElLoading.service(); loading = ElLoading.service();
try { try {
if (id.value) { if (id.value) {
const { data } = await personalInterestRateDetails({ const { data } = await personalInterestRateDetails({
@ -187,9 +187,7 @@ const getDetail = async (load?: number) => {
} finally { } finally {
} }
}; };
onMounted(() => { onMounted(getDetail);
getDetail(1);
});
interface SpanMethodProps { interface SpanMethodProps {
row: Record<string, any>; row: Record<string, any>;
@ -256,12 +254,14 @@ const addRecord = async (data: Record<string, any>) => {
parentId: preIds, parentId: preIds,
lcJudgmentRuleReq: rule, lcJudgmentRuleReq: rule,
}); });
loading?.close();
ElMessage.success('提交成功!'); ElMessage.success('提交成功!');
syncVisible.value = false; syncVisible.value = false;
emit('close', 1); emit('close', 1);
}; };
// //
const submit = async (synchronizeUpdate?: number) => { const submit = async (synchronizeUpdate?: number) => {
loading = ElLoading.service();
const param = JSON.parse(JSON.stringify(form.value)); const param = JSON.parse(JSON.stringify(form.value));
param?.individualInterestRateModels.forEach((e, i) => { param?.individualInterestRateModels.forEach((e, i) => {
delete e.recordChildren; delete e.recordChildren;

@ -147,7 +147,7 @@ const toAdd = () => {
visible.value = true; visible.value = true;
}; };
// //
const toDetail = async (row: Record<string, any>, detail: boolean = false) => { const toDetail = async (row: Record<string, any>, detail = false) => {
i.value++; i.value++;
isDetail.value = detail; isDetail.value = detail;
curRow.value = row; curRow.value = row;

@ -191,38 +191,12 @@ const getConfig = async () => {
}); });
} }
}); });
// result.push(
// {
// indexId: info.value[10]?.indexId || '',
// modelId: info.value[10]?.modelId || '',
// indexName: '',
// formula: ' =+ ',
// floatingCoefficient: '',
// },
// {
// indexId: info.value[11]?.indexId || '',
// modelId: info.value[11]?.modelId || '',
// indexName: '',
// formula: '--',
// 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: '--',
// 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; form.value.corporateInterestRateModelIndicators = result;
console.log('🚀 ~ getConfig ~ result:', result); loading?.close();
loading.close();
}; };
// //
const getDetail = async (load?: number) => { const getDetail = async () => {
if (load) loading = ElLoading.service(); loading = ElLoading.service();
try { try {
if (id.value) { if (id.value) {
const { data } = await businessInterestRateDetails({ const { data } = await businessInterestRateDetails({
@ -237,9 +211,7 @@ const getDetail = async (load?: number) => {
} finally { } finally {
} }
}; };
onMounted(() => { onMounted(getDetail);
getDetail(1);
});
interface SpanMethodProps { interface SpanMethodProps {
row: Record<string, any>; row: Record<string, any>;
@ -356,12 +328,14 @@ const addRecord = async (data: Record<string, any>) => {
parentId: preIds, parentId: preIds,
lcJudgmentRuleReq: rule, lcJudgmentRuleReq: rule,
}); });
loading?.close();
ElMessage.success('提交成功!'); ElMessage.success('提交成功!');
syncVisible.value = false; syncVisible.value = false;
emit('close', 1); emit('close', 1);
}; };
// //
const submit = async (synchronizeUpdate?: number) => { const submit = async (synchronizeUpdate?: number) => {
loading = ElLoading.service();
const param = JSON.parse(JSON.stringify(form.value)); const param = JSON.parse(JSON.stringify(form.value));
const list = []; const list = [];
param.corporateInterestRateModelIndicators.forEach((e, i) => { param.corporateInterestRateModelIndicators.forEach((e, i) => {

@ -147,7 +147,7 @@ const toAdd = () => {
visible.value = true; visible.value = true;
}; };
// //
const toDetail = async (row: Record<string, any>, detail: boolean = false) => { const toDetail = async (row: Record<string, any>, detail = false) => {
i.value++; i.value++;
isDetail.value = detail; isDetail.value = detail;
curRow.value = row; curRow.value = row;

@ -2,7 +2,8 @@
<el-form label-width="90px" <el-form label-width="90px"
label-suffix=":" label-suffix=":"
class="form" class="form"
:disabled="disabled"> :disabled="disabled"
v-loading="loading">
<el-form-item label="策略名称"> <el-form-item label="策略名称">
<el-input class="w-[320px]" <el-input class="w-[320px]"
placeholder="请输入20以内字符" placeholder="请输入20以内字符"
@ -136,14 +137,14 @@
</el-table-column> </el-table-column>
</el-table> </el-table>
</el-form-item> </el-form-item>
<div v-if="!disabled"
class="flex justify-end mt-3">
<div class="dia-btn cancel"
@click="emit('close')">取消</div>
<div class="dia-btn"
@click="confirmSubmit">确定</div>
</div>
</el-form> </el-form>
<div v-if="!disabled"
class="flex justify-end mt-3">
<div class="dia-btn cancel"
@click="emit('close')">取消</div>
<div class="dia-btn"
@click="confirmSubmit">确定</div>
</div>
<Confirm v-model="syncVisible" <Confirm v-model="syncVisible"
@submit="submit" /> @submit="submit" />
@ -186,6 +187,7 @@ const symbols: Array<Record<string, any>> = [
name: '<=', name: '<=',
}, },
]; ];
const loading = ref<boolean>(false);
const syncVisible = ref<boolean>(false); const syncVisible = ref<boolean>(false);
// //
const getConfig = async () => { const getConfig = async () => {
@ -229,9 +231,11 @@ const getConfig = async () => {
} }
}); });
form.value = result; form.value = result;
loading.value = false;
}; };
// //
const getDetail = async () => { const getDetail = async () => {
loading.value = true;
try { try {
if (strategyId.value) { if (strategyId.value) {
const { data } = await accessStrategyGovernmentBlacklistFind({ const { data } = await accessStrategyGovernmentBlacklistFind({
@ -326,12 +330,14 @@ const addRecord = async (data: Record<string, any>) => {
parentId: preIds, parentId: preIds,
lcJudgmentRuleReq: rule, lcJudgmentRuleReq: rule,
}); });
loading.value = false;
ElMessage.success('提交成功!'); ElMessage.success('提交成功!');
syncVisible.value = false; syncVisible.value = false;
emit('close', 1); emit('close', 1);
}; };
// //
const submit = async (synchronizeUpdate?: number) => { const submit = async (synchronizeUpdate?: number) => {
loading.value = true;
let param = JSON.parse(JSON.stringify(form.value)); let param = JSON.parse(JSON.stringify(form.value));
param.map((e, i) => { param.map((e, i) => {
if (info.value.length) e.id = info.value.find((n) => n.stRecordId === e.stRecordId)?.id; if (info.value.length) e.id = info.value.find((n) => n.stRecordId === e.stRecordId)?.id;

@ -147,7 +147,7 @@ const toAdd = () => {
visible.value = true; visible.value = true;
}; };
// //
const toDetail = async (row: Record<string, any>, detail: boolean = false) => { const toDetail = async (row: Record<string, any>, detail = false) => {
i.value++; i.value++;
isDetail.value = detail; isDetail.value = detail;
curRow.value = row; curRow.value = row;

@ -2,7 +2,8 @@
<el-form label-width="90px" <el-form label-width="90px"
label-suffix=":" label-suffix=":"
class="form" class="form"
:disabled="disabled"> :disabled="disabled"
v-loading="loading">
<el-form-item label="策略名称" <el-form-item label="策略名称"
prop="fundName"> prop="fundName">
<el-input class="w-[320px]" <el-input class="w-[320px]"
@ -125,14 +126,14 @@
</el-table-column> </el-table-column>
</el-table> </el-table>
</el-form-item> </el-form-item>
<div v-if="!disabled"
class="flex justify-end mt-3">
<div class="dia-btn cancel"
@click="emit('close')">取消</div>
<div class="dia-btn"
@click="confirmSubmit">确定</div>
</div>
</el-form> </el-form>
<div v-if="!disabled"
class="flex justify-end mt-3">
<div class="dia-btn cancel"
@click="emit('close')">取消</div>
<div class="dia-btn"
@click="confirmSubmit">确定</div>
</div>
<Confirm v-model="syncVisible" <Confirm v-model="syncVisible"
@submit="submit" /> @submit="submit" />
@ -184,6 +185,7 @@ const symbols: Array<Record<string, any>> = [
name: '<=', name: '<=',
}, },
]; ];
const loading = ref<boolean>(false);
const syncVisible = ref<boolean>(false); const syncVisible = ref<boolean>(false);
// //
const getConfig = async () => { const getConfig = async () => {
@ -213,9 +215,11 @@ const getConfig = async () => {
result.push(temp); result.push(temp);
}); });
form.value = result; form.value = result;
loading.value = false;
}; };
// //
const getDetail = async () => { const getDetail = async () => {
loading.value = true;
try { try {
if (strategyId.value) { if (strategyId.value) {
const { data } = await accessStrategyCreditBlacklistFind({ const { data } = await accessStrategyCreditBlacklistFind({
@ -259,12 +263,14 @@ const addRecord = async (data: Record<string, any>) => {
parentId: preIds, parentId: preIds,
lcJudgmentRuleReq: rule, lcJudgmentRuleReq: rule,
}); });
loading.value = false;
ElMessage.success('提交成功!'); ElMessage.success('提交成功!');
syncVisible.value = false; syncVisible.value = false;
emit('close', 1); emit('close', 1);
}; };
// //
const submit = async (synchronizeUpdate?: number) => { const submit = async (synchronizeUpdate?: number) => {
loading.value = true;
let param = JSON.parse(JSON.stringify(form.value)); let param = JSON.parse(JSON.stringify(form.value));
param.map((e, i) => { param.map((e, i) => {
if (info.value.length) e.id = info.value.find((n) => n.stRecordId === e.stRecordId)?.id; if (info.value.length) e.id = info.value.find((n) => n.stRecordId === e.stRecordId)?.id;

@ -73,7 +73,7 @@
class="px-3 py-2 justify-end"></el-pagination> class="px-3 py-2 justify-end"></el-pagination>
<el-drawer v-model="visible" <el-drawer v-model="visible"
:title="(isDetail ? '查看' : curRow.governmentId ? '编辑' : '新增') + '征信黑名单策略'" :title="(isDetail ? '查看' : curRow.strategyId ? '编辑' : '新增') + '征信黑名单策略'"
size="100%" size="100%"
custom-class="model-drawer"> custom-class="model-drawer">
<Detail v-model:row="curRow" <Detail v-model:row="curRow"
@ -91,6 +91,7 @@ import { Delete } from '@element-plus/icons-vue';
import { pageSizes, pageLayout } from '@/utils/common'; import { pageSizes, pageLayout } from '@/utils/common';
import { accessStrategyCreditBlacklist, accessStrategyCreditBlacklistDel } from '@/api/model'; import { accessStrategyCreditBlacklist, accessStrategyCreditBlacklistDel } from '@/api/model';
import Search from '@/components/Search.vue'; import Search from '@/components/Search.vue';
const Detail = defineAsyncComponent(() => import('./Detail.vue')); const Detail = defineAsyncComponent(() => import('./Detail.vue'));
const keyWord = ref<string>(); const keyWord = ref<string>();
@ -147,7 +148,7 @@ const toAdd = () => {
visible.value = true; visible.value = true;
}; };
// //
const toDetail = async (row: Record<string, any>, detail: boolean = false) => { const toDetail = async (row: Record<string, any>, detail = false) => {
i.value++; i.value++;
isDetail.value = detail; isDetail.value = detail;
curRow.value = row; curRow.value = row;

@ -2,7 +2,8 @@
<el-form label-width="90px" <el-form label-width="90px"
label-suffix=":" label-suffix=":"
class="form" class="form"
:disabled="disabled"> :disabled="disabled"
v-loading="loading">
<el-form-item label="策略名称" <el-form-item label="策略名称"
prop="fundName"> prop="fundName">
<el-input class="w-[320px]" <el-input class="w-[320px]"
@ -170,14 +171,14 @@
</el-table-column> </el-table-column>
</el-table> </el-table>
</el-form-item> </el-form-item>
<div v-if="!disabled"
class="flex justify-end mt-3">
<div class="dia-btn cancel"
@click="emit('close')">取消</div>
<div class="dia-btn"
@click="confirmSubmit">确定</div>
</div>
</el-form> </el-form>
<div v-if="!disabled"
class="flex justify-end mt-3">
<div class="dia-btn cancel"
@click="emit('close')">取消</div>
<div class="dia-btn"
@click="confirmSubmit">确定</div>
</div>
<Confirm v-model="syncVisible" <Confirm v-model="syncVisible"
@submit="submit" /> @submit="submit" />
@ -253,6 +254,7 @@ const tdNames: Record<string, any> = {
350: '内身份证或手机号申请次数', 350: '内身份证或手机号申请次数',
351: '内同一个设备或手机号申请被拒次数过多。', 351: '内同一个设备或手机号申请被拒次数过多。',
}; };
const loading = ref<boolean>(false);
const syncVisible = ref<boolean>(false); const syncVisible = ref<boolean>(false);
// //
const getConfig = async () => { const getConfig = async () => {
@ -348,9 +350,11 @@ const getConfig = async () => {
}); });
}); });
form.value = result; form.value = result;
loading.value = false;
}; };
// //
const getDetail = async () => { const getDetail = async () => {
loading.value = true;
try { try {
if (strategyId.value) { if (strategyId.value) {
const { data } = await accessStrategyBusinessBlacklistFind({ const { data } = await accessStrategyBusinessBlacklistFind({
@ -445,12 +449,14 @@ const addRecord = async (data: Record<string, any>) => {
parentId: preIds, parentId: preIds,
lcJudgmentRuleReq: rule, lcJudgmentRuleReq: rule,
}); });
loading.value = false;
ElMessage.success('提交成功!'); ElMessage.success('提交成功!');
syncVisible.value = false; syncVisible.value = false;
emit('close', 1); emit('close', 1);
}; };
// //
const submit = async (synchronizeUpdate?: number) => { const submit = async (synchronizeUpdate?: number) => {
loading.value = true;
let param = [ let param = [
{ {
id: info.value.find((n) => n.stRecordId === 318)?.id, id: info.value.find((n) => n.stRecordId === 318)?.id,

@ -91,6 +91,7 @@ import { Delete } from '@element-plus/icons-vue';
import { pageSizes, pageLayout } from '@/utils/common'; import { pageSizes, pageLayout } from '@/utils/common';
import { accessStrategyBusinessBlacklist, accessStrategyBusinessBlacklistDel } from '@/api/model'; import { accessStrategyBusinessBlacklist, accessStrategyBusinessBlacklistDel } from '@/api/model';
import Search from '@/components/Search.vue'; import Search from '@/components/Search.vue';
const Detail = defineAsyncComponent(() => import('./Detail.vue')); const Detail = defineAsyncComponent(() => import('./Detail.vue'));
const keyWord = ref<string>(); const keyWord = ref<string>();
@ -147,7 +148,7 @@ const toAdd = () => {
visible.value = true; visible.value = true;
}; };
// //
const toDetail = async (row: Record<string, any>, detail: boolean = false) => { const toDetail = async (row: Record<string, any>, detail = false) => {
i.value++; i.value++;
isDetail.value = detail; isDetail.value = detail;
curRow.value = row; curRow.value = row;

@ -2,7 +2,8 @@
<el-form label-width="90px" <el-form label-width="90px"
label-suffix=":" label-suffix=":"
class="form" class="form"
:disabled="disabled"> :disabled="disabled"
v-loading="loading">
<el-form-item label="策略名称" <el-form-item label="策略名称"
prop="fundName"> prop="fundName">
<el-input class="w-[320px]" <el-input class="w-[320px]"
@ -141,14 +142,14 @@
</el-table-column> </el-table-column>
</el-table> </el-table>
</el-form-item> </el-form-item>
<div v-if="!disabled"
class="flex justify-end mt-3">
<div class="dia-btn cancel"
@click="emit('close')">取消</div>
<div class="dia-btn"
@click="confirmSubmit">确定</div>
</div>
</el-form> </el-form>
<div v-if="!disabled"
class="flex justify-end mt-3">
<div class="dia-btn cancel"
@click="emit('close')">取消</div>
<div class="dia-btn"
@click="confirmSubmit">确定</div>
</div>
<Confirm v-model="syncVisible" <Confirm v-model="syncVisible"
@submit="submit" /> @submit="submit" />
@ -187,6 +188,7 @@ const whethers: Record<string, any>[] = [
name: '否', name: '否',
}, },
]; ];
const loading = ref<boolean>(false);
const syncVisible = ref<boolean>(false); const syncVisible = ref<boolean>(false);
// //
const getConfig = async () => { const getConfig = async () => {
@ -215,9 +217,11 @@ const getConfig = async () => {
remark: '不存在未结清情况', remark: '不存在未结清情况',
}); });
form.value = result; form.value = result;
loading.value = false;
}; };
// //
const getDetail = async () => { const getDetail = async () => {
loading.value = true;
try { try {
if (strategyId.value) { if (strategyId.value) {
const { data } = await accessStrategyInlineBlacklistFind({ const { data } = await accessStrategyInlineBlacklistFind({
@ -273,9 +277,14 @@ const addRecord = async (data: Record<string, any>) => {
parentId: preIds, parentId: preIds,
lcJudgmentRuleReq: rule, lcJudgmentRuleReq: rule,
}); });
loading.value = false;
ElMessage.success('提交成功!');
syncVisible.value = false;
emit('close', 1);
}; };
// //
const submit = async (synchronizeUpdate?: number) => { const submit = async (synchronizeUpdate?: number) => {
loading.value = true;
let param = JSON.parse(JSON.stringify(form.value)); let param = JSON.parse(JSON.stringify(form.value));
param.map((e, i) => { param.map((e, i) => {
if (info.value.length) e.id = info.value.find((n) => n.stRecordId === e.stRecordId)?.id; if (info.value.length) e.id = info.value.find((n) => n.stRecordId === e.stRecordId)?.id;
@ -293,9 +302,6 @@ const submit = async (synchronizeUpdate?: number) => {
inlineBlacklistList: param, inlineBlacklistList: param,
}); });
addRecord(param); addRecord(param);
ElMessage.success('提交成功!');
syncVisible.value = false;
emit('close', 1);
}; };
const confirmSubmit = () => { const confirmSubmit = () => {
if (!strategyName.value) return ElMessage.error('请输入策略名称!'); if (!strategyName.value) return ElMessage.error('请输入策略名称!');

@ -91,6 +91,7 @@ import { Delete } from '@element-plus/icons-vue';
import { pageSizes, pageLayout } from '@/utils/common'; import { pageSizes, pageLayout } from '@/utils/common';
import { accessStrategyInlineBlacklist, accessStrategyInlineBlacklistDel } from '@/api/model'; import { accessStrategyInlineBlacklist, accessStrategyInlineBlacklistDel } from '@/api/model';
import Search from '@/components/Search.vue'; import Search from '@/components/Search.vue';
const Detail = defineAsyncComponent(() => import('./Detail.vue')); const Detail = defineAsyncComponent(() => import('./Detail.vue'));
const keyWord = ref<string>(); const keyWord = ref<string>();
@ -147,7 +148,7 @@ const toAdd = () => {
visible.value = true; visible.value = true;
}; };
// //
const toDetail = async (row: Record<string, any>, detail: boolean = false) => { const toDetail = async (row: Record<string, any>, detail = false) => {
i.value++; i.value++;
isDetail.value = detail; isDetail.value = detail;
curRow.value = row; curRow.value = row;

@ -2,7 +2,8 @@
<el-form label-width="90px" <el-form label-width="90px"
label-suffix=":" label-suffix=":"
class="form" class="form"
:disabled="disabled"> :disabled="disabled"
v-loading="loading">
<el-form-item label="策略名称" <el-form-item label="策略名称"
prop="fundName"> prop="fundName">
<el-input class="w-[320px]" <el-input class="w-[320px]"
@ -285,14 +286,14 @@
</el-table-column> </el-table-column>
</el-table> </el-table>
</el-form-item> </el-form-item>
<div v-if="!disabled"
class="flex justify-end mt-3">
<div class="dia-btn cancel"
@click="emit('close')">取消</div>
<div class="dia-btn"
@click="confirmSubmit">确定</div>
</div>
</el-form> </el-form>
<div v-if="!disabled"
class="flex justify-end mt-3">
<div class="dia-btn cancel"
@click="emit('close')">取消</div>
<div class="dia-btn"
@click="confirmSubmit">确定</div>
</div>
<Confirm v-model="syncVisible" <Confirm v-model="syncVisible"
@submit="submit" /> @submit="submit" />
@ -322,6 +323,7 @@ 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> = ['年', '月', '天'];
const have: Array<string> = ['无', '有']; const have: Array<string> = ['无', '有'];
const loading = ref<boolean>(false);
const syncVisible = ref<boolean>(false); const syncVisible = ref<boolean>(false);
// //
const getConfig = async () => { const getConfig = async () => {
@ -346,9 +348,11 @@ const getConfig = async () => {
result.push(temp); result.push(temp);
}); });
form.value = result; form.value = result;
loading.value = false;
}; };
// //
const getDetail = async () => { const getDetail = async () => {
loading.value = true;
try { try {
if (strategyId.value) { if (strategyId.value) {
const { data } = await accessStrategyEnterpriseBlacklistFind({ const { data } = await accessStrategyEnterpriseBlacklistFind({
@ -391,12 +395,14 @@ const addRecord = async (data: Record<string, any>) => {
parentId: preIds, parentId: preIds,
lcJudgmentRuleReq: rule, lcJudgmentRuleReq: rule,
}); });
loading.value = false;
ElMessage.success('提交成功!'); ElMessage.success('提交成功!');
syncVisible.value = false; syncVisible.value = false;
emit('close', 1); emit('close', 1);
}; };
// //
const submit = async (synchronizeUpdate?: number) => { const submit = async (synchronizeUpdate?: number) => {
loading.value = true;
let param = []; let param = [];
form.value.map((e, i) => { form.value.map((e, i) => {
const temp = { const temp = {

@ -91,6 +91,7 @@ import { Delete } from '@element-plus/icons-vue';
import { pageSizes, pageLayout } from '@/utils/common'; import { pageSizes, pageLayout } from '@/utils/common';
import { accessStrategyEnterpriseBlacklist, accessStrategyEnterpriseBlacklistDel } from '@/api/model'; import { accessStrategyEnterpriseBlacklist, accessStrategyEnterpriseBlacklistDel } from '@/api/model';
import Search from '@/components/Search.vue'; import Search from '@/components/Search.vue';
const Detail = defineAsyncComponent(() => import('./Detail.vue')); const Detail = defineAsyncComponent(() => import('./Detail.vue'));
const keyWord = ref<string>(); const keyWord = ref<string>();
@ -147,7 +148,7 @@ const toAdd = () => {
visible.value = true; visible.value = true;
}; };
// //
const toDetail = async (row: Record<string, any>, detail: boolean = false) => { const toDetail = async (row: Record<string, any>, detail = false) => {
i.value++; i.value++;
isDetail.value = detail; isDetail.value = detail;
curRow.value = row; curRow.value = row;

@ -2,7 +2,8 @@
<el-form label-width="90px" <el-form label-width="90px"
label-suffix=":" label-suffix=":"
class="form" class="form"
:disabled="disabled"> :disabled="disabled"
v-loading="loading">
<el-form-item label="策略名称" <el-form-item label="策略名称"
prop="fundName"> prop="fundName">
<el-input class="w-[320px]" <el-input class="w-[320px]"
@ -133,14 +134,14 @@
</el-table-column> </el-table-column>
</el-table> </el-table>
</el-form-item> </el-form-item>
<div v-if="!disabled"
class="flex justify-end mt-3">
<div class="dia-btn cancel"
@click="emit('close')">取消</div>
<div class="dia-btn"
@click="confirmSubmit">确定</div>
</div>
</el-form> </el-form>
<div v-if="!disabled"
class="flex justify-end mt-3">
<div class="dia-btn cancel"
@click="emit('close')">取消</div>
<div class="dia-btn"
@click="confirmSubmit">确定</div>
</div>
<Confirm v-model="syncVisible" <Confirm v-model="syncVisible"
@submit="submit" /> @submit="submit" />
@ -171,6 +172,7 @@ 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> = ['年', '月', '天'];
const have: Array<string> = ['否', '是']; const have: Array<string> = ['否', '是'];
const loading = ref<boolean>(false);
const syncVisible = ref<boolean>(false); const syncVisible = ref<boolean>(false);
// //
const getConfig = async () => { const getConfig = async () => {
@ -274,9 +276,11 @@ const getConfig = async () => {
}); });
}); });
form.value = result; form.value = result;
loading.value = false;
}; };
// //
const getDetail = async () => { const getDetail = async () => {
loading.value = true;
try { try {
if (strategyId.value) { if (strategyId.value) {
const { data } = await accessStrategyAntiFraudStrategyFind({ const { data } = await accessStrategyAntiFraudStrategyFind({
@ -369,12 +373,14 @@ const addRecord = async (data: Record<string, any>) => {
parentId: preIds, parentId: preIds,
lcJudgmentRuleReq: rule, lcJudgmentRuleReq: rule,
}); });
loading.value = false;
ElMessage.success('提交成功!'); ElMessage.success('提交成功!');
syncVisible.value = false; syncVisible.value = false;
emit('close', 1); emit('close', 1);
}; };
// //
const submit = async (synchronizeUpdate?: number) => { const submit = async (synchronizeUpdate?: number) => {
loading.value = true;
let param = [ let param = [
{ {
id: info.value.find((n) => n.stRecordId === 384)?.id, id: info.value.find((n) => n.stRecordId === 384)?.id,

@ -91,6 +91,7 @@ import { Delete } from '@element-plus/icons-vue';
import { pageSizes, pageLayout } from '@/utils/common'; import { pageSizes, pageLayout } from '@/utils/common';
import { accessStrategyAntiFraudStrategy, accessStrategyAntiFraudStrategyDel } from '@/api/model'; import { accessStrategyAntiFraudStrategy, accessStrategyAntiFraudStrategyDel } from '@/api/model';
import Search from '@/components/Search.vue'; import Search from '@/components/Search.vue';
const Detail = defineAsyncComponent(() => import('./Detail.vue')); const Detail = defineAsyncComponent(() => import('./Detail.vue'));
const keyWord = ref<string>(); const keyWord = ref<string>();
@ -147,7 +148,7 @@ const toAdd = () => {
visible.value = true; visible.value = true;
}; };
// //
const toDetail = async (row: Record<string, any>, detail: boolean = false) => { const toDetail = async (row: Record<string, any>, detail = false) => {
i.value++; i.value++;
isDetail.value = detail; isDetail.value = detail;
curRow.value = row; curRow.value = row;

@ -2,7 +2,8 @@
<el-form label-width="90px" <el-form label-width="90px"
label-suffix=":" label-suffix=":"
class="form" class="form"
:disabled="disabled"> :disabled="disabled"
v-loading="loading">
<el-form-item label="策略名称" <el-form-item label="策略名称"
prop="fundName"> prop="fundName">
<el-input class="w-[320px]" <el-input class="w-[320px]"
@ -74,14 +75,14 @@
</el-table-column> </el-table-column>
</el-table> </el-table>
</el-form-item> </el-form-item>
<div v-if="!disabled"
class="flex justify-end mt-3">
<div class="dia-btn cancel"
@click="emit('close')">取消</div>
<div class="dia-btn"
@click="confirmSubmit">确定</div>
</div>
</el-form> </el-form>
<div v-if="!disabled"
class="flex justify-end mt-3">
<div class="dia-btn cancel"
@click="emit('close')">取消</div>
<div class="dia-btn"
@click="confirmSubmit">确定</div>
</div>
<Confirm v-model="syncVisible" <Confirm v-model="syncVisible"
@submit="submit" /> @submit="submit" />
@ -108,6 +109,7 @@ const emit = defineEmits(['clsoe']);
const form = ref<Record<string, any>[]>([]); const form = ref<Record<string, any>[]>([]);
const { strategyId, strategyName } = toRefs(props.row); const { strategyId, strategyName } = toRefs(props.row);
const info = ref<Record<string, any>[]>([]); const info = ref<Record<string, any>[]>([]);
const loading = ref<boolean>(false);
const syncVisible = ref<boolean>(false); const syncVisible = ref<boolean>(false);
// //
const getConfig = async () => { const getConfig = async () => {
@ -138,9 +140,11 @@ const getConfig = async () => {
}); });
}); });
form.value = result; form.value = result;
loading.value = false;
}; };
// //
const getDetail = async () => { const getDetail = async () => {
loading.value = true;
try { try {
if (strategyId.value) { if (strategyId.value) {
const { data } = await accessStrategyNegativeIndustryStrategyFind({ const { data } = await accessStrategyNegativeIndustryStrategyFind({
@ -213,12 +217,14 @@ const addRecord = async (data: Record<string, any>) => {
parentId: preIds, parentId: preIds,
lcJudgmentRuleReq: rule, lcJudgmentRuleReq: rule,
}); });
loading.value = false;
ElMessage.success('提交成功!'); ElMessage.success('提交成功!');
syncVisible.value = false; syncVisible.value = false;
emit('close', 1); emit('close', 1);
}; };
// //
const submit = async (synchronizeUpdate?: number) => { const submit = async (synchronizeUpdate?: number) => {
loading.value = true;
let param = []; let param = [];
form.value.map((e, i) => { form.value.map((e, i) => {
if (e.index) { if (e.index) {

@ -91,6 +91,7 @@ import { Delete } from '@element-plus/icons-vue';
import { pageSizes, pageLayout } from '@/utils/common'; import { pageSizes, pageLayout } from '@/utils/common';
import { accessStrategyNegativeIndustryStrategy, accessStrategyNegativeIndustryStrategyDel } from '@/api/model'; import { accessStrategyNegativeIndustryStrategy, accessStrategyNegativeIndustryStrategyDel } from '@/api/model';
import Search from '@/components/Search.vue'; import Search from '@/components/Search.vue';
const Detail = defineAsyncComponent(() => import('./Detail.vue')); const Detail = defineAsyncComponent(() => import('./Detail.vue'));
const keyWord = ref<string>(); const keyWord = ref<string>();
@ -147,7 +148,7 @@ const toAdd = () => {
visible.value = true; visible.value = true;
}; };
// //
const toDetail = async (row: Record<string, any>, detail: boolean = false) => { const toDetail = async (row: Record<string, any>, detail = false) => {
i.value++; i.value++;
isDetail.value = detail; isDetail.value = detail;
curRow.value = row; curRow.value = row;

@ -2,7 +2,8 @@
<el-form label-width="90px" <el-form label-width="90px"
label-suffix=":" label-suffix=":"
class="form" class="form"
:disabled="disabled"> :disabled="disabled"
v-loading="loading">
<el-form-item label="策略名称"> <el-form-item label="策略名称">
<el-input class="w-[320px]" <el-input class="w-[320px]"
placeholder="请输入20以内字符" placeholder="请输入20以内字符"
@ -55,14 +56,14 @@
type="textarea" type="textarea"
v-model="form.description" /> v-model="form.description" />
</el-form-item> </el-form-item>
<div v-if="!disabled"
class="flex justify-end mt-3">
<div class="dia-btn cancel"
@click="emit('close')">取消</div>
<div class="dia-btn"
@click="confirmSubmit">确定</div>
</div>
</el-form> </el-form>
<div v-if="!disabled"
class="flex justify-end mt-3">
<div class="dia-btn cancel"
@click="emit('close')">取消</div>
<div class="dia-btn"
@click="confirmSubmit">确定</div>
</div>
<Confirm v-model="syncVisible" <Confirm v-model="syncVisible"
@submit="submit" /> @submit="submit" />
@ -97,6 +98,7 @@ const form = reactive({
description: '', description: '',
scoringObject: 0, scoringObject: 0,
}); });
const loading = ref<boolean>(false);
const syncVisible = ref<boolean>(false); const syncVisible = ref<boolean>(false);
// //
@ -126,9 +128,11 @@ const getConfig = async () => {
}); });
}); });
list.value = result; list.value = result;
loading.value = false;
}; };
// //
const getDetail = async () => { const getDetail = async () => {
loading.value = true;
if (id.value) { if (id.value) {
try { try {
const res = await findCredit(id.value); const res = await findCredit(id.value);
@ -240,13 +244,14 @@ const addRecord = async () => {
parentId: preIds, parentId: preIds,
lcJudgmentRuleReq: lcRule, lcJudgmentRuleReq: lcRule,
}); });
loading.value = false;
ElMessage.success('提交成功!'); ElMessage.success('提交成功!');
syncVisible.value = false; syncVisible.value = false;
emit('close', 1); emit('close', 1);
}; };
// //
const submit = async (synchronizeUpdate?: number) => { const submit = async (synchronizeUpdate?: number) => {
if (!form.scoreCardName) return ElMessage.error('请输入评分卡名称'); loading.value = true;
const param = []; const param = [];
list.value.forEach((e) => { list.value.forEach((e) => {

@ -91,6 +91,7 @@ import { Delete } from '@element-plus/icons-vue';
import { pageSizes, pageLayout } from '@/utils/common'; import { pageSizes, pageLayout } from '@/utils/common';
import { listCredit, delCredit } from '@/api/model'; import { listCredit, delCredit } from '@/api/model';
import Search from '@/components/Search.vue'; import Search from '@/components/Search.vue';
const Detail = defineAsyncComponent(() => import('./Detail.vue')); const Detail = defineAsyncComponent(() => import('./Detail.vue'));
const keyWord = ref<string>(); const keyWord = ref<string>();
@ -145,7 +146,7 @@ const toAdd = () => {
visible.value = true; visible.value = true;
}; };
// //
const toDetail = async (row: Record<string, any>, detail: boolean = false) => { const toDetail = async (row: Record<string, any>, detail = false) => {
i.value++; i.value++;
isDetail.value = detail; isDetail.value = detail;
curRow.value = row; curRow.value = row;

@ -2,7 +2,8 @@
<el-form label-width="90px" <el-form label-width="90px"
label-suffix=":" label-suffix=":"
class="form" class="form"
:disabled="disabled"> :disabled="disabled"
v-loading="loading">
<el-form-item label="策略名称"> <el-form-item label="策略名称">
<el-input class="w-[320px]" <el-input class="w-[320px]"
placeholder="请输入20以内字符" placeholder="请输入20以内字符"
@ -120,14 +121,14 @@
type="textarea" type="textarea"
v-model="form.description" /> v-model="form.description" />
</el-form-item> </el-form-item>
<div v-if="!disabled"
class="flex justify-end mt-3">
<div class="dia-btn cancel"
@click="emit('close')">取消</div>
<div class="dia-btn"
@click="confirmSubmit">确定</div>
</div>
</el-form> </el-form>
<div v-if="!disabled"
class="flex justify-end mt-3">
<div class="dia-btn cancel"
@click="emit('close')">取消</div>
<div class="dia-btn"
@click="confirmSubmit">确定</div>
</div>
<Confirm v-model="syncVisible" <Confirm v-model="syncVisible"
@submit="submit" /> @submit="submit" />
@ -162,6 +163,7 @@ const form = reactive({
description: '', description: '',
scoringObject: 1, scoringObject: 1,
}); });
const loading = ref<boolean>(false);
const syncVisible = ref<boolean>(false); const syncVisible = ref<boolean>(false);
// //
@ -542,9 +544,11 @@ const getConfig = async () => {
result[51].score = detail.value[37]?.dimensionIndexList[0]?.score; result[51].score = detail.value[37]?.dimensionIndexList[0]?.score;
} }
list.value = result; list.value = result;
loading.value = false;
}; };
// //
const getDetail = async () => { const getDetail = async () => {
loading.value = true;
if (id.value) { if (id.value) {
try { try {
const res = await findCredit(id.value); const res = await findCredit(id.value);
@ -751,13 +755,14 @@ const addRecord = async () => {
parentId: preIds, parentId: preIds,
lcJudgmentRuleReq: lcRule, lcJudgmentRuleReq: lcRule,
}); });
loading.value = false;
ElMessage.success('提交成功!'); ElMessage.success('提交成功!');
syncVisible.value = false; syncVisible.value = false;
emit('close', 1); emit('close', 1);
}; };
// //
const submit = async (synchronizeUpdate?: number) => { const submit = async (synchronizeUpdate?: number) => {
if (!form.scoreCardName) return ElMessage.error('请输入评分卡名称'); loading.value = true;
const param = []; const param = [];
list.value.forEach((e, i) => { list.value.forEach((e, i) => {

@ -91,6 +91,7 @@ import { Delete } from '@element-plus/icons-vue';
import { pageSizes, pageLayout } from '@/utils/common'; import { pageSizes, pageLayout } from '@/utils/common';
import { listCredit, delCredit } from '@/api/model'; import { listCredit, delCredit } from '@/api/model';
import Search from '@/components/Search.vue'; import Search from '@/components/Search.vue';
const Detail = defineAsyncComponent(() => import('./Detail.vue')); const Detail = defineAsyncComponent(() => import('./Detail.vue'));
const keyWord = ref<string>(); const keyWord = ref<string>();
@ -145,7 +146,7 @@ const toAdd = () => {
visible.value = true; visible.value = true;
}; };
// //
const toDetail = async (row: Record<string, any>, detail: boolean = false) => { const toDetail = async (row: Record<string, any>, detail = false) => {
i.value++; i.value++;
isDetail.value = detail; isDetail.value = detail;
curRow.value = row; curRow.value = row;

@ -1,70 +1,69 @@
<template> <template>
<!-- 风险度策略-信用评分基础系数 --> <!-- 风险度策略-信用评分基础系数 -->
<div class="mb-3 text-sm font-semibold"> <div v-loading="loading">
单笔贷款风险度公式 <div class="mb-3 text-sm font-semibold">
<span class="text-[#0034ad]">单笔贷款风险度=</span> 单笔贷款风险度公式
<span class="text-[#8f24ff]">信用评分基础系数</span> <span class="text-[#0034ad]">单笔贷款风险度=</span>
<span class="text-[#0034ad]"> * </span> <span class="text-[#8f24ff]">信用评分基础系数</span>
<span class="text-[#5cc12b]">担保方式基础系数</span> <span class="text-[#0034ad]"> * </span>
<span class="text-[#0034ad]"> * </span> <span class="text-[#5cc12b]">担保方式基础系数</span>
<span class="text-[#ed8269]">贷款期限基础系数</span> <span class="text-[#0034ad]"> * </span>
</div> <span class="text-[#ed8269]">贷款期限基础系数</span>
<h6 class="mb-3 text-sm text-[#006BFF] font-semibold">个人评分系数配置</h6> </div>
<el-table class="c-table" <h6 class="mb-3 text-sm text-[#006BFF] font-semibold">个人评分系数配置</h6>
:data="form.slice(0,5)" <el-table class="c-table"
border> :data="form.slice(0,5)"
<el-table-column prop="recordName" border>
label="信用等级" <el-table-column prop="recordName"
min-width="150" label="信用等级"
align="center"> min-width="150"
</el-table-column> align="center">
<el-table-column label="系数" </el-table-column>
min-width="150" <el-table-column label="系数"
align="center"> min-width="150"
<template #default="{ row }"> align="center">
<el-input placeholder="输入系数" <template #default="{ row }">
v-model="row.coefficient"></el-input> <el-input placeholder="输入系数"
</template> v-model="row.coefficient"></el-input>
</el-table-column> </template>
</el-table> </el-table-column>
</el-table>
<h6 class="mt-5 mb-3 text-sm text-[#006BFF] font-semibold">企业评分系数配置</h6> <h6 class="mt-5 mb-3 text-sm text-[#006BFF] font-semibold">企业评分系数配置</h6>
<el-table class="c-table" <el-table class="c-table"
:data="form.slice(5)" :data="form.slice(5)"
border> border>
<el-table-column prop="recordName" <el-table-column prop="recordName"
label="信用等级" label="信用等级"
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="150"
align="center"> align="center">
<template #default="{ row }"> <template #default="{ row }">
<el-input placeholder="输入系数" <el-input placeholder="输入系数"
v-model="row.coefficient"></el-input> v-model="row.coefficient"></el-input>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
<div class="flex justify-end"> <div class="flex justify-end">
<div class="submit" <div class="submit"
@click="submit">完成配置</div> @click="submit">完成配置</div>
</div>
</div> </div>
</template> </template>
<script setup lang="ts"> <script setup lang="ts">
import { ref, onMounted } from 'vue'; import { ref, onMounted } from 'vue';
import { ElMessage, ElLoading } from 'element-plus'; import { ElMessage } from 'element-plus';
import { detailRick, saveRick } from '@/api/model'; import { detailRick, saveRick } from '@/api/model';
import { getProcessInformationBasedOnRoles, addOperation } from '@/api/judgment'; import { getProcessInformationBasedOnRoles, addOperation } from '@/api/judgment';
import { useRouter, useRoute } from 'vue-router';
import { handleId, getIds } from '@/utils/common'; import { handleId, getIds } from '@/utils/common';
import Cookies from 'js-cookie'; import Cookies from 'js-cookie';
const router = useRouter(); const loading = ref<boolean>(false);
const route = useRoute();
let loading = null;
const form = ref<Record<string, any>[]>([]); const form = ref<Record<string, any>[]>([]);
const info = ref<Record<string, any>[]>([]); const info = ref<Record<string, any>[]>([]);
// //
@ -86,17 +85,17 @@ const getConfig = async () => {
}); });
}); });
form.value = result; form.value = result;
loading.close(); loading.value = false;
}; };
// //
const getDetail = async (load?: number) => { const getDetail = async (load?: number) => {
if (load) loading = ElLoading.service(); if (load) loading.value = true;
try { try {
const { data } = await detailRick(1); const { data } = await detailRick(1);
info.value = data; info.value = data;
getConfig(); getConfig();
} catch (e) { } catch (e) {
if (loading) loading.close(); loading.value = false;
} }
}; };
onMounted(() => { onMounted(() => {
@ -105,7 +104,7 @@ onMounted(() => {
// //
const submit = async () => { const submit = async () => {
loading = ElLoading.service(); loading.value = true;
await saveRick({ riskDegreeStrategyList: form.value }); await saveRick({ riskDegreeStrategyList: form.value });
addRecord(); addRecord();
getDetail(); getDetail();

@ -1,39 +1,42 @@
<template> <template>
<!-- 风险度策略-担保方式基础系数 --> <!-- 风险度策略-担保方式基础系数 -->
<div class="mb-3 text-sm font-semibold"> <div v-loading="loading">
单笔贷款风险度公式 <div class="mb-3 text-sm font-semibold">
<span class="text-[#0034ad]">单笔贷款风险度=</span> 单笔贷款风险度公式
<span class="text-[#8f24ff]">信用等级基础系数</span> <span class="text-[#0034ad]">单笔贷款风险度=</span>
<span class="text-[#0034ad]"> * </span> <span class="text-[#8f24ff]">信用等级基础系数</span>
<span class="text-[#5cc12b]">担保方式基础系数</span> <span class="text-[#0034ad]"> * </span>
<span class="text-[#0034ad]"> * </span> <span class="text-[#5cc12b]">担保方式基础系数</span>
<span class="text-[#ed8269]">贷款期限基础系数</span> <span class="text-[#0034ad]"> * </span>
</div> <span class="text-[#ed8269]">贷款期限基础系数</span>
<el-table class="c-table" </div>
:data="form" <el-table class="c-table"
border> :data="form"
<el-table-column prop="recordName" border
label="信用等级" max-height="calc(100vh - 230px)">
min-width="150"> <el-table-column prop="recordName"
<template #default="{ row, $index }"> label="信用等级"
<p :class="$index === 5 || $index === 6 || $index === 7 ? 'pl-20' : !$index || $index === 1 || $index === 10 || $index === 23 ? '' : 'pl-10'">{{ row.recordName }}</p> min-width="150">
</template> <template #default="{ row, $index }">
</el-table-column> <p :class="$index === 5 || $index === 6 || $index === 7 ? 'pl-20' : !$index || $index === 1 || $index === 10 || $index === 23 ? '' : 'pl-10'">{{ row.recordName }}</p>
<el-table-column label="系数" </template>
min-width="150" </el-table-column>
align="center"> <el-table-column label="系数"
<template #default="{ row, $index }"> min-width="150"
<p v-if="$index === 1 || $index === 4 || $index === 10 || $index === 23">--</p> align="center">
<el-input v-else <template #default="{ row, $index }">
placeholder="输入系数" <p v-if="$index === 1 || $index === 4 || $index === 10 || $index === 23">--</p>
v-model="row.coefficient"></el-input> <el-input v-else
</template> placeholder="输入系数"
</el-table-column> v-model="row.coefficient"></el-input>
</el-table> </template>
</el-table-column>
</el-table>
<div class="flex justify-end"> <div class="flex justify-end">
<div class="submit" <div class="submit"
@click="submit">完成配置</div> @click="submit">完成配置</div>
</div>
</div> </div>
</template> </template>
@ -42,13 +45,10 @@ import { ref, onMounted } from 'vue';
import { ElMessage, ElLoading } from 'element-plus'; import { ElMessage, ElLoading } from 'element-plus';
import { detailRick, saveRick } from '@/api/model'; import { detailRick, saveRick } from '@/api/model';
import { getProcessInformationBasedOnRoles, addOperation } from '@/api/judgment'; import { getProcessInformationBasedOnRoles, addOperation } from '@/api/judgment';
import { useRouter, useRoute } from 'vue-router';
import { handleId, getIds } from '@/utils/common'; import { handleId, getIds } from '@/utils/common';
import Cookies from 'js-cookie'; import Cookies from 'js-cookie';
const router = useRouter(); const loading = ref<boolean>(false);
const route = useRoute();
let loading = null;
const form = ref<Record<string, any>[]>([]); const form = ref<Record<string, any>[]>([]);
const info = ref<Record<string, any>[]>([]); const info = ref<Record<string, any>[]>([]);
// //
@ -81,22 +81,22 @@ const getConfig = async () => {
}); });
}); });
form.value = result; form.value = result;
loading.close(); loading.value = false;
}; };
// //
const getDetail = async (load?: number) => { const getDetail = async (load?: number) => {
if (load) loading = ElLoading.service(); if (load) loading.value = true;
try { try {
const { data } = await detailRick(2); const { data } = await detailRick(2);
info.value = data; info.value = data;
if (data.length) { if (data.length) {
form.value = data; form.value = data;
loading.close(); loading.value = false;
} else { } else {
getConfig(); getConfig();
} }
} catch (e) { } catch (e) {
if (loading) loading.close(); loading.value = false;
} }
}; };
onMounted(() => { onMounted(() => {
@ -105,7 +105,7 @@ onMounted(() => {
// //
const submit = async () => { const submit = async () => {
loading = ElLoading.service(); loading.value = true;
await saveRick({ riskDegreeStrategyList: form.value }); await saveRick({ riskDegreeStrategyList: form.value });
addRecord(); addRecord();
getDetail(); getDetail();

@ -1,39 +1,41 @@
<template> <template>
<!-- 风险度策略-担保方式基础系数 --> <!-- 风险度策略-担保方式基础系数 -->
<div class="mb-3 text-sm font-semibold"> <div v-loading="loading">
单笔贷款风险度公式 <div class="mb-3 text-sm font-semibold">
<span class="text-[#0034ad]">单笔贷款风险度=</span> 单笔贷款风险度公式
<span class="text-[#8f24ff]">信用等级基础系数</span> <span class="text-[#0034ad]">单笔贷款风险度=</span>
<span class="text-[#0034ad]"> * </span> <span class="text-[#8f24ff]">信用等级基础系数</span>
<span class="text-[#5cc12b]">担保方式基础系数</span> <span class="text-[#0034ad]"> * </span>
<span class="text-[#0034ad]"> * </span> <span class="text-[#5cc12b]">担保方式基础系数</span>
<span class="text-[#ed8269]">贷款期限基础系数</span> <span class="text-[#0034ad]"> * </span>
</div> <span class="text-[#ed8269]">贷款期限基础系数</span>
<el-table class="c-table" </div>
:data="form" <el-table class="c-table"
border> :data="form"
<el-table-column prop="recordName" border>
label="贷款期限" <el-table-column prop="recordName"
min-width="150"> label="贷款期限"
<template #default="{ row, $index }"> min-width="150">
<p :class="!$index || $index === 3 ? '' : 'pl-10'">{{ row.recordName }}</p> <template #default="{ row, $index }">
</template> <p :class="!$index || $index === 3 ? '' : 'pl-10'">{{ row.recordName }}</p>
</el-table-column> </template>
<el-table-column label="系数" </el-table-column>
min-width="150" <el-table-column label="系数"
align="center"> min-width="150"
<template #default="{ row, $index }"> align="center">
<p v-if="!$index || $index === 3">--</p> <template #default="{ row, $index }">
<el-input v-else <p v-if="!$index || $index === 3">--</p>
placeholder="输入系数" <el-input v-else
v-model="row.coefficient"></el-input> placeholder="输入系数"
</template> v-model="row.coefficient"></el-input>
</el-table-column> </template>
</el-table> </el-table-column>
</el-table>
<div class="flex justify-end"> <div class="flex justify-end">
<div class="submit" <div class="submit"
@click="submit">完成配置</div> @click="submit">完成配置</div>
</div>
</div> </div>
</template> </template>
@ -42,13 +44,10 @@ import { ref, onMounted } from 'vue';
import { ElMessage, ElLoading } from 'element-plus'; import { ElMessage, ElLoading } from 'element-plus';
import { detailRick, saveRick } from '@/api/model'; import { detailRick, saveRick } from '@/api/model';
import { getProcessInformationBasedOnRoles, addOperation } from '@/api/judgment'; import { getProcessInformationBasedOnRoles, addOperation } from '@/api/judgment';
import { useRouter, useRoute } from 'vue-router';
import { handleId, getIds } from '@/utils/common'; import { handleId, getIds } from '@/utils/common';
import Cookies from 'js-cookie'; import Cookies from 'js-cookie';
const router = useRouter(); const loading = ref<boolean>(false);
const route = useRoute();
let loading = null;
const form = ref<Record<string, any>[]>([]); const form = ref<Record<string, any>[]>([]);
const info = ref<Record<string, any>[]>([]); const info = ref<Record<string, any>[]>([]);
// //
@ -74,22 +73,22 @@ const getConfig = async () => {
}); });
}); });
form.value = result; form.value = result;
loading.close(); loading.value = false;
}; };
// //
const getDetail = async (load?: number) => { const getDetail = async (load?: number) => {
if (load) loading = ElLoading.service(); if (load) loading.value = true;
try { try {
const { data } = await detailRick(3); const { data } = await detailRick(3);
info.value = data; info.value = data;
if (data.length) { if (data.length) {
form.value = data; form.value = data;
loading.close(); loading.value = false;
} else { } else {
getConfig(); getConfig();
} }
} catch (e) { } catch (e) {
if (loading) loading.close(); loading.value = false;
} }
}; };
onMounted(() => { onMounted(() => {
@ -98,7 +97,7 @@ onMounted(() => {
// //
const submit = async () => { const submit = async () => {
loading = ElLoading.service(); loading.value = true;
await saveRick({ riskDegreeStrategyList: form.value }); await saveRick({ riskDegreeStrategyList: form.value });
addRecord(); addRecord();
getDetail(); getDetail();

Loading…
Cancel
Save