@nstc-business/imes 1.0.7 → 1.0.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nstc-business/imes",
3
- "version": "1.0.7",
3
+ "version": "1.0.9",
4
4
  "private": false,
5
5
  "main": "src/index.js",
6
6
  "scripts": {
@@ -1,6 +1,14 @@
1
1
  <template>
2
2
  <Page>
3
- <expandable-pane v-if="showModelInfo" title="模型信息">
3
+ <expandable-pane title="模型信息">
4
+ <div class="flex-box flex-lr m-b-s">
5
+ <div></div>
6
+ <div>
7
+ <el-button type="primary" size="mini" @click="printFn">
8
+ 打印
9
+ </el-button>
10
+ </div>
11
+ </div>
4
12
  <descriptions>
5
13
  <el-descriptions-item label="模型类型">
6
14
  <span v-if="modelData.type === 1">评价模型</span>
@@ -176,13 +184,7 @@
176
184
  (!row?.optionList || row?.optionList?.length == 0)
177
185
  "
178
186
  >
179
- {{
180
- row.indicatorResult || row.indicatorResult === 0
181
- ? row?.indicatorResult?.toFixed(
182
- digitsCalc(row.showDigits)
183
- )
184
- : ''
185
- }}
187
+ {{ indicatorResultFn(row) }}
186
188
  {{
187
189
  row.displayStyle === 1 &&
188
190
  (row.indicatorResult || row.indicatorResult === 0)
@@ -275,17 +277,59 @@
275
277
  </template>
276
278
  </vxe-column>
277
279
  <vxe-column
278
- slot="modifiedResult"
280
+ slot="modifyRank"
279
281
  slot-scope="{ column }"
280
282
  v-bind="{ ...column, field: column.prop, title: column.label }"
283
+ v-if="
284
+ !typeObj.targetArray.every(
285
+ el => !el.modifyRank || el.modifyRank === 0
286
+ )
287
+ "
281
288
  >
282
289
  <template slot-scope="{ row }">
283
- <div>
290
+ {{ row.modifyRank === 1 ? '指标得分' : row.modifyRank === 2 ? '指标值' : '不调整' }}
291
+ </template>
292
+ </vxe-column>
293
+ <vxe-column
294
+ slot="modifiedVal"
295
+ slot-scope="{ column }"
296
+ v-bind="{ ...column, field: column.prop, title: column.label }"
297
+ v-if="
298
+ !typeObj.targetArray.every(
299
+ el => !el.modifyRank || el.modifyRank === 0
300
+ )
301
+ "
302
+ >
303
+ <template slot-scope="{ row }">
304
+ <span>
284
305
  {{
285
- row.result || row.result === 0
286
- ? Number(row.modifiedResult).toFixed(modelData.digits)
287
- : ''
306
+ row.modifyRank === 2
307
+ ? row.displayStyle === 1
308
+ ? Number.parseFloat(
309
+ N.subFixed(
310
+ row.modifiedVal / 100,
311
+ this.modelData.digits
312
+ )
313
+ ) + '%'
314
+ : row.modifiedVal
315
+ : '--'
288
316
  }}
317
+ </span>
318
+ </template>
319
+ </vxe-column>
320
+ <vxe-column
321
+ slot="modifiedResult"
322
+ slot-scope="{ column }"
323
+ v-bind="{ ...column, field: column.prop, title: column.label }"
324
+ v-if="
325
+ !typeObj.targetArray.every(
326
+ el => !el.modifyRank || el.modifyRank === 0
327
+ )
328
+ "
329
+ >
330
+ <template slot-scope="{ row }">
331
+ <div>
332
+ {{ row.modifiedResult || '--' }}
289
333
  </div>
290
334
  </template>
291
335
  </vxe-column>
@@ -300,7 +344,13 @@
300
344
  <div>子模型【评级模型】--{{ item.name }}--模型指标</div>
301
345
  <el-form class="label-width-6em" label-width="10em">
302
346
  <el-form-item label="模型得分:">
303
- <span>{{ item.result.toFixed(item.showDigits) }}</span>
347
+ <span>
348
+ {{
349
+ item.result || item.result === 0
350
+ ? item.result.toFixed(item.showDigits)
351
+ : ''
352
+ }}
353
+ </span>
304
354
  </el-form-item>
305
355
  <el-form-item label="模型结果:">
306
356
  <span>{{ item.resultText }}</span>
@@ -349,13 +399,7 @@
349
399
  (!row?.optionList || row?.optionList?.length == 0)
350
400
  "
351
401
  >
352
- {{
353
- row.indicatorResult || row.indicatorResult === 0
354
- ? row?.indicatorResult?.toFixed(
355
- digitsCalc(row.showDigits)
356
- )
357
- : ''
358
- }}
402
+ {{ indicatorResultFn(row) }}
359
403
  {{
360
404
  row.displayStyle === 1 &&
361
405
  (row.indicatorResult || row.indicatorResult === 0)
@@ -451,17 +495,63 @@
451
495
  </div>
452
496
  </template>
453
497
  </vxe-column>
498
+ <vxe-column
499
+ slot="modifyRank"
500
+ slot-scope="{ column }"
501
+ v-bind="{ ...column, field: column.prop, title: column.label }"
502
+ v-if="
503
+ !item.tableData.every(
504
+ el => !el.modifyRank || el.modifyRank === 0
505
+ )
506
+ "
507
+ >
508
+ <template slot-scope="{ row }">
509
+ {{ row.modifyRank === 1 ? '指标得分' : row.modifyRank === 2 ? '指标值' : '不调整' }}
510
+ </template>
511
+ </vxe-column>
512
+ <vxe-column
513
+ slot="modifiedVal"
514
+ slot-scope="{ column }"
515
+ v-bind="{ ...column, field: column.prop, title: column.label }"
516
+ v-if="
517
+ !item.tableData.every(
518
+ el => !el.modifyRank || el.modifyRank === 0
519
+ )
520
+ "
521
+ >
522
+ <template slot-scope="{ row }">
523
+ <span>
524
+ {{
525
+ row.modifyRank === 2
526
+ ? row.displayStyle === 1
527
+ ? Number.parseFloat(
528
+ N.subFixed(
529
+ row.modifiedVal / 100,
530
+ this.modelData.digits
531
+ )
532
+ ) + '%'
533
+ : row.modifiedVal
534
+ : '--'
535
+ }}
536
+ </span>
537
+ </template>
538
+ </vxe-column>
454
539
  <vxe-column
455
540
  slot="modifiedResult"
456
541
  slot-scope="{ column }"
457
542
  v-bind="{ ...column, field: column.prop, title: column.label }"
543
+ v-if="
544
+ !item.tableData.every(
545
+ el => !el.modifyRank || el.modifyRank === 0
546
+ )
547
+ "
458
548
  >
459
549
  <template slot-scope="{ row }">
460
550
  <div>
461
551
  {{
462
552
  row.result || row.result === 0
463
553
  ? Number(row.modifiedResult).toFixed(modelData.digits)
464
- : ''
554
+ : '--'
465
555
  }}
466
556
  </div>
467
557
  </template>
@@ -519,13 +609,7 @@
519
609
  (!row?.optionList || row?.optionList?.length == 0)
520
610
  "
521
611
  >
522
- {{
523
- row.indicatorResult || row.indicatorResult === 0
524
- ? row?.indicatorResult?.toFixed(
525
- digitsCalc(row.showDigits)
526
- )
527
- : ''
528
- }}
612
+ {{ indicatorResultFn(row) }}
529
613
  {{
530
614
  row.displayStyle === 1 &&
531
615
  (row.indicatorResult || row.indicatorResult === 0)
@@ -624,17 +708,63 @@
624
708
  </div>
625
709
  </template>
626
710
  </vxe-column>
711
+ <vxe-column
712
+ slot="modifyRank"
713
+ slot-scope="{ column }"
714
+ v-bind="{ ...column, field: column.prop, title: column.label }"
715
+ v-if="
716
+ !item.tableData.every(
717
+ el => !el.modifyRank || el.modifyRank === 0
718
+ )
719
+ "
720
+ >
721
+ <template slot-scope="{ row }">
722
+ {{ row.modifyRank === 1 ? '指标得分' : row.modifyRank === 2 ? '指标值' : '不调整' }}
723
+ </template>
724
+ </vxe-column>
725
+ <vxe-column
726
+ slot="modifiedVal"
727
+ slot-scope="{ column }"
728
+ v-bind="{ ...column, field: column.prop, title: column.label }"
729
+ v-if="
730
+ !item.tableData.every(
731
+ el => !el.modifyRank || el.modifyRank === 0
732
+ )
733
+ "
734
+ >
735
+ <template slot-scope="{ row }">
736
+ <span>
737
+ {{
738
+ row.modifyRank === 2
739
+ ? row.displayStyle === 1
740
+ ? Number.parseFloat(
741
+ N.subFixed(
742
+ row.modifiedVal / 100,
743
+ this.modelData.digits
744
+ )
745
+ ) + '%'
746
+ : row.modifiedVal
747
+ : '--'
748
+ }}
749
+ </span>
750
+ </template>
751
+ </vxe-column>
627
752
  <vxe-column
628
753
  slot="modifiedResult"
629
754
  slot-scope="{ column }"
630
755
  v-bind="{ ...column, field: column.prop, title: column.label }"
756
+ v-if="
757
+ !item.tableData.every(
758
+ el => !el.modifyRank || el.modifyRank === 0
759
+ )
760
+ "
631
761
  >
632
762
  <template slot-scope="{ row }">
633
763
  <div>
634
764
  {{
635
765
  row.result || row.result === 0
636
766
  ? Number(row.modifiedResult).toFixed(modelData.digits)
637
- : ''
767
+ : '--'
638
768
  }}
639
769
  </div>
640
770
  </template>
@@ -681,7 +811,9 @@
681
811
  v-bind="{ ...column, field: column.prop, title: column.label }"
682
812
  >
683
813
  <template slot-scope="{ row }">
814
+ <div v-if="row.rankType === 9">--</div>
684
815
  <el-tooltip
816
+ v-if="row.rankType !== 9"
685
817
  class="item"
686
818
  effect="dark"
687
819
  :disabled="!row.displayFormula"
@@ -697,13 +829,7 @@
697
829
  (!row?.optionList || row?.optionList?.length == 0)
698
830
  "
699
831
  >
700
- {{
701
- row.indicatorResult || row.indicatorResult === 0
702
- ? row?.indicatorResult?.toFixed(
703
- digitsCalc(row.showDigits)
704
- )
705
- : ''
706
- }}
832
+ {{ indicatorResultFn(row) }}
707
833
  {{
708
834
  row.displayStyle === 1 &&
709
835
  (row.indicatorResult || row.indicatorResult === 0)
@@ -793,17 +919,28 @@
793
919
  v-bind="{ ...column, field: column.prop, title: column.label }"
794
920
  >
795
921
  <template slot-scope="{ row }">
796
- <div>
797
- {{
798
- row.result
799
- ? addThousands(
800
- toFixedTrunc(row?.result, modelData.digits)
801
- )
802
- : row.result === 0
803
- ? row.result
804
- : ''
805
- }}
806
- </div>
922
+ <el-tooltip
923
+ class="item"
924
+ effect="dark"
925
+ :disabled="!row.displayFormula"
926
+ >
927
+ <div slot="content">
928
+ {{ row.displayFormula }}:
929
+ <br/>
930
+ {{ row.relFormula }}
931
+ </div>
932
+ <div>
933
+ {{
934
+ row.result
935
+ ? addThousands(
936
+ toFixedTrunc(row?.result, modelData.digits)
937
+ )
938
+ : row.result === 0
939
+ ? row.result
940
+ : ''
941
+ }}
942
+ </div>
943
+ </el-tooltip>
807
944
  </template>
808
945
  </vxe-column>
809
946
  <vxe-column
@@ -836,6 +973,7 @@ import {
836
973
  formatFloat2
837
974
  } from '../common'
838
975
  import {N, Page, ExpandablePane, Descriptions, TablePro} from 'n20-common-lib'
976
+ import {printJS} from 'n20-common-lib/src/plugins/Print'
839
977
 
840
978
  /**
841
979
  * 关键参数说明 sourceType
@@ -957,6 +1095,7 @@ export default {
957
1095
  {
958
1096
  label: '指标调整项',
959
1097
  prop: 'modifyRank',
1098
+ slotName: 'modifyRank',
960
1099
  align: 'center',
961
1100
  minWidth: 100,
962
1101
  'show-overflow-tooltip': true,
@@ -983,6 +1122,7 @@ export default {
983
1122
  {
984
1123
  label: '调整后指标值',
985
1124
  prop: 'modifiedVal',
1125
+ slotName: 'modifiedVal',
986
1126
  align: 'center',
987
1127
  minWidth: 150,
988
1128
  'show-overflow-tooltip': true,
@@ -1016,6 +1156,7 @@ export default {
1016
1156
  {
1017
1157
  label: '调整后模型指标得分',
1018
1158
  prop: 'modifiedResult',
1159
+ slotName: 'modifiedResult',
1019
1160
  align: 'center',
1020
1161
  minWidth: 150,
1021
1162
  'show-overflow-tooltip': false
@@ -1060,6 +1201,7 @@ export default {
1060
1201
  {
1061
1202
  label: '指标调整项',
1062
1203
  prop: 'modifyRank',
1204
+ slotName: 'modifyRank',
1063
1205
  align: 'center',
1064
1206
  minWidth: 100,
1065
1207
  'show-overflow-tooltip': true,
@@ -1086,6 +1228,7 @@ export default {
1086
1228
  {
1087
1229
  label: '调整后指标值',
1088
1230
  prop: 'modifiedVal',
1231
+ slotName: 'modifiedVal',
1089
1232
  align: 'center',
1090
1233
  minWidth: 150,
1091
1234
  'show-overflow-tooltip': true,
@@ -1138,6 +1281,13 @@ export default {
1138
1281
  minWidth: 150,
1139
1282
  'show-overflow-tooltip': true
1140
1283
  },
1284
+ {
1285
+ label: '指标满分值',
1286
+ prop: 'fullScore',
1287
+ align: 'center',
1288
+ minWidth: 150,
1289
+ 'show-overflow-tooltip': true
1290
+ },
1141
1291
  {
1142
1292
  label: '指标值',
1143
1293
  prop: 'indicatorResult',
@@ -1201,12 +1351,18 @@ export default {
1201
1351
  item => item.prop !== 'serialNumber'
1202
1352
  )
1203
1353
  }
1354
+ if (this.model.type === 1 && this.model.showWeight !== 1) {
1355
+ this.tabelHeadersAssessModel = this.tabelHeadersAssessModel.filter(
1356
+ item => item.prop !== 'weight'
1357
+ )
1358
+ }
1204
1359
  switch (this.model.type) {
1205
1360
  case 1:
1206
1361
  case 2:
1207
1362
  if (this.model.code) {
1208
- this.processingData(this.model)
1363
+ this.processingData(this.model, 'targetArray')
1209
1364
  await this.queryCalcResultDetail()
1365
+ this.processingData(this.modelData)
1210
1366
  this.comFn(this.modelData)
1211
1367
  }
1212
1368
  break
@@ -1221,6 +1377,30 @@ export default {
1221
1377
  modelTreeVO.children = []
1222
1378
  this.typeObj.statisticsArray.push({...modelTreeVO})
1223
1379
  this.comFn(this.modelData)
1380
+ let showFullScore = 0
1381
+ let showIndicatorValText = 0
1382
+ this.typeObj.statisticsArray.forEach(item => {
1383
+ console.log(JSON.stringify(item))
1384
+ if (item.fullScore) {
1385
+ showFullScore = 1
1386
+ }
1387
+ if (
1388
+ item.supplementRuleVOList &&
1389
+ item.supplementRuleVOList.length > 0
1390
+ ) {
1391
+ showIndicatorValText = 1
1392
+ }
1393
+ })
1394
+ if (showFullScore !== 1) {
1395
+ this.tabelHeadersStatistics = this.tabelHeadersStatistics.filter(
1396
+ item => item.prop !== 'fullScore'
1397
+ )
1398
+ }
1399
+ if (showIndicatorValText !== 1) {
1400
+ this.tabelHeadersStatistics = this.tabelHeadersStatistics.filter(
1401
+ item => item.prop !== 'indicatorValText'
1402
+ )
1403
+ }
1224
1404
  break
1225
1405
  default:
1226
1406
  break
@@ -1368,6 +1548,9 @@ export default {
1368
1548
  })
1369
1549
  this.typeObj.assessModelArray.forEach(async assessModel => {
1370
1550
  if (assessModel.itemID == item.modelID) {
1551
+ assessModel.result = item.result
1552
+ assessModel.resultText = item.resultText
1553
+ assessModel.showDigits = item.showDigits
1371
1554
  assessModel.children.push(item)
1372
1555
  if (
1373
1556
  item.children &&
@@ -1396,6 +1579,7 @@ export default {
1396
1579
  itemc.result = item.result
1397
1580
  itemc.indicatorResult = item.indicatorResult
1398
1581
  itemc.relFormula = item.relFormula
1582
+ itemc.displayFormula = item.displayFormula
1399
1583
  itemc.serialNumber = item.serialNumber
1400
1584
  this.itemDataFn(itemc, data)
1401
1585
  }
@@ -1482,52 +1666,86 @@ export default {
1482
1666
  // 统计模型table : isLeaf=2 itemType = 13
1483
1667
  // 计算模型table : isLeaf=0 itemType = 11
1484
1668
  // 评价模型table: isLeaf=0 itemType = 12
1485
- processingData(modelData) {
1669
+ processingData(modelData, type) {
1486
1670
  const modelTreeVO = JSON.parse(JSON.stringify(modelData.modelTreeVO))
1487
1671
  const digui = data => {
1488
1672
  if (data.children && data.children.length > 0) {
1489
1673
  data.children.map(async item => {
1490
- if (item.isLeaf === 1 || item.isLeaf === 2) {
1674
+ if (item.isLeaf === 1) {
1491
1675
  switch (item.itemType) {
1492
1676
  // 可量化指标
1493
1677
  case 21: {
1494
- this.typeObj.targetArray.push({})
1495
- this.typeObj.targetArray[this.typeObj.targetArray.length - 1] = await this.itemDataFn(item, data)
1678
+ if (type === 'targetArray') {
1679
+ this.typeObj.targetArray.push({})
1680
+ this.$set(
1681
+ this.typeObj.targetArray,
1682
+ this.typeObj.targetArray.length - 1,
1683
+ await this.itemDataFn(item, data)
1684
+ )
1685
+ }
1496
1686
  }
1497
1687
  break
1498
1688
  // 不可量化指标
1499
1689
  case 22: {
1500
- item.optionList = []
1501
- this.typeObj.targetArray.push({})
1502
- this.typeObj.targetArray[this.typeObj.targetArray.length - 1] = await this.itemDataFn(item, data)
1690
+ if (type === 'targetArray') {
1691
+ item.optionList = []
1692
+ this.typeObj.targetArray.push({})
1693
+ this.$set(
1694
+ this.typeObj.targetArray,
1695
+ this.typeObj.targetArray.length - 1,
1696
+ await this.itemDataFn(item, data)
1697
+ )
1698
+ }
1503
1699
  }
1504
1700
  break
1505
1701
  // 计算模型
1506
1702
  case 11: {
1507
- item.children = []
1508
- item.tableData = []
1509
- this.typeObj.evalModelArray.push({...item})
1510
- this.typeObj.targetArray.push({})
1511
- this.typeObj.targetArray[this.typeObj.targetArray.length - 1] = await this.itemDataFn(item, data)
1703
+ if (type === 'targetArray') {
1704
+ this.typeObj.targetArray.push({})
1705
+ this.$set(
1706
+ this.typeObj.targetArray,
1707
+ this.typeObj.targetArray.length - 1,
1708
+ await this.itemDataFn(item, data)
1709
+ )
1710
+ } else {
1711
+ item.children = []
1712
+ item.tableData = []
1713
+ this.typeObj.evalModelArray.push({...item})
1714
+ }
1512
1715
  }
1513
1716
  break
1514
1717
  // 评价模型
1515
1718
  case 12: {
1516
- item.children = []
1517
- item.tableData = []
1518
- this.typeObj.assessModelArray.push({...item})
1519
- this.typeObj.targetArray.push({})
1520
- this.typeObj.targetArray[this.typeObj.targetArray.length - 1] = await this.itemDataFn(item, data)
1719
+ if (type === 'targetArray') {
1720
+ this.typeObj.targetArray.push({})
1721
+ this.$set(
1722
+ this.typeObj.targetArray,
1723
+ this.typeObj.targetArray.length - 1,
1724
+ await this.itemDataFn(item, data)
1725
+ )
1726
+ } else {
1727
+ item.children = []
1728
+ item.tableData = []
1729
+ this.typeObj.assessModelArray.push({...item})
1730
+ }
1521
1731
  }
1522
1732
 
1523
1733
  break
1524
1734
  // 统计模型
1525
1735
  case 13: {
1526
- item.children = []
1527
- item.tableData = []
1528
- this.typeObj.statisticsArray.push({...item})
1529
- this.typeObj.targetArray.push({})
1530
- this.typeObj.targetArray[this.typeObj.targetArray.length - 1] = await this.itemDataFn(item, data)
1736
+ if (type === 'targetArray') {
1737
+ this.typeObj.targetArray.push({})
1738
+ this.$set(
1739
+ this.typeObj.targetArray,
1740
+ this.typeObj.targetArray.length - 1,
1741
+ await this.itemDataFn(item, data)
1742
+ )
1743
+ } else {
1744
+ item.children = []
1745
+ item.tableData = []
1746
+ this.typeObj.statisticsArray.push({...item})
1747
+ }
1748
+ // this.typeObj.targetArray[this.typeObj.targetArray.length - 1] = await this.itemDataFn(item, data)
1531
1749
  }
1532
1750
  break
1533
1751
  default:
@@ -1558,6 +1776,25 @@ export default {
1558
1776
  } else {
1559
1777
  return this.modelData.digits
1560
1778
  }
1779
+ },
1780
+ indicatorResultFn(row) {
1781
+ let indicatorResult = ''
1782
+ if (row.indicatorResult || row.indicatorResult === 0) {
1783
+ indicatorResult = Number(row.indicatorResult).toFixed(
1784
+ this.digitsCalc(row.showDigits)
1785
+ )
1786
+ }
1787
+ return indicatorResult
1788
+ },
1789
+ async printFn() {
1790
+ const res = await this.$axios.post('/imes/v1/indicatorModel/print', [
1791
+ {logId: this.id, modelId: this.$route.query.modelId}
1792
+ ])
1793
+ printJS({
1794
+ printable: res.data,
1795
+ type: 'pdf',
1796
+ base64: true
1797
+ })
1561
1798
  }
1562
1799
  }
1563
1800
  }