@zscreate/h-form-error-correction 0.0.4 → 0.0.5

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.
@@ -8082,7 +8082,7 @@ $({
8082
8082
  (module) {
8083
8083
 
8084
8084
  "use strict";
8085
- module.exports = {"rE":"0.0.4"};
8085
+ module.exports = {"rE":"0.0.5"};
8086
8086
 
8087
8087
  /***/ }
8088
8088
 
@@ -8213,7 +8213,7 @@ if (typeof window !== 'undefined') {
8213
8213
  // Indicate to webpack that this file can be concatenated
8214
8214
  /* harmony default export */ const setPublicPath = (null);
8215
8215
 
8216
- ;// ./node_modules/_thread-loader@3.0.4@thread-loader/dist/cjs.js!./node_modules/_babel-loader@8.4.1@babel-loader/lib/index.js??clonedRuleSet-40.use[1]!./node_modules/_vue-loader@15.11.1@vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/_vue-loader@15.11.1@vue-loader/lib/index.js??vue-loader-options!./src/components/formCorrectionLayout/index.vue?vue&type=template&id=972b2878&scoped=true
8216
+ ;// ./node_modules/_thread-loader@3.0.4@thread-loader/dist/cjs.js!./node_modules/_babel-loader@8.4.1@babel-loader/lib/index.js??clonedRuleSet-40.use[1]!./node_modules/_vue-loader@15.11.1@vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/_vue-loader@15.11.1@vue-loader/lib/index.js??vue-loader-options!./src/components/formCorrectionLayout/index.vue?vue&type=template&id=2e9085f1&scoped=true
8217
8217
  var render = function render() {
8218
8218
  var _vm = this,
8219
8219
  _c = _vm._self._c;
@@ -8226,7 +8226,7 @@ var render = function render() {
8226
8226
  }, [_c('a-col', {
8227
8227
  staticClass: "formCorrectionLayout-left",
8228
8228
  attrs: {
8229
- "span": _vm.isCorrection ? 24 : 18
8229
+ "span": !_vm.isCorrection ? 24 : 16
8230
8230
  }
8231
8231
  }, [_c('a-form-model', {
8232
8232
  ref: "ruleForm",
@@ -8247,7 +8247,8 @@ var render = function render() {
8247
8247
  attrs: {
8248
8248
  "widget": widget,
8249
8249
  "models": _vm.models,
8250
- "rules": _vm.rules
8250
+ "rules": _vm.rules,
8251
+ "disabled": _vm.disabled
8251
8252
  },
8252
8253
  on: {
8253
8254
  "update:models": function ($event) {
@@ -8261,7 +8262,8 @@ var render = function render() {
8261
8262
  attrs: {
8262
8263
  "widget": widget,
8263
8264
  "models": _vm.models,
8264
- "rules": _vm.rules
8265
+ "rules": _vm.rules,
8266
+ "disabled": _vm.disabled
8265
8267
  },
8266
8268
  on: {
8267
8269
  "update:models": function ($event) {
@@ -8275,7 +8277,8 @@ var render = function render() {
8275
8277
  attrs: {
8276
8278
  "widget": widget,
8277
8279
  "models": _vm.models,
8278
- "rules": _vm.rules
8280
+ "rules": _vm.rules,
8281
+ "disabled": _vm.disabled
8279
8282
  },
8280
8283
  on: {
8281
8284
  "update:models": function ($event) {
@@ -8289,7 +8292,8 @@ var render = function render() {
8289
8292
  attrs: {
8290
8293
  "widget": widget,
8291
8294
  "models": _vm.models,
8292
- "rules": _vm.rules
8295
+ "rules": _vm.rules,
8296
+ "disabled": _vm.disabled
8293
8297
  },
8294
8298
  on: {
8295
8299
  "update:models": function ($event) {
@@ -8303,7 +8307,8 @@ var render = function render() {
8303
8307
  attrs: {
8304
8308
  "widget": widget,
8305
8309
  "models": _vm.models,
8306
- "rules": _vm.rules
8310
+ "rules": _vm.rules,
8311
+ "disabled": _vm.disabled
8307
8312
  },
8308
8313
  on: {
8309
8314
  "update:models": function ($event) {
@@ -8352,7 +8357,8 @@ var render = function render() {
8352
8357
  "rules": _vm.rules,
8353
8358
  "hiddenLabel": true,
8354
8359
  "tableKey": widget.tableIdObj.tableName,
8355
- "tableId": record.id
8360
+ "tableId": record.id,
8361
+ "disabled": _vm.disabled
8356
8362
  },
8357
8363
  on: {
8358
8364
  "update:models": function ($event) {
@@ -8374,7 +8380,8 @@ var render = function render() {
8374
8380
  "rules": _vm.rules,
8375
8381
  "hiddenLabel": true,
8376
8382
  "tableKey": widget.tableIdObj.tableName,
8377
- "tableId": record.id
8383
+ "tableId": record.id,
8384
+ "disabled": _vm.disabled
8378
8385
  },
8379
8386
  on: {
8380
8387
  "update:models": function ($event) {
@@ -8396,7 +8403,8 @@ var render = function render() {
8396
8403
  "rules": _vm.rules,
8397
8404
  "hiddenLabel": true,
8398
8405
  "tableKey": widget.tableIdObj.tableName,
8399
- "tableId": record.id
8406
+ "tableId": record.id,
8407
+ "disabled": _vm.disabled
8400
8408
  },
8401
8409
  on: {
8402
8410
  "update:models": function ($event) {
@@ -8418,7 +8426,8 @@ var render = function render() {
8418
8426
  "rules": _vm.rules,
8419
8427
  "hiddenLabel": true,
8420
8428
  "tableKey": widget.tableIdObj.tableName,
8421
- "tableId": record.id
8429
+ "tableId": record.id,
8430
+ "disabled": _vm.disabled
8422
8431
  },
8423
8432
  on: {
8424
8433
  "update:models": function ($event) {
@@ -8440,7 +8449,8 @@ var render = function render() {
8440
8449
  "rules": _vm.rules,
8441
8450
  "hiddenLabel": true,
8442
8451
  "tableKey": widget.tableIdObj.tableName,
8443
- "tableId": record.id
8452
+ "tableId": record.id,
8453
+ "disabled": _vm.disabled
8444
8454
  },
8445
8455
  on: {
8446
8456
  "update:models": function ($event) {
@@ -8452,12 +8462,34 @@ var render = function render() {
8452
8462
  }
8453
8463
  })];
8454
8464
  }
8465
+ }, {
8466
+ key: "action",
8467
+ fn: function (text, record, rowIndex) {
8468
+ return [_c('a-popconfirm', {
8469
+ attrs: {
8470
+ "title": "确定要删除这条数据吗?",
8471
+ "ok-text": "确定",
8472
+ "cancel-text": "取消"
8473
+ },
8474
+ on: {
8475
+ "confirm": function ($event) {
8476
+ return _vm.deleteChildRow(widget.tableIdObj.tableName, record.id);
8477
+ }
8478
+ }
8479
+ }, [_c('a-button', {
8480
+ staticStyle: {
8481
+ "color": "#ff4d4f"
8482
+ },
8483
+ attrs: {
8484
+ "type": "link",
8485
+ "size": "small"
8486
+ }
8487
+ }, [_vm._v(" 删除 ")])], 1)];
8488
+ }
8455
8489
  }], null, true)
8456
- }, [_c('template', {
8457
- slot: "action"
8458
- }, [_vm._v(" 删除 ")])], 2), _c('div', {
8490
+ }), _c('div', {
8459
8491
  staticClass: "permission"
8460
- }, [_c('a-button', {
8492
+ }, [_vm.childTablePromise[_vm.activeKey] && _vm.childTablePromise[_vm.activeKey].add || !_vm.isCorrection ? _c('div', [_c('a-button', {
8461
8493
  attrs: {
8462
8494
  "icon": "plus-circle",
8463
8495
  "type": "link"
@@ -8465,18 +8497,96 @@ var render = function render() {
8465
8497
  on: {
8466
8498
  "click": _vm.addChildModel
8467
8499
  }
8468
- }, [_vm._v(" 添加一行 ")]), _c('a-button', {
8500
+ }, [_vm._v(" 添加一行 ")])], 1) : _vm._e(), _vm.childTablePromise[_vm.activeKey] && _vm.childTablePromise[_vm.activeKey].export || !_vm.isCorrection ? _c('a-button', {
8469
8501
  attrs: {
8470
8502
  "icon": "download",
8471
8503
  "type": "link"
8472
8504
  }
8473
- }, [_vm._v(" 导出 ")])], 1)], 1);
8505
+ }, [_vm._v(" 导出 ")]) : _vm._e()], 1)], 1);
8474
8506
  }), 1)], 1) : _vm._e()], 1)], 1), _c('a-col', {
8475
8507
  staticClass: "formCorrectionLayout-right",
8476
8508
  attrs: {
8477
- "span": _vm.isCorrection ? 0 : 6
8509
+ "span": !_vm.isCorrection ? 0 : 8
8478
8510
  }
8479
- })], 1)], 1);
8511
+ }, [_vm.isCorrection ? _c('div', {
8512
+ staticClass: "modification-history"
8513
+ }, [_c('div', {
8514
+ staticClass: "history-header"
8515
+ }, [_c('a-icon', {
8516
+ attrs: {
8517
+ "type": "edit"
8518
+ }
8519
+ }), _c('span', [_vm._v("修改痕迹 (" + _vm._s(_vm.modificationHistory.length) + ")")])], 1), _c('div', {
8520
+ staticClass: "history-list"
8521
+ }, [_vm._l(_vm.modificationHistory, function (item, index) {
8522
+ return _c('div', {
8523
+ key: index,
8524
+ staticClass: "history-item"
8525
+ }, [_c('div', {
8526
+ staticClass: "history-item-header"
8527
+ }, [_c('span', {
8528
+ staticClass: "history-field"
8529
+ }, [_vm._v(_vm._s(item.fieldLabel))]), _c('span', {
8530
+ staticClass: "history-time"
8531
+ }, [_vm._v(_vm._s(item.time))])]), _c('div', {
8532
+ staticClass: "history-item-content"
8533
+ }, [item.type === 'modify' ? _c('div', {
8534
+ staticClass: "history-change"
8535
+ }, [_c('div', {
8536
+ staticClass: "old-value"
8537
+ }, [_c('span', {
8538
+ staticClass: "label"
8539
+ }, [_vm._v("原值:")]), _c('span', {
8540
+ staticClass: "value"
8541
+ }, [_vm._v(_vm._s(item.oldValue || "空"))])]), _c('div', {
8542
+ staticClass: "new-value"
8543
+ }, [_c('span', {
8544
+ staticClass: "label"
8545
+ }, [_vm._v("新值:")]), _c('span', {
8546
+ staticClass: "value"
8547
+ }, [_vm._v(_vm._s(item.newValue || "空"))])])]) : _c('div', {
8548
+ staticClass: "history-operation"
8549
+ }, [_c('a-tag', {
8550
+ attrs: {
8551
+ "color": item.type === 'add' ? 'green' : 'red'
8552
+ }
8553
+ }, [_vm._v(" " + _vm._s(item.type === "add" ? "新增行" : "删除行") + " ")]), item.tableName ? _c('span', [_vm._v(" " + _vm._s(item.tableName) + " "), item.rowCount !== undefined ? _c('span', {
8554
+ staticClass: "row-count"
8555
+ }, [_vm._v(" (当前 " + _vm._s(item.rowCount) + " 行) ")]) : _vm._e(), item.deletedRowIndex ? _c('span', {
8556
+ staticClass: "deleted-row"
8557
+ }, [_vm._v(" - 第" + _vm._s(item.deletedRowIndex) + "行 ")]) : _vm._e()]) : _vm._e()], 1)])]);
8558
+ }), _vm.modificationHistory.length === 0 ? _c('a-empty', {
8559
+ attrs: {
8560
+ "description": "暂无修改记录"
8561
+ }
8562
+ }) : _vm._e()], 2), _c('div', {
8563
+ staticClass: "evidence-materials"
8564
+ }, [_c('div', {
8565
+ staticClass: "evidence-header"
8566
+ }, [_c('a-icon', {
8567
+ attrs: {
8568
+ "type": "paper-clip"
8569
+ }
8570
+ }), _c('span', [_vm._v("佐证材料")])], 1), _c('div', {
8571
+ staticClass: "evidence-content"
8572
+ }, [_c('fileUpload-component', {
8573
+ attrs: {
8574
+ "widget": _vm.evidenceWidget,
8575
+ "models": _vm.evidenceModels,
8576
+ "rules": _vm.evidenceRules,
8577
+ "hiddenLabel": true,
8578
+ "disabled": _vm.disabled,
8579
+ "placeholder": "请上传佐证材料(支持JPG,PNG,PDF)"
8580
+ },
8581
+ on: {
8582
+ "update:models": function ($event) {
8583
+ _vm.evidenceModels = $event;
8584
+ },
8585
+ "update:rules": function ($event) {
8586
+ _vm.evidenceRules = $event;
8587
+ }
8588
+ }
8589
+ })], 1)])]) : _vm._e()])], 1)], 1);
8480
8590
  };
8481
8591
  var staticRenderFns = [];
8482
8592
 
@@ -8496,12 +8606,16 @@ var es_iterator_find = __webpack_require__(4790);
8496
8606
  var es_iterator_for_each = __webpack_require__(286);
8497
8607
  // EXTERNAL MODULE: ./node_modules/_core-js@3.48.0@core-js/modules/es.iterator.map.js
8498
8608
  var es_iterator_map = __webpack_require__(5227);
8609
+ // EXTERNAL MODULE: ./node_modules/_core-js@3.48.0@core-js/modules/es.json.parse.js
8610
+ var es_json_parse = __webpack_require__(3514);
8611
+ // EXTERNAL MODULE: ./node_modules/_core-js@3.48.0@core-js/modules/es.json.stringify.js
8612
+ var es_json_stringify = __webpack_require__(3204);
8499
8613
  // EXTERNAL MODULE: ./node_modules/_core-js@3.48.0@core-js/modules/es.map.get-or-insert.js
8500
8614
  var es_map_get_or_insert = __webpack_require__(7517);
8501
8615
  // EXTERNAL MODULE: ./node_modules/_core-js@3.48.0@core-js/modules/es.map.get-or-insert-computed.js
8502
8616
  var es_map_get_or_insert_computed = __webpack_require__(1869);
8503
- ;// ./node_modules/_thread-loader@3.0.4@thread-loader/dist/cjs.js!./node_modules/_babel-loader@8.4.1@babel-loader/lib/index.js??clonedRuleSet-40.use[1]!./node_modules/_vue-loader@15.11.1@vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/_vue-loader@15.11.1@vue-loader/lib/index.js??vue-loader-options!./src/components/formCorrectionLayout/components/input/index.vue?vue&type=template&id=956a611c&scoped=true
8504
- var inputvue_type_template_id_956a611c_scoped_true_render = function render() {
8617
+ ;// ./node_modules/_thread-loader@3.0.4@thread-loader/dist/cjs.js!./node_modules/_babel-loader@8.4.1@babel-loader/lib/index.js??clonedRuleSet-40.use[1]!./node_modules/_vue-loader@15.11.1@vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/_vue-loader@15.11.1@vue-loader/lib/index.js??vue-loader-options!./src/components/formCorrectionLayout/components/input/index.vue?vue&type=template&id=2c5cafb9&scoped=true
8618
+ var inputvue_type_template_id_2c5cafb9_scoped_true_render = function render() {
8505
8619
  var _vm = this,
8506
8620
  _c = _vm._self._c;
8507
8621
  return _c('div', [_c('a-form-model-item', {
@@ -8513,7 +8627,7 @@ var inputvue_type_template_id_956a611c_scoped_true_render = function render() {
8513
8627
  attrs: {
8514
8628
  "title": _vm.dataModel,
8515
8629
  "disabled": _vm.isDisabled,
8516
- "placeholder": '请输入' + _vm.widget.fieldNotes
8630
+ "placeholder": _vm.placeholder || '请输入' + _vm.widget.fieldNotes
8517
8631
  },
8518
8632
  model: {
8519
8633
  value: _vm.dataModel,
@@ -8524,7 +8638,7 @@ var inputvue_type_template_id_956a611c_scoped_true_render = function render() {
8524
8638
  }
8525
8639
  })], 1)], 1);
8526
8640
  };
8527
- var inputvue_type_template_id_956a611c_scoped_true_staticRenderFns = [];
8641
+ var inputvue_type_template_id_2c5cafb9_scoped_true_staticRenderFns = [];
8528
8642
 
8529
8643
  // EXTERNAL MODULE: ./node_modules/_core-js@3.48.0@core-js/modules/es.error.cause.js
8530
8644
  var es_error_cause = __webpack_require__(5022);
@@ -8674,6 +8788,16 @@ var moment_default = /*#__PURE__*/__webpack_require__.n(moment);
8674
8788
  //本地字典
8675
8789
  dictTable: {} //数据中心字典
8676
8790
  } // 默认值
8791
+ },
8792
+ recordModification: {
8793
+ from: "recordModification",
8794
+ // 记录修改的方法
8795
+ default: () => () => {} // 默认空函数
8796
+ },
8797
+ isInitialized: {
8798
+ from: "isInitialized",
8799
+ // 初始化状态检查函数
8800
+ default: () => () => true // 默认返回true
8677
8801
  }
8678
8802
  },
8679
8803
  data() {
@@ -8716,6 +8840,15 @@ var moment_default = /*#__PURE__*/__webpack_require__.n(moment);
8716
8840
  hiddenLabel: {
8717
8841
  type: Boolean,
8718
8842
  default: false
8843
+ },
8844
+ disabled: {
8845
+ //是否禁用
8846
+ type: Boolean,
8847
+ default: false
8848
+ },
8849
+ placeholder: {
8850
+ type: String,
8851
+ default: ""
8719
8852
  }
8720
8853
  },
8721
8854
  beforeMount() {},
@@ -8726,7 +8859,7 @@ var moment_default = /*#__PURE__*/__webpack_require__.n(moment);
8726
8859
  isDisabled() {
8727
8860
  // isCorrection为false代表新增纠错都不禁用(默认false)
8728
8861
  // correctionType为4代表仅展示
8729
- return this.isCorrection && this.widget.correctionType == 4;
8862
+ return this.isCorrection && this.widget.correctionType == 4 || this.disabled;
8730
8863
  },
8731
8864
  // 数据模型计算属性,用于双向绑定
8732
8865
  dataModel: {
@@ -8746,6 +8879,8 @@ var moment_default = /*#__PURE__*/__webpack_require__.n(moment);
8746
8879
  }
8747
8880
  },
8748
8881
  set(val) {
8882
+ // 获取旧值用于记录修改
8883
+ const oldValue = this.dataModel;
8749
8884
  if (this.tableKey) {
8750
8885
  // 子表数据更新
8751
8886
  const arr = this.models[this.tableKey] || [];
@@ -8758,6 +8893,15 @@ var moment_default = /*#__PURE__*/__webpack_require__.n(moment);
8758
8893
  this.$set(this.models, this.widget.fieldName, val);
8759
8894
  }
8760
8895
 
8896
+ // 记录修改痕迹(无需判断oldValue,由父组件的isInitialized控制)
8897
+ this.recordModification({
8898
+ widget: this.widget,
8899
+ oldValue: oldValue,
8900
+ newValue: val,
8901
+ tableKey: this.tableKey,
8902
+ tableId: this.tableId
8903
+ });
8904
+
8761
8905
  // 触发表单校验
8762
8906
  this.validateWidget();
8763
8907
  }
@@ -9041,18 +9185,18 @@ function normalizeComponent(
9041
9185
  ;
9042
9186
  var component = normalizeComponent(
9043
9187
  components_inputvue_type_script_lang_js,
9044
- inputvue_type_template_id_956a611c_scoped_true_render,
9045
- inputvue_type_template_id_956a611c_scoped_true_staticRenderFns,
9188
+ inputvue_type_template_id_2c5cafb9_scoped_true_render,
9189
+ inputvue_type_template_id_2c5cafb9_scoped_true_staticRenderFns,
9046
9190
  false,
9047
9191
  null,
9048
- "956a611c",
9192
+ "2c5cafb9",
9049
9193
  null
9050
9194
 
9051
9195
  )
9052
9196
 
9053
9197
  /* harmony default export */ const input = (component.exports);
9054
- ;// ./node_modules/_thread-loader@3.0.4@thread-loader/dist/cjs.js!./node_modules/_babel-loader@8.4.1@babel-loader/lib/index.js??clonedRuleSet-40.use[1]!./node_modules/_vue-loader@15.11.1@vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/_vue-loader@15.11.1@vue-loader/lib/index.js??vue-loader-options!./src/components/formCorrectionLayout/components/select/index.vue?vue&type=template&id=5eadb518&scoped=true
9055
- var selectvue_type_template_id_5eadb518_scoped_true_render = function render() {
9198
+ ;// ./node_modules/_thread-loader@3.0.4@thread-loader/dist/cjs.js!./node_modules/_babel-loader@8.4.1@babel-loader/lib/index.js??clonedRuleSet-40.use[1]!./node_modules/_vue-loader@15.11.1@vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/_vue-loader@15.11.1@vue-loader/lib/index.js??vue-loader-options!./src/components/formCorrectionLayout/components/select/index.vue?vue&type=template&id=7281c48a&scoped=true
9199
+ var selectvue_type_template_id_7281c48a_scoped_true_render = function render() {
9056
9200
  var _vm = this,
9057
9201
  _c = _vm._self._c;
9058
9202
  return _c('div', [_c('a-form-model-item', {
@@ -9062,7 +9206,7 @@ var selectvue_type_template_id_5eadb518_scoped_true_render = function render() {
9062
9206
  }
9063
9207
  }, [_c('a-select', {
9064
9208
  attrs: {
9065
- "placeholder": '请选择' + _vm.widget.fieldNotes,
9209
+ "placeholder": _vm.placeholder || '请选择' + _vm.widget.fieldNotes,
9066
9210
  "show-search": "",
9067
9211
  "filterOption": _vm.filterOption,
9068
9212
  "disabled": _vm.isDisabled,
@@ -9084,7 +9228,7 @@ var selectvue_type_template_id_5eadb518_scoped_true_render = function render() {
9084
9228
  }, [_vm._v(_vm._s(el.title))]);
9085
9229
  }), 1)], 1)], 1);
9086
9230
  };
9087
- var selectvue_type_template_id_5eadb518_scoped_true_staticRenderFns = [];
9231
+ var selectvue_type_template_id_7281c48a_scoped_true_staticRenderFns = [];
9088
9232
 
9089
9233
  ;// ./node_modules/_thread-loader@3.0.4@thread-loader/dist/cjs.js!./node_modules/_babel-loader@8.4.1@babel-loader/lib/index.js??clonedRuleSet-40.use[1]!./node_modules/_vue-loader@15.11.1@vue-loader/lib/index.js??vue-loader-options!./src/components/formCorrectionLayout/components/select/index.vue?vue&type=script&lang=js
9090
9234
 
@@ -9118,18 +9262,18 @@ var selectvue_type_template_id_5eadb518_scoped_true_staticRenderFns = [];
9118
9262
  ;
9119
9263
  var select_component = normalizeComponent(
9120
9264
  components_selectvue_type_script_lang_js,
9121
- selectvue_type_template_id_5eadb518_scoped_true_render,
9122
- selectvue_type_template_id_5eadb518_scoped_true_staticRenderFns,
9265
+ selectvue_type_template_id_7281c48a_scoped_true_render,
9266
+ selectvue_type_template_id_7281c48a_scoped_true_staticRenderFns,
9123
9267
  false,
9124
9268
  null,
9125
- "5eadb518",
9269
+ "7281c48a",
9126
9270
  null
9127
9271
 
9128
9272
  )
9129
9273
 
9130
9274
  /* harmony default export */ const components_select = (select_component.exports);
9131
- ;// ./node_modules/_thread-loader@3.0.4@thread-loader/dist/cjs.js!./node_modules/_babel-loader@8.4.1@babel-loader/lib/index.js??clonedRuleSet-40.use[1]!./node_modules/_vue-loader@15.11.1@vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/_vue-loader@15.11.1@vue-loader/lib/index.js??vue-loader-options!./src/components/formCorrectionLayout/components/number/index.vue?vue&type=template&id=86ae2a6e&scoped=true
9132
- var numbervue_type_template_id_86ae2a6e_scoped_true_render = function render() {
9275
+ ;// ./node_modules/_thread-loader@3.0.4@thread-loader/dist/cjs.js!./node_modules/_babel-loader@8.4.1@babel-loader/lib/index.js??clonedRuleSet-40.use[1]!./node_modules/_vue-loader@15.11.1@vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/_vue-loader@15.11.1@vue-loader/lib/index.js??vue-loader-options!./src/components/formCorrectionLayout/components/number/index.vue?vue&type=template&id=0ecfcf1c&scoped=true
9276
+ var numbervue_type_template_id_0ecfcf1c_scoped_true_render = function render() {
9133
9277
  var _vm = this,
9134
9278
  _c = _vm._self._c;
9135
9279
  return _c('div', [_c('a-form-model-item', {
@@ -9143,7 +9287,7 @@ var numbervue_type_template_id_86ae2a6e_scoped_true_render = function render() {
9143
9287
  },
9144
9288
  attrs: {
9145
9289
  "disabled": _vm.isDisabled,
9146
- "placeholder": '请输入' + _vm.widget.fieldNotes,
9290
+ "placeholder": _vm.placeholder || '请输入' + _vm.widget.fieldNotes,
9147
9291
  "max": _vm.widget.rules ? _vm.widget.rules.max : undefined,
9148
9292
  "min": _vm.widget.rules ? _vm.widget.rules.min : undefined
9149
9293
  },
@@ -9156,7 +9300,7 @@ var numbervue_type_template_id_86ae2a6e_scoped_true_render = function render() {
9156
9300
  }
9157
9301
  })], 1)], 1);
9158
9302
  };
9159
- var numbervue_type_template_id_86ae2a6e_scoped_true_staticRenderFns = [];
9303
+ var numbervue_type_template_id_0ecfcf1c_scoped_true_staticRenderFns = [];
9160
9304
 
9161
9305
  ;// ./node_modules/_thread-loader@3.0.4@thread-loader/dist/cjs.js!./node_modules/_babel-loader@8.4.1@babel-loader/lib/index.js??clonedRuleSet-40.use[1]!./node_modules/_vue-loader@15.11.1@vue-loader/lib/index.js??vue-loader-options!./src/components/formCorrectionLayout/components/number/index.vue?vue&type=script&lang=js
9162
9306
 
@@ -9185,11 +9329,11 @@ var numbervue_type_template_id_86ae2a6e_scoped_true_staticRenderFns = [];
9185
9329
  ;
9186
9330
  var number_component = normalizeComponent(
9187
9331
  components_numbervue_type_script_lang_js,
9188
- numbervue_type_template_id_86ae2a6e_scoped_true_render,
9189
- numbervue_type_template_id_86ae2a6e_scoped_true_staticRenderFns,
9332
+ numbervue_type_template_id_0ecfcf1c_scoped_true_render,
9333
+ numbervue_type_template_id_0ecfcf1c_scoped_true_staticRenderFns,
9190
9334
  false,
9191
9335
  null,
9192
- "86ae2a6e",
9336
+ "0ecfcf1c",
9193
9337
  null
9194
9338
 
9195
9339
  )
@@ -9262,8 +9406,8 @@ var date_component = normalizeComponent(
9262
9406
  )
9263
9407
 
9264
9408
  /* harmony default export */ const date = (date_component.exports);
9265
- ;// ./node_modules/_thread-loader@3.0.4@thread-loader/dist/cjs.js!./node_modules/_babel-loader@8.4.1@babel-loader/lib/index.js??clonedRuleSet-40.use[1]!./node_modules/_vue-loader@15.11.1@vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/_vue-loader@15.11.1@vue-loader/lib/index.js??vue-loader-options!./src/components/formCorrectionLayout/components/fileUpload/index.vue?vue&type=template&id=f1ea0c52&scoped=true
9266
- var fileUploadvue_type_template_id_f1ea0c52_scoped_true_render = function render() {
9409
+ ;// ./node_modules/_thread-loader@3.0.4@thread-loader/dist/cjs.js!./node_modules/_babel-loader@8.4.1@babel-loader/lib/index.js??clonedRuleSet-40.use[1]!./node_modules/_vue-loader@15.11.1@vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/_vue-loader@15.11.1@vue-loader/lib/index.js??vue-loader-options!./src/components/formCorrectionLayout/components/fileUpload/index.vue?vue&type=template&id=73d474bc&scoped=true
9410
+ var fileUploadvue_type_template_id_73d474bc_scoped_true_render = function render() {
9267
9411
  var _vm = this,
9268
9412
  _c = _vm._self._c;
9269
9413
  return _c('div', [_c('a-form-model-item', {
@@ -9279,7 +9423,7 @@ var fileUploadvue_type_template_id_f1ea0c52_scoped_true_render = function render
9279
9423
  attrs: {
9280
9424
  "value": _vm.fileCountText,
9281
9425
  "disabled": _vm.isDisabled,
9282
- "placeholder": '请选择' + _vm.widget.fieldNotes,
9426
+ "placeholder": _vm.placeholder || '请选择' + _vm.widget.fieldNotes,
9283
9427
  "readOnly": ""
9284
9428
  },
9285
9429
  nativeOn: {
@@ -9366,12 +9510,8 @@ var fileUploadvue_type_template_id_f1ea0c52_scoped_true_render = function render
9366
9510
  })], 1);
9367
9511
  }), 0)]) : _vm._e()], 1)])], 1);
9368
9512
  };
9369
- var fileUploadvue_type_template_id_f1ea0c52_scoped_true_staticRenderFns = [];
9513
+ var fileUploadvue_type_template_id_73d474bc_scoped_true_staticRenderFns = [];
9370
9514
 
9371
- // EXTERNAL MODULE: ./node_modules/_core-js@3.48.0@core-js/modules/es.json.parse.js
9372
- var es_json_parse = __webpack_require__(3514);
9373
- // EXTERNAL MODULE: ./node_modules/_core-js@3.48.0@core-js/modules/es.json.stringify.js
9374
- var es_json_stringify = __webpack_require__(3204);
9375
9515
  ;// ./node_modules/_thread-loader@3.0.4@thread-loader/dist/cjs.js!./node_modules/_babel-loader@8.4.1@babel-loader/lib/index.js??clonedRuleSet-40.use[1]!./node_modules/_vue-loader@15.11.1@vue-loader/lib/index.js??vue-loader-options!./src/components/formCorrectionLayout/components/fileUpload/index.vue?vue&type=script&lang=js
9376
9516
 
9377
9517
 
@@ -9393,7 +9533,7 @@ var es_json_stringify = __webpack_require__(3204);
9393
9533
  computed: {
9394
9534
  // 文件数量显示文本
9395
9535
  fileCountText() {
9396
- return this.fileList.length > 0 ? `已选择 ${this.fileList.length} 个文件` : "";
9536
+ return this.fileList.length > 0 ? `已上传 ${this.fileList.length} 个文件` : "";
9397
9537
  },
9398
9538
  // 允许的文件类型
9399
9539
  acceptFileTypes() {
@@ -9545,10 +9685,19 @@ var es_json_stringify = __webpack_require__(3204);
9545
9685
  },
9546
9686
  // 格式化文件大小
9547
9687
  formatFileSize(bytes) {
9688
+ // 检查bytes是否为有效数值
9689
+ if (bytes === undefined || bytes === null || isNaN(bytes)) {
9690
+ return "未知文件大小";
9691
+ }
9548
9692
  if (bytes === 0) return "0 B";
9549
9693
  const k = 1024;
9550
9694
  const sizes = ["B", "KB", "MB", "GB"];
9551
9695
  const i = Math.floor(Math.log(bytes) / Math.log(k));
9696
+
9697
+ // 确保i在有效范围内
9698
+ if (i < 0 || i >= sizes.length) {
9699
+ return "未知文件大小";
9700
+ }
9552
9701
  return (bytes / Math.pow(k, i)).toFixed(2) + " " + sizes[i];
9553
9702
  },
9554
9703
  // 取消
@@ -9565,10 +9714,10 @@ var es_json_stringify = __webpack_require__(3204);
9565
9714
  });
9566
9715
  ;// ./src/components/formCorrectionLayout/components/fileUpload/index.vue?vue&type=script&lang=js
9567
9716
  /* harmony default export */ const components_fileUploadvue_type_script_lang_js = (fileUploadvue_type_script_lang_js);
9568
- ;// ./node_modules/_mini-css-extract-plugin@2.10.0@mini-css-extract-plugin/dist/loader.js??clonedRuleSet-32.use[0]!./node_modules/_css-loader@6.11.0@css-loader/dist/cjs.js??clonedRuleSet-32.use[1]!./node_modules/_vue-loader@15.11.1@vue-loader/lib/loaders/stylePostLoader.js!./node_modules/_postcss-loader@6.2.1@postcss-loader/dist/cjs.js??clonedRuleSet-32.use[2]!./node_modules/_less-loader@11.1.4@less-loader/dist/cjs.js??clonedRuleSet-32.use[3]!./node_modules/_vue-loader@15.11.1@vue-loader/lib/index.js??vue-loader-options!./src/components/formCorrectionLayout/components/fileUpload/index.vue?vue&type=style&index=0&id=f1ea0c52&prod&lang=less&scoped=true
9717
+ ;// ./node_modules/_mini-css-extract-plugin@2.10.0@mini-css-extract-plugin/dist/loader.js??clonedRuleSet-32.use[0]!./node_modules/_css-loader@6.11.0@css-loader/dist/cjs.js??clonedRuleSet-32.use[1]!./node_modules/_vue-loader@15.11.1@vue-loader/lib/loaders/stylePostLoader.js!./node_modules/_postcss-loader@6.2.1@postcss-loader/dist/cjs.js??clonedRuleSet-32.use[2]!./node_modules/_less-loader@11.1.4@less-loader/dist/cjs.js??clonedRuleSet-32.use[3]!./node_modules/_vue-loader@15.11.1@vue-loader/lib/index.js??vue-loader-options!./src/components/formCorrectionLayout/components/fileUpload/index.vue?vue&type=style&index=0&id=73d474bc&prod&lang=less&scoped=true
9569
9718
  // extracted by mini-css-extract-plugin
9570
9719
 
9571
- ;// ./src/components/formCorrectionLayout/components/fileUpload/index.vue?vue&type=style&index=0&id=f1ea0c52&prod&lang=less&scoped=true
9720
+ ;// ./src/components/formCorrectionLayout/components/fileUpload/index.vue?vue&type=style&index=0&id=73d474bc&prod&lang=less&scoped=true
9572
9721
 
9573
9722
  ;// ./src/components/formCorrectionLayout/components/fileUpload/index.vue
9574
9723
 
@@ -9581,11 +9730,11 @@ var es_json_stringify = __webpack_require__(3204);
9581
9730
 
9582
9731
  var fileUpload_component = normalizeComponent(
9583
9732
  components_fileUploadvue_type_script_lang_js,
9584
- fileUploadvue_type_template_id_f1ea0c52_scoped_true_render,
9585
- fileUploadvue_type_template_id_f1ea0c52_scoped_true_staticRenderFns,
9733
+ fileUploadvue_type_template_id_73d474bc_scoped_true_render,
9734
+ fileUploadvue_type_template_id_73d474bc_scoped_true_staticRenderFns,
9586
9735
  false,
9587
9736
  null,
9588
- "f1ea0c52",
9737
+ "73d474bc",
9589
9738
  null
9590
9739
 
9591
9740
  )
@@ -9673,10 +9822,13 @@ function randomNumber() {
9673
9822
 
9674
9823
 
9675
9824
 
9825
+
9826
+
9676
9827
  /* 需要确保依赖当前项目的文件安装了ant-design-vue依赖 */
9677
9828
 
9678
9829
 
9679
9830
 
9831
+
9680
9832
  /* harmony default export */ const formCorrectionLayoutvue_type_script_lang_js = ({
9681
9833
  name: "formCorrectionLayout",
9682
9834
  components: {
@@ -9687,7 +9839,10 @@ function randomNumber() {
9687
9839
  return {
9688
9840
  formConfig: this.formConfig,
9689
9841
  isCorrection: this.isCorrection,
9690
- dictList: this.dictList
9842
+ dictList: this.dictList,
9843
+ recordModification: this.recordFieldChange,
9844
+ // 提供记录修改的方法
9845
+ isInitialized: () => this.isInitialized // 提供初始化状态检查
9691
9846
  };
9692
9847
  },
9693
9848
  props: {
@@ -9700,7 +9855,22 @@ function randomNumber() {
9700
9855
  default: ""
9701
9856
  },
9702
9857
  isCorrection: {
9703
- //是否开启纠错,默认不开启
9858
+ //false代表新增纠错 true代表纠错(编辑 审核 查看)
9859
+ type: Boolean,
9860
+ default: false
9861
+ },
9862
+ defaultModels: {
9863
+ //默认表单回显值
9864
+ type: Object,
9865
+ default: {}
9866
+ },
9867
+ childTablePromise: {
9868
+ //子表单权限
9869
+ type: Object,
9870
+ default: {}
9871
+ },
9872
+ disabled: {
9873
+ //是否禁用
9704
9874
  type: Boolean,
9705
9875
  default: false
9706
9876
  }
@@ -9716,7 +9886,35 @@ function randomNumber() {
9716
9886
  dictTable: {} //数据中心字典
9717
9887
  },
9718
9888
  //记录需要字典的
9719
- activeKey: "" //子表的key
9889
+ activeKey: "",
9890
+ //子表的key
9891
+ modificationHistory: [],
9892
+ // 修改痕迹记录
9893
+ originalModels: {},
9894
+ // 原始数据,用于对比
9895
+ isInitialized: false,
9896
+ // 标记数据是否已初始化
9897
+ rightHeight: "auto",
9898
+ // 右侧高度
9899
+ // 佐证材料相关
9900
+ evidenceModels: {
9901
+ evidenceFiles: undefined
9902
+ },
9903
+ evidenceRules: {},
9904
+ evidenceWidget: {
9905
+ fieldName: "evidenceFiles",
9906
+ fieldNotes: "佐证材料",
9907
+ columnType: "fileupload",
9908
+ rules: {
9909
+ maxCount: 10,
9910
+ // 最多上传10个文件
9911
+ maxSize: 20,
9912
+ // 单个文件最大20MB
9913
+ accept: ".jpg,.jpeg,.png,.pdf",
9914
+ // 支持的文件类型
9915
+ placeholder: "请选择佐证材料(支持JPG,PNG,PDF)"
9916
+ }
9917
+ }
9720
9918
  };
9721
9919
  },
9722
9920
  computed: {},
@@ -9755,10 +9953,51 @@ function randomNumber() {
9755
9953
  });
9756
9954
  });
9757
9955
  }
9956
+ },
9957
+ defaultModels: {
9958
+ deep: true,
9959
+ immediate: true,
9960
+ handler(newVal, oldVal) {
9961
+ this.models = Object.assign({}, this.models, newVal);
9962
+ // 保存原始数据用于对比
9963
+ if (this.isCorrection) {
9964
+ this.originalModels = JSON.parse(JSON.stringify(newVal || {}));
9965
+ }
9966
+ // 延迟标记为已初始化,确保所有组件都能正确接收初始值
9967
+ this.$nextTick(() => {
9968
+ setTimeout(() => {
9969
+ this.isInitialized = true;
9970
+ // 数据加载完成后同步高度
9971
+ this.syncRightHeight();
9972
+ }, 500);
9973
+ });
9974
+ }
9975
+ },
9976
+ // 监听models变化,同步右侧高度
9977
+ models: {
9978
+ deep: true,
9979
+ handler() {
9980
+ this.$nextTick(() => {
9981
+ this.syncRightHeight();
9982
+ });
9983
+ }
9758
9984
  }
9759
9985
  },
9760
- mounted() {},
9986
+ mounted() {
9987
+ // 初始设置右侧高度
9988
+ this.$nextTick(() => {
9989
+ this.syncRightHeight();
9990
+ });
9991
+
9992
+ // 监听窗口大小变化
9993
+ window.addEventListener("resize", this.syncRightHeight);
9994
+ },
9995
+ beforeDestroy() {
9996
+ // 清理事件监听
9997
+ window.removeEventListener("resize", this.syncRightHeight);
9998
+ },
9761
9999
  methods: {
10000
+ moment: (moment_default()),
9762
10001
  // 根据 childIndex 获取对应子表的列配置
9763
10002
  getColumns(childIndex) {
9764
10003
  // tableList[0] 是主表, tableList[1] 是第一个子表, 以此类推
@@ -9789,29 +10028,32 @@ function randomNumber() {
9789
10028
 
9790
10029
  // 在开头添加序号列(固定在左侧)
9791
10030
  columns.unshift({
9792
- title: '序号',
9793
- dataIndex: 'index',
9794
- key: 'index',
9795
- align: 'center',
10031
+ title: "序号",
10032
+ dataIndex: "rowIndex",
10033
+ key: "rowIndex",
10034
+ align: "center",
9796
10035
  width: 80,
9797
- fixed: 'left',
10036
+ fixed: "left",
9798
10037
  customRender: (text, record, index) => {
9799
10038
  return index + 1;
9800
10039
  }
9801
10040
  });
9802
10041
 
9803
- // 在开头添加序号列(固定在左侧)
9804
- columns.push({
9805
- title: '操作',
9806
- dataIndex: 'index',
9807
- key: 'index',
9808
- align: 'center',
9809
- width: 80,
9810
- fixed: 'right',
9811
- scopedSlots: {
9812
- customRender: 'action'
9813
- }
9814
- });
10042
+ //子表有删除权限或新增纠错
10043
+ if (this.childTablePromise[this.activeKey] && this.childTablePromise[this.activeKey].delete || !this.isCorrection) {
10044
+ // 在末尾添加操作列(固定在右侧)
10045
+ columns.push({
10046
+ title: "操作",
10047
+ dataIndex: "action",
10048
+ key: "action",
10049
+ align: "center",
10050
+ width: 80,
10051
+ fixed: "right",
10052
+ scopedSlots: {
10053
+ customRender: "action"
10054
+ }
10055
+ });
10056
+ }
9815
10057
  return columns;
9816
10058
  },
9817
10059
  // 根据 fieldName 获取对应的 widget 配置
@@ -9857,6 +10099,96 @@ function randomNumber() {
9857
10099
  obj.id = randomUUID();
9858
10100
  });
9859
10101
  this.$set(this.models[this.activeKey], this.models[this.activeKey].length, obj);
10102
+
10103
+ // 记录新增行操作
10104
+ if (this.isCorrection) {
10105
+ const tableName = this.formConfig.correctData.sourceChildList[childIndex].tableName;
10106
+ const currentRowCount = this.models[this.activeKey].length;
10107
+ this.addModificationRecord({
10108
+ type: "add",
10109
+ tableName: tableName,
10110
+ fieldLabel: `${tableName} - 新增第 ${currentRowCount} 行`,
10111
+ rowCount: currentRowCount,
10112
+ time: this.getCurrentTime()
10113
+ });
10114
+ }
10115
+ },
10116
+ /**
10117
+ * 删除子表行
10118
+ * @param {String} tableKey - 子表的 key
10119
+ * @param {String} recordId - 要删除的行的 id
10120
+ */
10121
+ deleteChildRow(tableKey, recordId) {
10122
+ if (!this.models[tableKey] || !Array.isArray(this.models[tableKey])) {
10123
+ return;
10124
+ }
10125
+
10126
+ // 找到要删除的行的索引
10127
+ const index = this.models[tableKey].findIndex(item => item.id === recordId);
10128
+ if (index !== -1) {
10129
+ const currentRowCount = this.models[tableKey].length;
10130
+
10131
+ // 记录删除行操作
10132
+ if (this.isCorrection) {
10133
+ const childIndex = this.formConfig.correctData.sourceChildList.findIndex(item => item.tableIdObj.tableName === tableKey);
10134
+ if (childIndex !== -1) {
10135
+ const tableName = this.formConfig.correctData.sourceChildList[childIndex].tableName;
10136
+ this.addModificationRecord({
10137
+ type: "delete",
10138
+ tableName: tableName,
10139
+ fieldLabel: `${tableName} - 删除第 ${index + 1} 行`,
10140
+ rowCount: currentRowCount - 1,
10141
+ // 删除后的行数
10142
+ deletedRowIndex: index + 1,
10143
+ time: this.getCurrentTime()
10144
+ });
10145
+ }
10146
+ }
10147
+
10148
+ // 删除数组中的该行
10149
+ this.models[tableKey].splice(index, 1);
10150
+
10151
+ // 清理该行相关的校验规则
10152
+ this.clearRowRules(tableKey, index);
10153
+ this.$message.success("删除成功");
10154
+ }
10155
+ },
10156
+ /**
10157
+ * 清理删除行的校验规则
10158
+ * @param {String} tableKey - 子表的 key
10159
+ * @param {Number} deletedIndex - 删除的行索引
10160
+ */
10161
+ clearRowRules(tableKey, deletedIndex) {
10162
+ // 获取当前子表的所有字段名
10163
+ const childIndex = this.formConfig.correctData.sourceChildList.findIndex(item => item.tableIdObj.tableName === tableKey);
10164
+ if (childIndex === -1) return;
10165
+ const tableIndex = childIndex + 1;
10166
+ const widgetList = this.formConfig.correctData.tableList[tableIndex] || [];
10167
+
10168
+ // 删除该行的所有字段规则,并重新生成后续行的规则
10169
+ const newRules = {
10170
+ ...this.rules
10171
+ };
10172
+
10173
+ // 1. 删除被删除行的规则
10174
+ widgetList.forEach(widget => {
10175
+ const propPath = `${tableKey}.${deletedIndex}.${widget.fieldName}`;
10176
+ delete newRules[propPath];
10177
+ });
10178
+
10179
+ // 2. 更新后续行的规则(索引需要减1)
10180
+ const currentLength = this.models[tableKey].length;
10181
+ for (let i = deletedIndex; i < currentLength; i++) {
10182
+ widgetList.forEach(widget => {
10183
+ const oldPropPath = `${tableKey}.${i + 1}.${widget.fieldName}`;
10184
+ const newPropPath = `${tableKey}.${i}.${widget.fieldName}`;
10185
+ if (newRules[oldPropPath]) {
10186
+ newRules[newPropPath] = newRules[oldPropPath];
10187
+ delete newRules[oldPropPath];
10188
+ }
10189
+ });
10190
+ }
10191
+ this.rules = newRules;
9860
10192
  },
9861
10193
  /**
9862
10194
  * 获取表单数据
@@ -9869,20 +10201,230 @@ function randomNumber() {
9869
10201
  // 需要校验表单
9870
10202
  this.$refs.ruleForm.validate((valid, errorFields) => {
9871
10203
  if (valid) {
9872
- // 校验通过,返回数据
9873
- resolve(this.models);
10204
+ // 校验佐证材料是否上传
10205
+ const evidenceFiles = this.evidenceModels.evidenceFiles;
10206
+ const hasEvidence = evidenceFiles && (typeof evidenceFiles === "string" && evidenceFiles.trim() !== "" || Array.isArray(evidenceFiles) && evidenceFiles.length > 0);
10207
+ if (!hasEvidence) {
10208
+ this.$message.warning("请上传佐证材料");
10209
+ reject({
10210
+ valid: false,
10211
+ message: "请上传佐证材料"
10212
+ });
10213
+ return;
10214
+ }
10215
+
10216
+ // 校验通过,返回数据、修改痕迹和佐证材料
10217
+ resolve({
10218
+ formData: this.models,
10219
+ modificationHistory: this.modificationHistory,
10220
+ evidenceFiles: this.evidenceModels.evidenceFiles
10221
+ });
9874
10222
  } else {
9875
10223
  // 校验失败,返回错误信息
9876
10224
  reject({
9877
10225
  valid: false,
9878
10226
  errorFields: errorFields,
9879
- message: '表单校验失败'
10227
+ message: "表单校验失败"
9880
10228
  });
9881
10229
  }
9882
10230
  });
9883
10231
  } else {
9884
- // 不校验,直接返回数据
9885
- resolve(this.models);
10232
+ // 不校验,直接返回数据、修改痕迹和佐证材料
10233
+ resolve({
10234
+ formData: this.models,
10235
+ modificationHistory: this.modificationHistory,
10236
+ evidenceFiles: this.evidenceModels.evidenceFiles
10237
+ });
10238
+ }
10239
+ });
10240
+ },
10241
+ /**
10242
+ * 记录字段修改(由子组件调用)
10243
+ * @param {Object} params - 修改参数
10244
+ */
10245
+ recordFieldChange({
10246
+ widget,
10247
+ newValue,
10248
+ tableKey,
10249
+ tableId
10250
+ }) {
10251
+ if (!this.isCorrection) return;
10252
+
10253
+ // 数据未初始化时不记录(避免记录初始赋值)
10254
+ if (!this.isInitialized) return;
10255
+
10256
+ // 排除佐证材料字段,不记录到修改痕迹
10257
+ if (widget.fieldName === "evidenceFiles") return;
10258
+
10259
+ // 获取初始值(从originalModels中获取)
10260
+ let initialValue;
10261
+ if (tableKey && tableId) {
10262
+ // 子表字段:从originalModels中找到对应的行
10263
+ const originalRows = this.originalModels[tableKey] || [];
10264
+ const originalRow = originalRows.find(row => row.id === tableId);
10265
+ initialValue = originalRow ? originalRow[widget.fieldName] : undefined;
10266
+ } else {
10267
+ // 主表字段:直接从originalModels获取
10268
+ initialValue = this.originalModels[widget.fieldName];
10269
+ }
10270
+
10271
+ // 新值与初始值相同,说明改回了原值
10272
+ if (newValue === initialValue) {
10273
+ // 移除该字段的修改记录
10274
+ const recordIndex = this.modificationHistory.findIndex(item => {
10275
+ if (item.type !== "modify") return false;
10276
+
10277
+ // 主表字段
10278
+ if (!item.tableKey && !tableKey) {
10279
+ return item.fieldName === widget.fieldName;
10280
+ }
10281
+
10282
+ // 子表字段
10283
+ if (item.tableKey && tableKey) {
10284
+ return item.tableKey === tableKey && item.tableId === tableId && item.fieldName === widget.fieldName;
10285
+ }
10286
+ return false;
10287
+ });
10288
+ if (recordIndex !== -1) {
10289
+ this.modificationHistory.splice(recordIndex, 1);
10290
+ }
10291
+ return;
10292
+ }
10293
+
10294
+ // 获取字段标签
10295
+ let fieldLabel = widget.fieldNotes || widget.fieldName;
10296
+
10297
+ // 如果是子表字段,添加表名前缀
10298
+ if (tableKey) {
10299
+ const childTable = this.formConfig.correctData.sourceChildList.find(item => item.tableIdObj.tableName === tableKey);
10300
+ if (childTable) {
10301
+ fieldLabel = `${childTable.tableName} - ${fieldLabel}`;
10302
+ }
10303
+ }
10304
+
10305
+ // 添加修改记录(原值使用初始值)
10306
+ this.addModificationRecord({
10307
+ type: "modify",
10308
+ fieldLabel: fieldLabel,
10309
+ fieldName: widget.fieldName,
10310
+ tableKey: tableKey,
10311
+ tableId: tableId,
10312
+ oldValue: this.formatValue(initialValue, widget),
10313
+ newValue: this.formatValue(newValue, widget),
10314
+ time: this.getCurrentTime()
10315
+ });
10316
+ },
10317
+ /**
10318
+ * 添加修改记录
10319
+ */
10320
+ addModificationRecord(record) {
10321
+ // 只对修改类型的记录检查原值和新值是否相同
10322
+ if (record.type === "modify" && record.oldValue === record.newValue) {
10323
+ return;
10324
+ }
10325
+
10326
+ // 避免重复记录(短时间内相同字段的修改只记录最后一次)
10327
+ const existIndex = this.modificationHistory.findIndex(item => {
10328
+ if (item.type !== "modify" || record.type !== "modify") return false;
10329
+
10330
+ // 主表字段
10331
+ if (!item.tableKey && !record.tableKey) {
10332
+ return item.fieldName === record.fieldName;
10333
+ }
10334
+
10335
+ // 子表字段(使用tableId判断是否同一行)
10336
+ if (item.tableKey && record.tableKey) {
10337
+ return item.tableKey === record.tableKey && item.tableId === record.tableId && item.fieldName === record.fieldName;
10338
+ }
10339
+ return false;
10340
+ });
10341
+ if (existIndex !== -1) {
10342
+ const existingRecord = this.modificationHistory[existIndex];
10343
+
10344
+ // 如果新值改回了原值,删除该记录
10345
+ if (existingRecord.oldValue === record.newValue) {
10346
+ this.modificationHistory.splice(existIndex, 1);
10347
+ } else {
10348
+ // 更新已存在的记录(保持原值不变,只更新新值和时间)
10349
+ this.$set(this.modificationHistory, existIndex, {
10350
+ ...existingRecord,
10351
+ newValue: record.newValue,
10352
+ time: record.time
10353
+ });
10354
+ }
10355
+ } else {
10356
+ // 添加新记录
10357
+ this.modificationHistory.push(record);
10358
+ }
10359
+ },
10360
+ /**
10361
+ * 格式化值用于显示
10362
+ */
10363
+ formatValue(value, widget) {
10364
+ if (value === undefined || value === null) return "空";
10365
+
10366
+ // 日期类型格式化(精确到分钟)
10367
+ if (widget.columnType === "date" && value) {
10368
+ return this.moment(value).format("YYYY-MM-DD HH:mm");
10369
+ }
10370
+
10371
+ // 下拉选择显示label
10372
+ if (widget.columnType === "select" && widget.rules && widget.rules.dictCode) {
10373
+ const dictKey = widget.rules.activeKey == "1" ? "dictName" : "dictTable";
10374
+ const dictOptions = this.dictList[dictKey][widget.rules.dictCode] || [];
10375
+ const option = dictOptions.find(item => item.value === value);
10376
+ return option ? option.text || option.label : value;
10377
+ }
10378
+
10379
+ // 文件上传显示文件名称
10380
+ if (widget.columnType === "fileupload") {
10381
+ try {
10382
+ const files = typeof value === "string" ? JSON.parse(value) : value;
10383
+ if (Array.isArray(files)) {
10384
+ if (files.length === 0) {
10385
+ return "空";
10386
+ }
10387
+ // 显示文件名列表,带序号,每个文件之间增加空行
10388
+ return files.map((file, index) => {
10389
+ let fileName = file.name || file.fileName || "未知文件";
10390
+ // 尝试解码 URL 编码的文件名
10391
+ try {
10392
+ fileName = decodeURIComponent(fileName);
10393
+ } catch (e) {
10394
+ // 解码失败则保持原样
10395
+ }
10396
+ return `${index + 1}. ${fileName}`;
10397
+ }).join("\n\n"); // 使用两个换行符增加间距
10398
+ }
10399
+ return value;
10400
+ } catch (e) {
10401
+ return value;
10402
+ }
10403
+ }
10404
+ return String(value);
10405
+ },
10406
+ /**
10407
+ * 获取当前时间(精确到分钟)
10408
+ */
10409
+ getCurrentTime() {
10410
+ const now = new Date();
10411
+ const year = now.getFullYear();
10412
+ const month = String(now.getMonth() + 1).padStart(2, "0");
10413
+ const day = String(now.getDate()).padStart(2, "0");
10414
+ const hours = String(now.getHours()).padStart(2, "0");
10415
+ const minutes = String(now.getMinutes()).padStart(2, "0");
10416
+ return `${year}-${month}-${day} ${hours}:${minutes}`;
10417
+ },
10418
+ /**
10419
+ * 同步右侧高度与左侧一致
10420
+ */
10421
+ syncRightHeight() {
10422
+ this.$nextTick(() => {
10423
+ const leftCol = this.$el.querySelector(".formCorrectionLayout-left");
10424
+ const rightHistory = this.$el.querySelector(".modification-history");
10425
+ if (leftCol && rightHistory) {
10426
+ const leftHeight = leftCol.offsetHeight;
10427
+ rightHistory.style.height = `${leftHeight}px`;
9886
10428
  }
9887
10429
  });
9888
10430
  }
@@ -9890,10 +10432,10 @@ function randomNumber() {
9890
10432
  });
9891
10433
  ;// ./src/components/formCorrectionLayout/index.vue?vue&type=script&lang=js
9892
10434
  /* harmony default export */ const components_formCorrectionLayoutvue_type_script_lang_js = (formCorrectionLayoutvue_type_script_lang_js);
9893
- ;// ./node_modules/_mini-css-extract-plugin@2.10.0@mini-css-extract-plugin/dist/loader.js??clonedRuleSet-32.use[0]!./node_modules/_css-loader@6.11.0@css-loader/dist/cjs.js??clonedRuleSet-32.use[1]!./node_modules/_vue-loader@15.11.1@vue-loader/lib/loaders/stylePostLoader.js!./node_modules/_postcss-loader@6.2.1@postcss-loader/dist/cjs.js??clonedRuleSet-32.use[2]!./node_modules/_less-loader@11.1.4@less-loader/dist/cjs.js??clonedRuleSet-32.use[3]!./node_modules/_vue-loader@15.11.1@vue-loader/lib/index.js??vue-loader-options!./src/components/formCorrectionLayout/index.vue?vue&type=style&index=0&id=972b2878&prod&lang=less&scoped=true
10435
+ ;// ./node_modules/_mini-css-extract-plugin@2.10.0@mini-css-extract-plugin/dist/loader.js??clonedRuleSet-32.use[0]!./node_modules/_css-loader@6.11.0@css-loader/dist/cjs.js??clonedRuleSet-32.use[1]!./node_modules/_vue-loader@15.11.1@vue-loader/lib/loaders/stylePostLoader.js!./node_modules/_postcss-loader@6.2.1@postcss-loader/dist/cjs.js??clonedRuleSet-32.use[2]!./node_modules/_less-loader@11.1.4@less-loader/dist/cjs.js??clonedRuleSet-32.use[3]!./node_modules/_vue-loader@15.11.1@vue-loader/lib/index.js??vue-loader-options!./src/components/formCorrectionLayout/index.vue?vue&type=style&index=0&id=2e9085f1&prod&lang=less&scoped=true
9894
10436
  // extracted by mini-css-extract-plugin
9895
10437
 
9896
- ;// ./src/components/formCorrectionLayout/index.vue?vue&type=style&index=0&id=972b2878&prod&lang=less&scoped=true
10438
+ ;// ./src/components/formCorrectionLayout/index.vue?vue&type=style&index=0&id=2e9085f1&prod&lang=less&scoped=true
9897
10439
 
9898
10440
  ;// ./src/components/formCorrectionLayout/index.vue
9899
10441
 
@@ -9910,7 +10452,7 @@ var formCorrectionLayout_component = normalizeComponent(
9910
10452
  staticRenderFns,
9911
10453
  false,
9912
10454
  null,
9913
- "972b2878",
10455
+ "2e9085f1",
9914
10456
  null
9915
10457
 
9916
10458
  )