@nstc-business/imes 1.0.29 → 1.0.31

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.29",
3
+ "version": "1.0.31",
4
4
  "private": false,
5
5
  "main": "src/index.js",
6
6
  "scripts": {
@@ -173,7 +173,8 @@
173
173
  <vxe-column
174
174
  v-if="showModifyReasonCol"
175
175
  min-width="260"
176
- align="center"
176
+ align="left"
177
+ header-align="center"
177
178
  >
178
179
  <template #header>
179
180
  <div>
@@ -187,6 +188,7 @@
187
188
  <template #default="{ row }">
188
189
  <el-input
189
190
  v-if="showManualReason(row)"
191
+ class="reason-input"
190
192
  type="textarea"
191
193
  v-title
192
194
  :class="{ reasonRequireRed: manualReasonRed(row) }"
@@ -199,6 +201,7 @@
199
201
  />
200
202
  <el-input
201
203
  v-if="isQualFn(row)"
204
+ class="reason-input"
202
205
  type="textarea"
203
206
  v-title
204
207
  :show-overflow-tooltip="true"
@@ -211,6 +214,7 @@
211
214
  />
212
215
  <el-input
213
216
  v-else-if="showAdjustReason(row)"
217
+ class="reason-input"
214
218
  type="textarea"
215
219
  v-title
216
220
  :class="{ reasonRequireRed: adjustReasonRed(row) }"
@@ -411,6 +415,17 @@ export default {
411
415
  .full-w {
412
416
  width: 100%;
413
417
  }
418
+ .reason-input {
419
+ display: block;
420
+ width: 100%;
421
+ box-sizing: border-box;
422
+
423
+ ::v-deep .el-textarea__inner {
424
+ width: 100%;
425
+ box-sizing: border-box;
426
+ resize: vertical;
427
+ }
428
+ }
414
429
  .select-top {
415
430
  margin-top: 2px;
416
431
  height: 14px;
@@ -202,7 +202,8 @@
202
202
  <vxe-column
203
203
  v-if="showModifyReasonCol"
204
204
  min-width="260"
205
- align="center"
205
+ align="left"
206
+ header-align="center"
206
207
  >
207
208
  <template #header>
208
209
  <div>
@@ -216,6 +217,7 @@
216
217
  <template #default="{ row }">
217
218
  <el-input
218
219
  v-if="showManualModifiedReasonFn(row)"
220
+ class="reason-input"
219
221
  type="textarea"
220
222
  v-title
221
223
  :class="{ reasonRequireRed: manualReasonRequireRedFn(row) }"
@@ -228,6 +230,7 @@
228
230
  />
229
231
  <el-input
230
232
  v-if="showAdjustModifiedReasonFn(row)"
233
+ class="reason-input"
231
234
  type="textarea"
232
235
  v-title
233
236
  :class="{ reasonRequireRed: adjustReasonRequireRedFn(row) }"
@@ -376,7 +379,8 @@
376
379
  <vxe-column
377
380
  v-if="showModifyReasonCol"
378
381
  min-width="260"
379
- align="center"
382
+ align="left"
383
+ header-align="center"
380
384
  >
381
385
  <template #header>
382
386
  <div>
@@ -390,6 +394,7 @@
390
394
  <template #default="{ row }">
391
395
  <el-input
392
396
  v-if="showManualModifiedReasonFn(row)"
397
+ class="reason-input"
393
398
  type="textarea"
394
399
  v-title
395
400
  :class="{ reasonRequireRed: manualReasonRequireRedFn(row) }"
@@ -402,6 +407,7 @@
402
407
  />
403
408
  <el-input
404
409
  v-if="showAdjustModifiedReasonFn(row)"
410
+ class="reason-input"
405
411
  type="textarea"
406
412
  v-title
407
413
  :class="{ reasonRequireRed: adjustReasonRequireRedFn(row) }"
@@ -750,6 +756,17 @@ export default {
750
756
  .full-w {
751
757
  width: 100%;
752
758
  }
759
+ .reason-input {
760
+ display: block;
761
+ width: 100%;
762
+ box-sizing: border-box;
763
+
764
+ ::v-deep .el-textarea__inner {
765
+ width: 100%;
766
+ box-sizing: border-box;
767
+ resize: vertical;
768
+ }
769
+ }
753
770
  .row-serial {
754
771
  color: #606266;
755
772
  font-variant-numeric: tabular-nums;
@@ -505,3 +505,30 @@ export function normalizeTree(nodes, leafList = [], qualList = []) {
505
505
  })
506
506
  return { leafList, qualList }
507
507
  }
508
+
509
+ function hasEchoValue(val) {
510
+ return val !== '' && val != null && val !== undefined
511
+ }
512
+
513
+ /**
514
+ * 测算结果回写到输入框的值。
515
+ * 手工填报必须回显 indicatorResult;不能用 modifiedVal。
516
+ * 后端日志在未调整时会把 null 格式化成 0,若写回 value 会把已填指标值冲成 0。
517
+ * 时间:2026-09-05;人员:AI && 徐红飞;入参:target/source 节点;出参:回显值或 undefined;方法内容:按取数来源/调整项选择回显字段
518
+ */
519
+ export function resolveCalcEchoValue(target, source) {
520
+ if (!target || !source) return undefined
521
+ if (target.sourceType === 3 && !isQualIndicator(target)) {
522
+ if (hasEchoValue(source.indicatorResult)) return source.indicatorResult
523
+ return undefined
524
+ }
525
+ if (target.itemType !== 22 && Number(target.modifyRank) === 2 && hasEchoValue(source.modifiedVal)) {
526
+ return source.modifiedVal
527
+ }
528
+ return undefined
529
+ }
530
+
531
+ /** 非「调整指标值」时,日志里的 modifiedVal=0 不是真实调整,不能覆盖到节点 */
532
+ export function shouldApplyModifiedVal(target, source) {
533
+ return !!(target && source && Number(target.modifyRank) === 2 && hasEchoValue(source.modifiedVal))
534
+ }
@@ -215,7 +215,9 @@ import {
215
215
  isStatRootModel as checkStatRootModel,
216
216
  subModelResultText as formatSubModelResult,
217
217
  saveSubModelValueText,
218
- formatScoreText
218
+ formatScoreText,
219
+ resolveCalcEchoValue,
220
+ shouldApplyModifiedVal
219
221
  } from './helpers'
220
222
  import { preprocessStatIndicatorDeepList, mergeStatModelNode, statItemChildren } from './statModelHelper'
221
223
  import { withRequestTimestamp } from './api'
@@ -1290,7 +1292,6 @@ export default {
1290
1292
  'calcLogs',
1291
1293
  'relFormula',
1292
1294
  'displayFormula',
1293
- 'modifiedVal',
1294
1295
  'modifiedResult'
1295
1296
  ]
1296
1297
  fields.forEach(key => {
@@ -1298,8 +1299,13 @@ export default {
1298
1299
  this.$set(target, key, source[key])
1299
1300
  }
1300
1301
  })
1301
- if (target.itemType !== 22 && (source.modifiedVal || source.modifiedVal === 0)) {
1302
- this.$set(target, 'value', source.modifiedVal)
1302
+ // 未调整时后端 modifiedVal 常为 0,不能覆盖手工填报的指标值
1303
+ if (shouldApplyModifiedVal(target, source)) {
1304
+ this.$set(target, 'modifiedVal', source.modifiedVal)
1305
+ }
1306
+ const echoValue = resolveCalcEchoValue(target, source)
1307
+ if (echoValue !== undefined) {
1308
+ this.$set(target, 'value', echoValue)
1303
1309
  }
1304
1310
  },
1305
1311