Browse Source

基础框架版本更新

main
likunming 3 months ago
parent
commit
1e822b321b
  1. 6
      gradle.properties
  2. 90
      irbs.frontend/package.json
  3. 24
      irbs.frontend/src/menus/menus.json
  4. 1
      irbs.frontend/src/views/IrbsHome.vue
  5. 2
      irbs.frontend/src/views/custRating/CustRating.vue
  6. 5
      irbs.frontend/src/views/custRating/RatingDialog.vue
  7. 12
      irbs.frontend/src/views/report/Common.ts
  8. 30
      irbs.frontend/src/views/report/RptRatingDistribution.vue
  9. 169
      irbs.frontend/src/views/report/RptRatingLoanBalanceMigrate.vue
  10. 90
      irbs.shrcb.poc.frontend/package.json

6
gradle.properties

@ -36,9 +36,9 @@ application_version=1.0.1
# platform
###########################################################rwa_version
platform_group=io.sc
platform_version=8.2.7
platform_plugin_version=8.2.7
platform_core_frontend_version=8.2.33
platform_version=8.2.11
platform_plugin_version=8.2.10
platform_core_frontend_version=8.2.50
###########################################################
# product dependencies version

90
irbs.frontend/package.json

@ -28,52 +28,52 @@
"@babel/plugin-transform-object-rest-spread": "7.25.9",
"@babel/preset-env": "7.26.0",
"@babel/preset-typescript": "7.26.0",
"@quasar/app-webpack": "4.0.0-rc.4",
"@quasar/app-webpack": "4.0.7",
"@quasar/cli": "2.4.1",
"@types/mockjs": "1.0.10",
"@types/node": "22.10.0",
"@typescript-eslint/eslint-plugin": "8.16.0",
"@typescript-eslint/parser": "8.16.0",
"@types/node": "22.10.7",
"@typescript-eslint/eslint-plugin": "8.20.0",
"@typescript-eslint/parser": "8.20.0",
"@vue/babel-plugin-jsx": "1.2.5",
"@vue/compiler-sfc": "3.5.13",
"@vuepress/bundler-webpack": "2.0.0-rc.15",
"@vuepress/theme-default": "2.0.0-rc.49",
"@webpack-cli/serve": "2.0.5",
"@webpack-cli/serve": "3.0.1",
"autoprefixer": "10.4.20",
"babel-loader": "9.2.1",
"clean-webpack-plugin": "4.0.0",
"copy-webpack-plugin": "12.0.2",
"cross-env": "7.0.3",
"css-loader": "7.1.2",
"eslint": "9.15.0",
"eslint-config-prettier": "9.1.0",
"eslint-plugin-prettier": "5.2.1",
"eslint-plugin-vue": "9.31.0",
"eslint": "9.18.0",
"eslint-config-prettier": "10.0.1",
"eslint-plugin-prettier": "5.2.2",
"eslint-plugin-vue": "9.32.0",
"eslint-webpack-plugin": "4.2.0",
"html-webpack-plugin": "5.6.3",
"json5": "2.2.3",
"mini-css-extract-plugin": "2.9.2",
"nodemon": "3.1.7",
"postcss": "8.4.49",
"nodemon": "3.1.9",
"postcss": "8.5.1",
"postcss-import": "16.1.0",
"postcss-loader": "8.1.1",
"postcss-preset-env": "10.1.1",
"prettier": "3.4.1",
"sass": "1.81.0",
"sass-loader": "16.0.3",
"tailwindcss": "3.4.15",
"postcss-preset-env": "10.1.3",
"prettier": "3.4.2",
"sass": "1.83.4",
"sass-loader": "16.0.4",
"tailwindcss": "3.4.17",
"typescript": "5.5.4",
"vue-loader": "17.4.2",
"vuepress": "2.0.0-rc.15",
"webpack": "5.96.1",
"webpack": "5.97.1",
"webpack-bundle-analyzer": "4.10.2",
"webpack-cli": "5.1.4",
"webpack-dev-server": "5.1.0",
"webpack-cli": "6.0.1",
"webpack-dev-server": "5.2.0",
"webpack-merge": "6.0.1"
},
"dependencies": {
"@codemirror/autocomplete": "6.18.4",
"@codemirror/commands": "6.7.1",
"@codemirror/commands": "6.8.0",
"@codemirror/lang-html": "6.4.9",
"@codemirror/lang-java": "6.0.1",
"@codemirror/lang-javascript": "6.2.2",
@ -82,43 +82,43 @@
"@codemirror/lang-xml": "6.1.0",
"@codemirror/language": "6.10.8",
"@codemirror/search": "6.5.8",
"@codemirror/state": "6.5.0",
"@codemirror/view": "6.36.1",
"@maxgraph/core": "0.13.1",
"@quasar/extras": "1.16.13",
"@univerjs/core": "0.5.0",
"@univerjs/design": "0.5.0",
"@univerjs/docs": "0.5.0",
"@univerjs/docs-ui": "0.5.0",
"@univerjs/engine-formula": "0.5.0",
"@univerjs/engine-render": "0.5.0",
"@univerjs/facade": "0.5.0",
"@univerjs/sheets": "0.5.0",
"@univerjs/sheets-formula": "0.5.0",
"@univerjs/sheets-ui": "0.5.0",
"@univerjs/thread-comment": "0.5.0",
"@univerjs/ui": "0.5.0",
"@vueuse/core": "11.3.0",
"axios": "1.7.8",
"@codemirror/state": "6.5.1",
"@codemirror/view": "6.36.2",
"@maxgraph/core": "0.14.0",
"@quasar/extras": "1.16.15",
"@univerjs/core": "0.5.4",
"@univerjs/design": "0.5.4",
"@univerjs/docs": "0.5.4",
"@univerjs/docs-ui": "0.5.4",
"@univerjs/engine-formula": "0.5.4",
"@univerjs/engine-render": "0.5.4",
"@univerjs/facade": "0.5.4",
"@univerjs/sheets": "0.5.4",
"@univerjs/sheets-formula": "0.5.4",
"@univerjs/sheets-ui": "0.5.4",
"@univerjs/thread-comment": "0.5.4",
"@univerjs/ui": "0.5.4",
"@vueuse/core": "12.4.0",
"axios": "1.7.9",
"codemirror": "6.0.1",
"dayjs": "1.11.13",
"echarts": "5.5.1",
"echarts": "5.6.0",
"exceljs": "4.4.0",
"file-saver": "2.0.5",
"lodash": "4.17.21",
"luckyexcel": "1.0.1",
"mockjs": "1.1.0",
"node-sql-parser": "5.3.4",
"pinia": "2.2.6",
"platform-core": "8.2.33",
"quasar": "2.17.4",
"node-sql-parser": "5.3.6",
"pinia": "2.3.0",
"platform-core": "8.2.50",
"quasar": "2.17.6",
"sort-array": "5.0.0",
"svg-path-commander": "2.1.5",
"svg-path-commander": "2.1.7",
"tailwindcss": "3.4.4",
"vue": "3.5.13",
"vue-codemirror6": "1.2.0",
"vue-dompurify-html": "5.2.0",
"vue-i18n": "10.0.4",
"vue-i18n": "11.0.1",
"vue-router": "4.5.0",
"xml-formatter": "3.6.3"
}

24
irbs.frontend/src/menus/menus.json

@ -51,25 +51,25 @@
{"type":"GROUP", "order":600, "parentId":"menu.irbs", "id":"menu.irbs.query", "titleI18nKey":"menu.irbs.query", "icon":"content_paste_search"},
/*/*/
{"type":"ROUTE", "order":100, "parentId":"menu.irbs.query", "id":"menu.irbs.query.custRatingHist", "titleI18nKey":"menu.irbs.query.custRatingHist", "icon":"eva-stop-circle-outline", "routeName":"route.irbs.query.custRatingHist"},
{"type":"ROUTE", "order":100, "parentId":"menu.irbs.query", "id":"menu.irbs.query.custRatingHist", "titleI18nKey":"menu.irbs.query.custRatingHist", "icon":"query_stats", "routeName":"route.irbs.query.custRatingHist"},
/*/*/
{"type":"ROUTE", "order":200, "parentId":"menu.irbs.query", "id":"menu.irbs.query.defaultHist", "titleI18nKey":"menu.irbs.query.defaultHist", "icon":"eva-maximize-outline", "routeName":"route.irbs.query.defaultHist"},
{"type":"ROUTE", "order":200, "parentId":"menu.irbs.query", "id":"menu.irbs.query.defaultHist", "titleI18nKey":"menu.irbs.query.defaultHist", "icon":"search", "routeName":"route.irbs.query.defaultHist"},
/*/*/
{"type":"ROUTE", "order":300, "parentId":"menu.irbs.query", "id":"menu.irbs.query.defaultRebirthHist", "titleI18nKey":"menu.irbs.query.defaultRebirthHist", "icon":"eva-maximize-outline", "routeName":"route.irbs.query.defaultRebirthHist"},
{"type":"ROUTE", "order":300, "parentId":"menu.irbs.query", "id":"menu.irbs.query.defaultRebirthHist", "titleI18nKey":"menu.irbs.query.defaultRebirthHist", "icon":"plagiarism", "routeName":"route.irbs.query.defaultRebirthHist"},
/*/*/
{"type":"ROUTE", "order":400, "parentId":"menu.irbs.query", "id":"menu.irbs.query.riskExposureHist", "titleI18nKey":"menu.irbs.query.riskExposureHist", "icon":"eva-eye-outline", "routeName":"route.irbs.query.riskExposureHist"},
{"type":"ROUTE", "order":400, "parentId":"menu.irbs.query", "id":"menu.irbs.query.riskExposureHist", "titleI18nKey":"menu.irbs.query.riskExposureHist", "icon":"troubleshoot", "routeName":"route.irbs.query.riskExposureHist"},
/*/*/
{"type":"ROUTE", "order":500, "parentId":"menu.irbs.query", "id":"menu.irbs.query.custInfo", "titleI18nKey":"menu.irbs.query.custInfo", "icon":"eva-shake", "routeName":"route.irbs.query.custInfo"},
{"type":"ROUTE", "order":500, "parentId":"menu.irbs.query", "id":"menu.irbs.query.custInfo", "titleI18nKey":"menu.irbs.query.custInfo", "icon":"pageview", "routeName":"route.irbs.query.custInfo"},
/*/*/
{"type":"ROUTE", "order":600, "parentId":"menu.irbs.query", "id":"menu.irbs.query.pingAnLgdHist", "titleI18nKey":"menu.irbs.query.pingAnLgdHist", "icon":"eva-shake", "routeName":"route.irbs.query.pingAnLgdHist"},
{"type":"ROUTE", "order":600, "parentId":"menu.irbs.query", "id":"menu.irbs.query.pingAnLgdHist", "titleI18nKey":"menu.irbs.query.pingAnLgdHist", "icon":"find_in_page", "routeName":"route.irbs.query.pingAnLgdHist"},
/*/*/
{"type":"ROUTE", "order":700, "parentId":"menu.irbs.query", "id":"menu.irbs.query.shrcbCorpCustFeature", "titleI18nKey":"menu.irbs.query.shrcbCorpCustFeature", "icon":"bi-file-earmark-ruled-fill", "routeName":"route.lcdp.form.page", "routeQuery": {"id": "1a50a840-0e62-41b5-b952-9bd77a3775c2"}},
{"type":"GROUP", "order":700, "parentId":"menu.irbs", "id":"menu.irbs.config", "titleI18nKey":"menu.irbs.config", "icon":"display_settings"},
/*/*/
/*/*/
{"type":"ROUTE", "order":1, "parentId":"menu.irbs.config", "id":"menu.irbs.config.headApprConf", "titleI18nKey":"menu.irbs.config.headApprConf", "icon":"eva-image-2", "routeName":"route.irbs.config.headApprConf" },
{"type":"ROUTE", "order":1, "parentId":"menu.irbs.config", "id":"menu.irbs.config.headApprConf", "titleI18nKey":"menu.irbs.config.headApprConf", "icon":"settings_brightness", "routeName":"route.irbs.config.headApprConf" },
/*/*/
{"type":"ROUTE", "order":100, "parentId":"menu.irbs.config", "id":"menu.irbs.config.ratingAdjustment", "titleI18nKey":"menu.irbs.config.ratingAdjustment", "icon":"eva-map", "routeName":"route.lcdp.form.page", "routeQuery": {"id": "9a803997-ee15-47cc-bed2-872ec92be17e"}},
{"type":"ROUTE", "order":100, "parentId":"menu.irbs.config", "id":"menu.irbs.config.ratingAdjustment", "titleI18nKey":"menu.irbs.config.ratingAdjustment", "icon":"settings_applications", "routeName":"route.lcdp.form.page", "routeQuery": {"id": "9a803997-ee15-47cc-bed2-872ec92be17e"}},
/*/*/
/*{"type":"ROUTE", "order":200, "parentId":"menu.irbs.config", "id":"menu.irbs.config.debtFactors", "titleI18nKey":"menu.irbs.config.debtFactors", "icon":"eva-settings", "routeName":"route.irbs.config.debtFactors"},*/
/*/*/
@ -79,13 +79,13 @@
/*/*/
{"type":"ROUTE", "order":301, "parentId":"menu.irbs.config", "id":"menu.irbs.config.defaultCancelCustList", "titleI18nKey":"menu.irbs.config.defaultCancelCustList", "icon":"bi-basket-fill", "routeName":"route.lcdp.form.page", "routeQuery": {"id": "8659a1a9-4460-4c63-a88f-a6e41f8f6cdb"}},
/*/*/
{"type":"ROUTE", "order":400, "parentId":"menu.irbs.config", "id":"menu.irbs.config.riskExposureRule", "titleI18nKey":"menu.irbs.config.riskExposureRule", "icon":"eva-image-2", "routeName":"route.lcdp.form.page", "routeQuery": {"id": "ee736175-deea-488b-9427-d4c3fc82b259"}},
{"type":"ROUTE", "order":400, "parentId":"menu.irbs.config", "id":"menu.irbs.config.riskExposureRule", "titleI18nKey":"menu.irbs.config.riskExposureRule", "icon":"settings_suggest", "routeName":"route.lcdp.form.page", "routeQuery": {"id": "ee736175-deea-488b-9427-d4c3fc82b259"}},
/*/-*/
{"type":"ROUTE", "order":500, "parentId":"menu.irbs.config", "id":"menu.irbs.config.debtRatingProdRecRate", "titleI18nKey":"menu.irbs.config.debtRatingProdRecRate", "icon":"eva-cube-outline", "routeName":"route.lcdp.form.page", "routeQuery": {"id": "f95e8017-4351-4811-8fd4-39c0d146ef96"}},
{"type":"ROUTE", "order":500, "parentId":"menu.irbs.config", "id":"menu.irbs.config.debtRatingProdRecRate", "titleI18nKey":"menu.irbs.config.debtRatingProdRecRate", "icon":"square_foot", "routeName":"route.lcdp.form.page", "routeQuery": {"id": "f95e8017-4351-4811-8fd4-39c0d146ef96"}},
/*/-*/
{"type":"ROUTE", "order":600, "parentId":"menu.irbs.config", "id":"menu.irbs.config.debtRatingAdjRate", "titleI18nKey":"menu.irbs.config.debtRatingAdjRate", "icon":"eva-file-text", "routeName":"route.lcdp.form.page", "routeQuery": {"id": "d2b29ad7-5f84-4c94-bdca-bb6dac4434fa"}},
{"type":"ROUTE", "order":600, "parentId":"menu.irbs.config", "id":"menu.irbs.config.debtRatingAdjRate", "titleI18nKey":"menu.irbs.config.debtRatingAdjRate", "icon":"tune", "routeName":"route.lcdp.form.page", "routeQuery": {"id": "d2b29ad7-5f84-4c94-bdca-bb6dac4434fa"}},
/*/-*/
{"type":"ROUTE", "order":700, "parentId":"menu.irbs.config", "id":"menu.irbs.config.pledgeRecRate", "titleI18nKey":"menu.irbs.config.pledgeRecRate", "icon":"eva-grid-outline", "routeName":"route.lcdp.form.page", "routeQuery": {"id": "16ecfd08-371c-4d05-9e3a-9ab77b1fd748"}},
{"type":"ROUTE", "order":700, "parentId":"menu.irbs.config", "id":"menu.irbs.config.pledgeRecRate", "titleI18nKey":"menu.irbs.config.pledgeRecRate", "icon":"perm_data_setting", "routeName":"route.lcdp.form.page", "routeQuery": {"id": "16ecfd08-371c-4d05-9e3a-9ab77b1fd748"}},
{"type":"ROUTE", "order":800, "parentId":"menu.irbs.config", "id":"menu.irbs.config.mainScale", "titleI18nKey":"menu.irbs.config.mainScale", "icon":"signal_cellular_null", "routeName":"route.irbs.config.mainScale"},
/*/*/
{"type":"ROUTE", "order":900, "parentId":"menu.irbs.config", "id":"menu.irbs.config.financialMapping", "titleI18nKey":"menu.irbs.config.financialMapping", "icon":"bi-reception-3", "routeName":"route.irbs.config.financialMapping"},

1
irbs.frontend/src/views/IrbsHome.vue

@ -367,6 +367,7 @@
import { ref, nextTick, reactive, onMounted } from 'vue';
import { axios, Environment } from 'platform-core';
import { useRouter } from 'vue-router';
import '@/css/tailwind.css';
const router = useRouter();

2
irbs.frontend/src/views/custRating/CustRating.vue

@ -169,7 +169,7 @@ const companyRatingGrid = {
{ label: '评级状态', name: 'ratingStatus', type: 'w-select', options: Options.enum(RatingStatusEnum) },
],
columns: [
{ name: 'id', label: '申请编号', align: 'center', width: 150 },
{ name: 'id', label: '申请编号', align: 'center' },
{ name: 'custNo', label: '客户号', align: 'center' },
{ name: 'custName', label: '客户名称' },
{ name: 'industryTypeName', label: '行业类型' },

5
irbs.frontend/src/views/custRating/RatingDialog.vue

@ -2,10 +2,9 @@
<w-dialog
ref="dialogRef"
:title="state.dialogTitle"
width="80%"
height="80%"
width="90%"
height="90%"
body-padding="0px 0px 0px 0px"
:maximized="true"
:buttons="[]"
@hide="dialogHide"
@maximized="maximized"

12
irbs.frontend/src/views/report/Common.ts

@ -0,0 +1,12 @@
export const formatNumber = (num: any) => {
if (num) {
// 强制转换为Number类型(自动解析科学计数法)
const numberVal = Number(num);
// 常规处理流程
const fixedNum = numberVal.toFixed(2);
const [integer, decimal] = fixedNum.split('.');
return integer.replace(/(\d)(?=(\d{3})+(?!\d))/g, '$1,') + '.' + decimal;
}
return num;
};

30
irbs.frontend/src/views/report/RptRatingDistribution.vue

@ -245,10 +245,11 @@
</template>
<script setup lang="ts">
import { Round } from '@/views/custRating/CustRating.ts';
import { axios, Environment, Formater } from 'platform-core';
import { useQuasar } from 'quasar';
import { reactive, ref } from 'vue';
import { useQuasar } from 'quasar';
import { axios, Environment, Formater } from 'platform-core';
import { formatNumber } from './Common.ts';
import { Round } from '@/views/custRating/CustRating.ts';
const $q = useQuasar();
const rptRatingDistributionGridRef = ref();
@ -378,11 +379,11 @@ const rptRatingDistributionGrid = {
label: '全部客户',
name: 'totalCustHeader',
columns: [
{ label: '客户数', name: 'custCnt', align: 'center' },
{ label: '客户数', name: 'custCnt', align: 'right' },
{
label: '占比',
name: 'custRatio',
align: 'center',
align: 'right',
format: (val) => {
if (val && typeof val === 'number') {
return Round(val * 100, 2) + '%';
@ -396,11 +397,11 @@ const rptRatingDistributionGrid = {
label: '本月新增客户',
name: 'currInctCustHeader',
columns: [
{ label: '客户数', name: 'currInctCnt', align: 'center' },
{ label: '客户数', name: 'currInctCnt', align: 'right' },
{
label: '占比',
name: 'currInctRatio',
align: 'center',
align: 'right',
format: (val) => {
if (val && typeof val === 'number') {
return Round(val * 100, 2) + '%';
@ -414,11 +415,11 @@ const rptRatingDistributionGrid = {
label: '违约客户',
name: 'defCustHeader',
columns: [
{ label: '客户数', name: 'defCustCnt', align: 'center' },
{ label: '客户数', name: 'defCustCnt', align: 'right' },
{
label: '违约率',
name: 'defCustRatio',
align: 'center',
align: 'right',
format: (val) => {
if (val && typeof val === 'number') {
return Round(val * 100, 2) + '%';
@ -432,11 +433,18 @@ const rptRatingDistributionGrid = {
label: '信贷余额',
name: 'borrBalHeader',
columns: [
{ label: '余额', name: 'borrBal', align: 'center', format: Formater.thousands() },
{
label: '余额',
name: 'borrBal',
align: 'right',
format: (val) => {
return formatNumber(val);
},
},
{
label: '占比',
name: 'borrBalRatio',
align: 'center',
align: 'right',
format: (val) => {
if (val && typeof val === 'number') {
return Round(val * 100, 2) + '%';

169
irbs.frontend/src/views/report/RptRatingLoanBalanceMigrate.vue

@ -247,6 +247,7 @@ import { ref, reactive } from 'vue';
import { useQuasar } from 'quasar';
import { Environment, EnumTools, DictionaryTools, Options, Formater, axios, NotifyManager } from 'platform-core';
import { Round, RatioFormat } from '@/views/custRating/CustRating.ts';
import { formatNumber } from './Common.ts';
const $q = useQuasar();
const rptRatingLoanBalanceMigrateRef = ref();
@ -399,44 +400,170 @@ const rptRatingLoanBalanceMigrateGrid = {
name: 'currRatingDist',
label: '本期客户评级分布',
columns: [
{ label: 'AAA+', name: 'aaaPlusBal', align: 'center', format: Formater.thousands() },
{ label: 'AAA', name: 'aaaBal', align: 'center', format: Formater.thousands() },
{ label: 'AA+', name: 'aaPlusBal', align: 'center', format: Formater.thousands() },
{ label: 'AA', name: 'aaBal', align: 'center', format: Formater.thousands() },
{ label: 'AA-', name: 'aaMinusBal', align: 'center', format: Formater.thousands() },
{ label: 'A+', name: 'aPlusBal', align: 'center', format: Formater.thousands() },
{ label: 'A', name: 'aBal', align: 'center', format: Formater.thousands() },
{ label: 'A-', name: 'aMinusBal', align: 'center', format: Formater.thousands() },
{ label: 'BBB', name: 'bbbBal', align: 'center', format: Formater.thousands() },
{ label: 'BB', name: 'bbBal', align: 'center', format: Formater.thousands() },
{ label: 'B', name: 'bBal', align: 'center', format: Formater.thousands() },
{ label: 'CCC', name: 'cccBal', align: 'center', format: Formater.thousands() },
{ label: 'CC', name: 'ccBal', align: 'center', format: Formater.thousands() },
{ label: 'C', name: 'cBal', align: 'center', format: Formater.thousands() },
{ label: 'D', name: 'dBal', align: 'center', format: Formater.thousands() },
{ label: '未评级', name: 'notRatingBal', align: 'center', format: Formater.thousands() },
{
label: 'AAA+',
name: 'aaaPlusBal',
align: 'right',
format: (val) => {
return formatNumber(val);
},
},
{
label: 'AAA',
name: 'aaaBal',
align: 'right',
format: (val) => {
return formatNumber(val);
},
},
{
label: 'AA+',
name: 'aaPlusBal',
align: 'right',
format: (val) => {
return formatNumber(val);
},
},
{
label: 'AA',
name: 'aaBal',
align: 'right',
format: (val) => {
return formatNumber(val);
},
},
{
label: 'AA-',
name: 'aaMinusBal',
align: 'right',
format: (val) => {
return formatNumber(val);
},
},
{
label: 'A+',
name: 'aPlusBal',
align: 'right',
format: (val) => {
return formatNumber(val);
},
},
{
label: 'A',
name: 'aBal',
align: 'right',
format: (val) => {
return formatNumber(val);
},
},
{
label: 'A-',
name: 'aMinusBal',
align: 'right',
format: (val) => {
return formatNumber(val);
},
},
{
label: 'BBB',
name: 'bbbBal',
align: 'right',
format: (val) => {
return formatNumber(val);
},
},
{
label: 'BB',
name: 'bbBal',
align: 'right',
format: (val) => {
return formatNumber(val);
},
},
{
label: 'B',
name: 'bBal',
align: 'right',
format: (val) => {
return formatNumber(val);
},
},
{
label: 'CCC',
name: 'cccBal',
align: 'right',
format: (val) => {
return formatNumber(val);
},
},
{
label: 'CC',
name: 'ccBal',
align: 'right',
format: (val) => {
return formatNumber(val);
},
},
{
label: 'C',
name: 'cBal',
align: 'right',
format: (val) => {
return formatNumber(val);
},
},
{
label: 'D',
name: 'dBal',
align: 'right',
format: (val) => {
return formatNumber(val);
},
},
{
label: '未评级',
name: 'notRatingBal',
align: 'right',
format: (val) => {
return formatNumber(val);
},
},
],
},
{
name: 'ratingUpMigrate',
label: '向上迁移',
columns: [
{ label: '信贷余额', name: 'upBal', align: 'center', format: Formater.thousands() },
{ label: '占比', name: 'upRatio', align: 'center', format: RatioFormat },
{
label: '信贷余额',
name: 'upBal',
align: 'right',
format: (val) => {
return formatNumber(val);
},
},
{ label: '占比', name: 'upRatio', align: 'right', format: RatioFormat },
],
},
{
name: 'ratingDownMigrate',
label: '向下迁移',
columns: [
{ label: '信贷余额', name: 'downBal', align: 'center', format: Formater.thousands() },
{ label: '占比', name: 'downRatio', align: 'center', format: RatioFormat },
{
label: '信贷余额',
name: 'downBal',
align: 'right',
format: (val) => {
return formatNumber(val);
},
},
{ label: '占比', name: 'downRatio', align: 'right', format: RatioFormat },
],
},
{
label: '迁移指数',
name: 'chgExponent',
align: 'center',
align: 'right',
format: (val) => {
if (val) {
return Round(val, 2);

90
irbs.shrcb.poc.frontend/package.json

@ -29,52 +29,52 @@
"@babel/plugin-transform-object-rest-spread": "7.25.9",
"@babel/preset-env": "7.26.0",
"@babel/preset-typescript": "7.26.0",
"@quasar/app-webpack": "4.0.0-rc.4",
"@quasar/app-webpack": "4.0.7",
"@quasar/cli": "2.4.1",
"@types/mockjs": "1.0.10",
"@types/node": "22.10.0",
"@typescript-eslint/eslint-plugin": "8.16.0",
"@typescript-eslint/parser": "8.16.0",
"@types/node": "22.10.7",
"@typescript-eslint/eslint-plugin": "8.20.0",
"@typescript-eslint/parser": "8.20.0",
"@vue/babel-plugin-jsx": "1.2.5",
"@vue/compiler-sfc": "3.5.13",
"@vuepress/bundler-webpack": "2.0.0-rc.15",
"@vuepress/theme-default": "2.0.0-rc.49",
"@webpack-cli/serve": "2.0.5",
"@webpack-cli/serve": "3.0.1",
"autoprefixer": "10.4.20",
"babel-loader": "9.2.1",
"clean-webpack-plugin": "4.0.0",
"copy-webpack-plugin": "12.0.2",
"cross-env": "7.0.3",
"css-loader": "7.1.2",
"eslint": "9.15.0",
"eslint-config-prettier": "9.1.0",
"eslint-plugin-prettier": "5.2.1",
"eslint-plugin-vue": "9.31.0",
"eslint": "9.18.0",
"eslint-config-prettier": "10.0.1",
"eslint-plugin-prettier": "5.2.2",
"eslint-plugin-vue": "9.32.0",
"eslint-webpack-plugin": "4.2.0",
"html-webpack-plugin": "5.6.3",
"json5": "2.2.3",
"mini-css-extract-plugin": "2.9.2",
"nodemon": "3.1.7",
"postcss": "8.4.49",
"nodemon": "3.1.9",
"postcss": "8.5.1",
"postcss-import": "16.1.0",
"postcss-loader": "8.1.1",
"postcss-preset-env": "10.1.1",
"prettier": "3.4.1",
"sass": "1.81.0",
"sass-loader": "16.0.3",
"tailwindcss": "3.4.15",
"postcss-preset-env": "10.1.3",
"prettier": "3.4.2",
"sass": "1.83.4",
"sass-loader": "16.0.4",
"tailwindcss": "3.4.17",
"typescript": "5.5.4",
"vue-loader": "17.4.2",
"vuepress": "2.0.0-rc.15",
"webpack": "5.96.1",
"webpack": "5.97.1",
"webpack-bundle-analyzer": "4.10.2",
"webpack-cli": "5.1.4",
"webpack-dev-server": "5.1.0",
"webpack-cli": "6.0.1",
"webpack-dev-server": "5.2.0",
"webpack-merge": "6.0.1"
},
"dependencies": {
"@codemirror/autocomplete": "6.18.4",
"@codemirror/commands": "6.7.1",
"@codemirror/commands": "6.8.0",
"@codemirror/lang-html": "6.4.9",
"@codemirror/lang-java": "6.0.1",
"@codemirror/lang-javascript": "6.2.2",
@ -83,43 +83,43 @@
"@codemirror/lang-xml": "6.1.0",
"@codemirror/language": "6.10.8",
"@codemirror/search": "6.5.8",
"@codemirror/state": "6.5.0",
"@codemirror/view": "6.36.1",
"@maxgraph/core": "0.13.1",
"@quasar/extras": "1.16.13",
"@univerjs/core": "0.5.0",
"@univerjs/design": "0.5.0",
"@univerjs/docs": "0.5.0",
"@univerjs/docs-ui": "0.5.0",
"@univerjs/engine-formula": "0.5.0",
"@univerjs/engine-render": "0.5.0",
"@univerjs/facade": "0.5.0",
"@univerjs/sheets": "0.5.0",
"@univerjs/sheets-formula": "0.5.0",
"@univerjs/sheets-ui": "0.5.0",
"@univerjs/thread-comment": "0.5.0",
"@univerjs/ui": "0.5.0",
"@vueuse/core": "11.3.0",
"axios": "1.7.8",
"@codemirror/state": "6.5.1",
"@codemirror/view": "6.36.2",
"@maxgraph/core": "0.14.0",
"@quasar/extras": "1.16.15",
"@univerjs/core": "0.5.4",
"@univerjs/design": "0.5.4",
"@univerjs/docs": "0.5.4",
"@univerjs/docs-ui": "0.5.4",
"@univerjs/engine-formula": "0.5.4",
"@univerjs/engine-render": "0.5.4",
"@univerjs/facade": "0.5.4",
"@univerjs/sheets": "0.5.4",
"@univerjs/sheets-formula": "0.5.4",
"@univerjs/sheets-ui": "0.5.4",
"@univerjs/thread-comment": "0.5.4",
"@univerjs/ui": "0.5.4",
"@vueuse/core": "12.4.0",
"axios": "1.7.9",
"codemirror": "6.0.1",
"dayjs": "1.11.13",
"echarts": "5.5.1",
"echarts": "5.6.0",
"exceljs": "4.4.0",
"file-saver": "2.0.5",
"lodash": "4.17.21",
"luckyexcel": "1.0.1",
"mockjs": "1.1.0",
"node-sql-parser": "5.3.4",
"pinia": "2.2.6",
"platform-core": "8.2.33",
"quasar": "2.17.4",
"node-sql-parser": "5.3.6",
"pinia": "2.3.0",
"platform-core": "8.2.40",
"quasar": "2.17.6",
"sort-array": "5.0.0",
"svg-path-commander": "2.1.5",
"svg-path-commander": "2.1.7",
"tailwindcss": "3.4.4",
"vue": "3.5.13",
"vue-codemirror6": "1.2.0",
"vue-dompurify-html": "5.2.0",
"vue-i18n": "10.0.4",
"vue-i18n": "11.0.1",
"vue-router": "4.5.0",
"xml-formatter": "3.6.3"
}

Loading…
Cancel
Save