@tuoyuan/module-page-select 1.1.0 → 1.1.2

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.
@@ -11,7 +11,7 @@
11
11
  return /******/ (function() { // webpackBootstrap
12
12
  /******/ var __webpack_modules__ = ({
13
13
 
14
- /***/ 2375:
14
+ /***/ 4297:
15
15
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
16
16
 
17
17
  "use strict";
@@ -25,7 +25,7 @@ __webpack_require__.r(__webpack_exports__);
25
25
 
26
26
  var ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));
27
27
  // Module
28
- ___CSS_LOADER_EXPORT___.push([module.id, ".module-page-select[data-v-65efbb12]{width:100%}.selection-preview[data-v-65efbb12]{margin-top:8px;padding:8px 12px;background:#f0f9ff;border:1px solid #91d5ff;border-radius:4px;font-size:13px}.preview-label[data-v-65efbb12]{color:#666;font-size:12px;margin-bottom:4px}.preview-value[data-v-65efbb12]{color:#1890ff;font-weight:500}.config-form[data-v-65efbb12]{margin-top:16px}", ""]);
28
+ ___CSS_LOADER_EXPORT___.push([module.id, ".module-page-select[data-v-3fb01432]{width:100%}.selection-preview[data-v-3fb01432]{margin-top:8px;padding:8px 12px;background:#f0f9ff;border:1px solid #91d5ff;border-radius:4px;font-size:13px}.preview-label[data-v-3fb01432]{color:#666;font-size:12px;margin-bottom:4px}.preview-value[data-v-3fb01432]{color:#1890ff;font-weight:500}.config-form[data-v-3fb01432]{margin-top:16px}.array-editor[data-v-3fb01432]{display:flex;flex-direction:column;gap:8px}.array-item[data-v-3fb01432]{display:flex;align-items:center;gap:8px;padding:8px;background:#f5f5f5;border-radius:4px}.array-item-fields[data-v-3fb01432]{display:flex;flex:1;gap:8px}", ""]);
29
29
  // Exports
30
30
  /* harmony default export */ __webpack_exports__["default"] = (___CSS_LOADER_EXPORT___);
31
31
 
@@ -158,19 +158,19 @@ exports.A = (sfc, props) => {
158
158
 
159
159
  /***/ }),
160
160
 
161
- /***/ 7120:
161
+ /***/ 9690:
162
162
  /***/ (function(module, __unused_webpack_exports, __webpack_require__) {
163
163
 
164
164
  // style-loader: Adds some css to the DOM by adding a <style> tag
165
165
 
166
166
  // load the styles
167
- var content = __webpack_require__(2375);
167
+ var content = __webpack_require__(4297);
168
168
  if(content.__esModule) content = content.default;
169
169
  if(typeof content === 'string') content = [[module.id, content, '']];
170
170
  if(content.locals) module.exports = content.locals;
171
171
  // add the styles to the DOM
172
172
  var add = (__webpack_require__(258)/* ["default"] */ .A)
173
- var update = add("a0fe1e30", content, true, {"sourceMap":false,"shadowMode":false});
173
+ var update = add("e69794f4", content, true, {"sourceMap":false,"shadowMode":false});
174
174
 
175
175
  /***/ }),
176
176
 
@@ -3305,277 +3305,6 @@ $({ target: 'Iterator', proto: true, real: true, forced: someWithoutClosingOnEar
3305
3305
  });
3306
3306
 
3307
3307
 
3308
- /***/ }),
3309
-
3310
- /***/ 9112:
3311
- /***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
3312
-
3313
- "use strict";
3314
-
3315
- var $ = __webpack_require__(6518);
3316
- var DESCRIPTORS = __webpack_require__(3724);
3317
- var globalThis = __webpack_require__(4576);
3318
- var getBuiltIn = __webpack_require__(7751);
3319
- var uncurryThis = __webpack_require__(9504);
3320
- var call = __webpack_require__(9565);
3321
- var isCallable = __webpack_require__(4901);
3322
- var isObject = __webpack_require__(34);
3323
- var isArray = __webpack_require__(4376);
3324
- var hasOwn = __webpack_require__(9297);
3325
- var toString = __webpack_require__(655);
3326
- var lengthOfArrayLike = __webpack_require__(6198);
3327
- var createProperty = __webpack_require__(4659);
3328
- var fails = __webpack_require__(9039);
3329
- var parseJSONString = __webpack_require__(8235);
3330
- var NATIVE_SYMBOL = __webpack_require__(4495);
3331
-
3332
- var JSON = globalThis.JSON;
3333
- var Number = globalThis.Number;
3334
- var SyntaxError = globalThis.SyntaxError;
3335
- var nativeParse = JSON && JSON.parse;
3336
- var enumerableOwnProperties = getBuiltIn('Object', 'keys');
3337
- // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe
3338
- var getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;
3339
- var at = uncurryThis(''.charAt);
3340
- var slice = uncurryThis(''.slice);
3341
- var exec = uncurryThis(/./.exec);
3342
- var push = uncurryThis([].push);
3343
-
3344
- var IS_DIGIT = /^\d$/;
3345
- var IS_NON_ZERO_DIGIT = /^[1-9]$/;
3346
- var IS_NUMBER_START = /^[\d-]$/;
3347
- var IS_WHITESPACE = /^[\t\n\r ]$/;
3348
-
3349
- var PRIMITIVE = 0;
3350
- var OBJECT = 1;
3351
-
3352
- var $parse = function (source, reviver) {
3353
- source = toString(source);
3354
- var context = new Context(source, 0, '');
3355
- var root = context.parse();
3356
- var value = root.value;
3357
- var endIndex = context.skip(IS_WHITESPACE, root.end);
3358
- if (endIndex < source.length) {
3359
- throw new SyntaxError('Unexpected extra character: "' + at(source, endIndex) + '" after the parsed data at: ' + endIndex);
3360
- }
3361
- return isCallable(reviver) ? internalize({ '': value }, '', reviver, root) : value;
3362
- };
3363
-
3364
- var internalize = function (holder, name, reviver, node) {
3365
- var val = holder[name];
3366
- var unmodified = node && val === node.value;
3367
- var context = unmodified && typeof node.source == 'string' ? { source: node.source } : {};
3368
- var elementRecordsLen, keys, len, i, P;
3369
- if (isObject(val)) {
3370
- var nodeIsArray = isArray(val);
3371
- var nodes = unmodified ? node.nodes : nodeIsArray ? [] : {};
3372
- if (nodeIsArray) {
3373
- elementRecordsLen = nodes.length;
3374
- len = lengthOfArrayLike(val);
3375
- for (i = 0; i < len; i++) {
3376
- internalizeProperty(val, i, internalize(val, '' + i, reviver, i < elementRecordsLen ? nodes[i] : undefined));
3377
- }
3378
- } else {
3379
- keys = enumerableOwnProperties(val);
3380
- len = lengthOfArrayLike(keys);
3381
- for (i = 0; i < len; i++) {
3382
- P = keys[i];
3383
- internalizeProperty(val, P, internalize(val, P, reviver, hasOwn(nodes, P) ? nodes[P] : undefined));
3384
- }
3385
- }
3386
- }
3387
- return call(reviver, holder, name, val, context);
3388
- };
3389
-
3390
- var internalizeProperty = function (object, key, value) {
3391
- if (DESCRIPTORS) {
3392
- var descriptor = getOwnPropertyDescriptor(object, key);
3393
- if (descriptor && !descriptor.configurable) return;
3394
- }
3395
- if (value === undefined) delete object[key];
3396
- else createProperty(object, key, value);
3397
- };
3398
-
3399
- var Node = function (value, end, source, nodes) {
3400
- this.value = value;
3401
- this.end = end;
3402
- this.source = source;
3403
- this.nodes = nodes;
3404
- };
3405
-
3406
- var Context = function (source, index) {
3407
- this.source = source;
3408
- this.index = index;
3409
- };
3410
-
3411
- // https://www.json.org/json-en.html
3412
- Context.prototype = {
3413
- fork: function (nextIndex) {
3414
- return new Context(this.source, nextIndex);
3415
- },
3416
- parse: function () {
3417
- var source = this.source;
3418
- var i = this.skip(IS_WHITESPACE, this.index);
3419
- var fork = this.fork(i);
3420
- var chr = at(source, i);
3421
- if (exec(IS_NUMBER_START, chr)) return fork.number();
3422
- switch (chr) {
3423
- case '{':
3424
- return fork.object();
3425
- case '[':
3426
- return fork.array();
3427
- case '"':
3428
- return fork.string();
3429
- case 't':
3430
- return fork.keyword(true);
3431
- case 'f':
3432
- return fork.keyword(false);
3433
- case 'n':
3434
- return fork.keyword(null);
3435
- } throw new SyntaxError('Unexpected character: "' + chr + '" at: ' + i);
3436
- },
3437
- node: function (type, value, start, end, nodes) {
3438
- return new Node(value, end, type ? null : slice(this.source, start, end), nodes);
3439
- },
3440
- object: function () {
3441
- var source = this.source;
3442
- var i = this.index + 1;
3443
- var expectKeypair = false;
3444
- var object = {};
3445
- var nodes = {};
3446
- var closed = false;
3447
- while (i < source.length) {
3448
- i = this.until(['"', '}'], i);
3449
- if (at(source, i) === '}' && !expectKeypair) {
3450
- i++;
3451
- closed = true;
3452
- break;
3453
- }
3454
- // Parsing the key
3455
- var result = this.fork(i).string();
3456
- var key = result.value;
3457
- i = result.end;
3458
- i = this.until([':'], i) + 1;
3459
- // Parsing value
3460
- i = this.skip(IS_WHITESPACE, i);
3461
- result = this.fork(i).parse();
3462
- createProperty(nodes, key, result);
3463
- createProperty(object, key, result.value);
3464
- i = this.until([',', '}'], result.end);
3465
- var chr = at(source, i);
3466
- if (chr === ',') {
3467
- expectKeypair = true;
3468
- i++;
3469
- } else if (chr === '}') {
3470
- i++;
3471
- closed = true;
3472
- break;
3473
- }
3474
- }
3475
- if (!closed) throw new SyntaxError('Unterminated object at: ' + i);
3476
- return this.node(OBJECT, object, this.index, i, nodes);
3477
- },
3478
- array: function () {
3479
- var source = this.source;
3480
- var i = this.index + 1;
3481
- var expectElement = false;
3482
- var array = [];
3483
- var nodes = [];
3484
- var closed = false;
3485
- while (i < source.length) {
3486
- i = this.skip(IS_WHITESPACE, i);
3487
- if (at(source, i) === ']' && !expectElement) {
3488
- i++;
3489
- closed = true;
3490
- break;
3491
- }
3492
- var result = this.fork(i).parse();
3493
- push(nodes, result);
3494
- push(array, result.value);
3495
- i = this.until([',', ']'], result.end);
3496
- if (at(source, i) === ',') {
3497
- expectElement = true;
3498
- i++;
3499
- } else if (at(source, i) === ']') {
3500
- i++;
3501
- closed = true;
3502
- break;
3503
- }
3504
- }
3505
- if (!closed) throw new SyntaxError('Unterminated array at: ' + i);
3506
- return this.node(OBJECT, array, this.index, i, nodes);
3507
- },
3508
- string: function () {
3509
- var index = this.index;
3510
- var parsed = parseJSONString(this.source, this.index + 1);
3511
- return this.node(PRIMITIVE, parsed.value, index, parsed.end);
3512
- },
3513
- number: function () {
3514
- var source = this.source;
3515
- var startIndex = this.index;
3516
- var i = startIndex;
3517
- if (at(source, i) === '-') i++;
3518
- if (at(source, i) === '0') i++;
3519
- else if (exec(IS_NON_ZERO_DIGIT, at(source, i))) i = this.skip(IS_DIGIT, i + 1);
3520
- else throw new SyntaxError('Failed to parse number at: ' + i);
3521
- if (at(source, i) === '.') {
3522
- var fractionStartIndex = i + 1;
3523
- i = this.skip(IS_DIGIT, fractionStartIndex);
3524
- if (fractionStartIndex === i) throw new SyntaxError("Failed to parse number's fraction at: " + i);
3525
- }
3526
- if (at(source, i) === 'e' || at(source, i) === 'E') {
3527
- i++;
3528
- if (at(source, i) === '+' || at(source, i) === '-') i++;
3529
- var exponentStartIndex = i;
3530
- i = this.skip(IS_DIGIT, i);
3531
- if (exponentStartIndex === i) throw new SyntaxError("Failed to parse number's exponent value at: " + i);
3532
- }
3533
- return this.node(PRIMITIVE, Number(slice(source, startIndex, i)), startIndex, i);
3534
- },
3535
- keyword: function (value) {
3536
- var keyword = '' + value;
3537
- var index = this.index;
3538
- var endIndex = index + keyword.length;
3539
- if (slice(this.source, index, endIndex) !== keyword) throw new SyntaxError('Failed to parse value at: ' + index);
3540
- return this.node(PRIMITIVE, value, index, endIndex);
3541
- },
3542
- skip: function (regex, i) {
3543
- var source = this.source;
3544
- for (; i < source.length; i++) if (!exec(regex, at(source, i))) break;
3545
- return i;
3546
- },
3547
- until: function (array, i) {
3548
- i = this.skip(IS_WHITESPACE, i);
3549
- var chr = at(this.source, i);
3550
- for (var j = 0; j < array.length; j++) if (array[j] === chr) return i;
3551
- throw new SyntaxError('Unexpected character: "' + chr + '" at: ' + i);
3552
- }
3553
- };
3554
-
3555
- var NO_SOURCE_SUPPORT = fails(function () {
3556
- var unsafeInt = '9007199254740993';
3557
- var source;
3558
- nativeParse(unsafeInt, function (key, value, context) {
3559
- source = context.source;
3560
- });
3561
- return source !== unsafeInt;
3562
- });
3563
-
3564
- var PROPER_BASE_PARSE = NATIVE_SYMBOL && !fails(function () {
3565
- // Safari 9 bug
3566
- return 1 / nativeParse('-0 \t') !== -Infinity;
3567
- });
3568
-
3569
- // `JSON.parse` method
3570
- // https://tc39.es/ecma262/#sec-json.parse
3571
- // https://github.com/tc39/proposal-json-parse-with-source
3572
- $({ target: 'JSON', stat: true, forced: NO_SOURCE_SUPPORT }, {
3573
- parse: function parse(text, reviver) {
3574
- return PROPER_BASE_PARSE && !isCallable(reviver) ? nativeParse(text) : $parse(text, reviver);
3575
- }
3576
- });
3577
-
3578
-
3579
3308
  /***/ }),
3580
3309
 
3581
3310
  /***/ 3110:
@@ -3838,7 +3567,7 @@ if (typeof window !== 'undefined') {
3838
3567
 
3839
3568
  // EXTERNAL MODULE: external {"commonjs":"vue","commonjs2":"vue","root":"Vue"}
3840
3569
  var external_commonjs_vue_commonjs2_vue_root_Vue_ = __webpack_require__(9274);
3841
- ;// ./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib/index.js??clonedRuleSet-82.use[1]!./node_modules/vue-loader/dist/templateLoader.js??ruleSet[1].rules[3]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/components/ModulePageSelect.vue?vue&type=template&id=65efbb12&scoped=true
3570
+ ;// ./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib/index.js??clonedRuleSet-82.use[1]!./node_modules/vue-loader/dist/templateLoader.js??ruleSet[1].rules[3]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/components/ModulePageSelect.vue?vue&type=template&id=3fb01432&scoped=true
3842
3571
 
3843
3572
  const _hoisted_1 = {
3844
3573
  class: "module-page-select"
@@ -3850,6 +3579,13 @@ const _hoisted_2 = {
3850
3579
  const _hoisted_3 = {
3851
3580
  class: "preview-value"
3852
3581
  };
3582
+ const _hoisted_4 = {
3583
+ key: 4,
3584
+ class: "array-editor"
3585
+ };
3586
+ const _hoisted_5 = {
3587
+ class: "array-item-fields"
3588
+ };
3853
3589
  function render(_ctx, _cache, $props, $setup, $data, $options) {
3854
3590
  const _component_a_option = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.resolveComponent)("a-option");
3855
3591
  const _component_a_select = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.resolveComponent)("a-select");
@@ -3969,7 +3705,39 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
3969
3705
  }, 1032, ["value", "label"]);
3970
3706
  }), 128))]),
3971
3707
  _: 2
3972
- }, 1032, ["model-value", "onUpdate:modelValue"])) : (0,external_commonjs_vue_commonjs2_vue_root_Vue_.createCommentVNode)("", true)]),
3708
+ }, 1032, ["model-value", "onUpdate:modelValue"])) : field.type === 'array' ? ((0,external_commonjs_vue_commonjs2_vue_root_Vue_.openBlock)(), (0,external_commonjs_vue_commonjs2_vue_root_Vue_.createElementBlock)("div", _hoisted_4, [((0,external_commonjs_vue_commonjs2_vue_root_Vue_.openBlock)(true), (0,external_commonjs_vue_commonjs2_vue_root_Vue_.createElementBlock)(external_commonjs_vue_commonjs2_vue_root_Vue_.Fragment, null, (0,external_commonjs_vue_commonjs2_vue_root_Vue_.renderList)($options.getNestedValue(key, field), (item, index) => {
3709
+ return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.openBlock)(), (0,external_commonjs_vue_commonjs2_vue_root_Vue_.createElementBlock)("div", {
3710
+ key: index,
3711
+ class: "array-item"
3712
+ }, [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.createElementVNode)("div", _hoisted_5, [((0,external_commonjs_vue_commonjs2_vue_root_Vue_.openBlock)(true), (0,external_commonjs_vue_commonjs2_vue_root_Vue_.createElementBlock)(external_commonjs_vue_commonjs2_vue_root_Vue_.Fragment, null, (0,external_commonjs_vue_commonjs2_vue_root_Vue_.renderList)(field.itemFields, (subField, subKey) => {
3713
+ return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.openBlock)(), (0,external_commonjs_vue_commonjs2_vue_root_Vue_.createBlock)(_component_a_input, {
3714
+ key: subKey,
3715
+ "model-value": item[subKey],
3716
+ placeholder: subField.title || subKey,
3717
+ "onUpdate:modelValue": val => $options.updateArrayItem(key, field, index, subKey, val),
3718
+ style: {
3719
+ "flex": "1",
3720
+ "margin-right": "8px"
3721
+ }
3722
+ }, null, 8, ["model-value", "placeholder", "onUpdate:modelValue"]);
3723
+ }), 128))]), (0,external_commonjs_vue_commonjs2_vue_root_Vue_.createVNode)(_component_a_button, {
3724
+ type: "text",
3725
+ status: "danger",
3726
+ size: "small",
3727
+ onClick: $event => $options.removeArrayItem(key, field, index)
3728
+ }, {
3729
+ default: (0,external_commonjs_vue_commonjs2_vue_root_Vue_.withCtx)(() => [...(_cache[4] || (_cache[4] = [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.createTextVNode)(" 删除 ", -1)]))]),
3730
+ _: 1
3731
+ }, 8, ["onClick"])]);
3732
+ }), 128)), (0,external_commonjs_vue_commonjs2_vue_root_Vue_.createVNode)(_component_a_button, {
3733
+ type: "dashed",
3734
+ long: "",
3735
+ size: "small",
3736
+ onClick: $event => $options.addArrayItem(key, field)
3737
+ }, {
3738
+ default: (0,external_commonjs_vue_commonjs2_vue_root_Vue_.withCtx)(() => [...(_cache[5] || (_cache[5] = [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.createTextVNode)(" + 新增 ", -1)]))]),
3739
+ _: 1
3740
+ }, 8, ["onClick"])])) : (0,external_commonjs_vue_commonjs2_vue_root_Vue_.createCommentVNode)("", true)]),
3973
3741
  _: 2
3974
3742
  }, 1032, ["label", "field"]);
3975
3743
  }), 128))], 64)) : (0,external_commonjs_vue_commonjs2_vue_root_Vue_.createCommentVNode)("", true), $data.showConfirmButton ? ((0,external_commonjs_vue_commonjs2_vue_root_Vue_.openBlock)(), (0,external_commonjs_vue_commonjs2_vue_root_Vue_.createBlock)(_component_a_button, {
@@ -3983,14 +3751,16 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
3983
3751
  "margin-top": "16px"
3984
3752
  }
3985
3753
  }, {
3986
- default: (0,external_commonjs_vue_commonjs2_vue_root_Vue_.withCtx)(() => [...(_cache[4] || (_cache[4] = [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.createTextVNode)(" 确认选择 ", -1)]))]),
3754
+ default: (0,external_commonjs_vue_commonjs2_vue_root_Vue_.withCtx)(() => [...(_cache[6] || (_cache[6] = [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.createTextVNode)(" 确认选择 ", -1)]))]),
3987
3755
  _: 1
3988
3756
  }, 8, ["onClick", "disabled"])) : (0,external_commonjs_vue_commonjs2_vue_root_Vue_.createCommentVNode)("", true)]),
3989
3757
  _: 1
3990
3758
  })]);
3991
3759
  }
3992
- ;// ./src/components/ModulePageSelect.vue?vue&type=template&id=65efbb12&scoped=true
3760
+ ;// ./src/components/ModulePageSelect.vue?vue&type=template&id=3fb01432&scoped=true
3993
3761
 
3762
+ // EXTERNAL MODULE: ./node_modules/core-js/modules/es.array.push.js
3763
+ var es_array_push = __webpack_require__(4114);
3994
3764
  // EXTERNAL MODULE: ./node_modules/core-js/modules/es.iterator.constructor.js
3995
3765
  var es_iterator_constructor = __webpack_require__(8111);
3996
3766
  // EXTERNAL MODULE: ./node_modules/core-js/modules/es.iterator.find.js
@@ -4001,8 +3771,6 @@ var es_iterator_for_each = __webpack_require__(7588);
4001
3771
  var es_iterator_map = __webpack_require__(1701);
4002
3772
  // EXTERNAL MODULE: ./node_modules/core-js/modules/es.iterator.some.js
4003
3773
  var es_iterator_some = __webpack_require__(3579);
4004
- // EXTERNAL MODULE: ./node_modules/core-js/modules/es.json.parse.js
4005
- var es_json_parse = __webpack_require__(9112);
4006
3774
  // EXTERNAL MODULE: ./node_modules/core-js/modules/es.json.stringify.js
4007
3775
  var es_json_stringify = __webpack_require__(3110);
4008
3776
  // EXTERNAL MODULE: external {"commonjs":"@tuoyuan/gateway-request-lib","commonjs2":"@tuoyuan/gateway-request-lib","root":"GatewayRequestLib"}
@@ -4396,9 +4164,9 @@ var gateway_request_lib_root_GatewayRequestLib_ = __webpack_require__(3092);
4396
4164
  return this.formData[field.parentKey]?.[field.subKey] ?? '';
4397
4165
  }
4398
4166
  const value = this.formData[key];
4399
- // 如果是数组类型,转换为 JSON 字符串显示
4400
- if (field.type === 'textarea' && Array.isArray(value)) {
4401
- return JSON.stringify(value, null, 2);
4167
+ // 如果是数组类型,确保返回数组
4168
+ if (field.type === 'array') {
4169
+ return Array.isArray(value) ? value : [];
4402
4170
  }
4403
4171
  return value ?? '';
4404
4172
  },
@@ -4410,17 +4178,31 @@ var gateway_request_lib_root_GatewayRequestLib_ = __webpack_require__(3092);
4410
4178
  }
4411
4179
  this.formData[field.parentKey][field.subKey] = value;
4412
4180
  } else {
4413
- // 如果是数组类型的字段,尝试解析 JSON
4414
- if (field.type === 'textarea' && typeof value === 'string') {
4415
- try {
4416
- this.formData[key] = JSON.parse(value);
4417
- } catch (e) {
4418
- // 解析失败,保存原始字符串
4419
- this.formData[key] = value;
4420
- }
4421
- } else {
4422
- this.formData[key] = value;
4423
- }
4181
+ this.formData[key] = value;
4182
+ }
4183
+ },
4184
+ // 添加数组项
4185
+ addArrayItem(key, field) {
4186
+ if (!this.formData[key]) {
4187
+ this.formData[key] = [];
4188
+ }
4189
+ const newItem = {};
4190
+ // 初始化新项的字段
4191
+ Object.keys(field.itemFields || {}).forEach(subKey => {
4192
+ newItem[subKey] = '';
4193
+ });
4194
+ this.formData[key].push(newItem);
4195
+ },
4196
+ // 删除数组项
4197
+ removeArrayItem(key, field, index) {
4198
+ if (this.formData[key] && Array.isArray(this.formData[key])) {
4199
+ this.formData[key].splice(index, 1);
4200
+ }
4201
+ },
4202
+ // 更新数组项的字段
4203
+ updateArrayItem(key, field, index, subKey, value) {
4204
+ if (this.formData[key] && this.formData[key][index]) {
4205
+ this.formData[key][index][subKey] = value;
4424
4206
  }
4425
4207
  },
4426
4208
  // 解析配置 schema(基于 JSON Schema)- 支持嵌套的 object 和 array 类型
@@ -4430,23 +4212,24 @@ var gateway_request_lib_root_GatewayRequestLib_ = __webpack_require__(3092);
4430
4212
  Object.keys(schema.properties).forEach(key => {
4431
4213
  const prop = schema.properties[key];
4432
4214
 
4433
- // 如果是数组类型,使用 textarea 让用户输入 JSON
4215
+ // 如果是数组类型,提取 items properties 作为子字段
4434
4216
  if (prop.type === 'array') {
4435
- let placeholder = prop.description || '请输入JSON格式的数组';
4436
- // 如果数组的 items 有定义,提供示例
4217
+ const itemFields = {};
4437
4218
  if (prop.items && prop.items.type === 'object' && prop.items.properties) {
4438
- const example = {};
4439
4219
  Object.keys(prop.items.properties).forEach(itemKey => {
4440
4220
  const itemProp = prop.items.properties[itemKey];
4441
- example[itemKey] = itemProp.title || itemKey;
4221
+ itemFields[itemKey] = {
4222
+ title: itemProp.title || itemKey,
4223
+ type: itemProp.type || 'string'
4224
+ };
4442
4225
  });
4443
- placeholder = `${prop.description || ''}\n示例格式:\n${JSON.stringify([example], null, 2)}`;
4444
4226
  }
4445
4227
  fields[key] = {
4446
4228
  label: prop.title || key,
4447
- type: 'textarea',
4448
- placeholder: placeholder,
4449
- default: prop.default || []
4229
+ type: 'array',
4230
+ placeholder: prop.description || '',
4231
+ default: prop.default || [],
4232
+ itemFields: itemFields
4450
4233
  };
4451
4234
  }
4452
4235
  // 如果是嵌套的 object 类型,递归解析其子字段
@@ -4555,9 +4338,9 @@ var gateway_request_lib_root_GatewayRequestLib_ = __webpack_require__(3092);
4555
4338
  });
4556
4339
  ;// ./src/components/ModulePageSelect.vue?vue&type=script&lang=js
4557
4340
 
4558
- // EXTERNAL MODULE: ./node_modules/vue-style-loader/index.js??clonedRuleSet-54.use[0]!./node_modules/css-loader/dist/cjs.js??clonedRuleSet-54.use[1]!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-54.use[2]!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-54.use[3]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/components/ModulePageSelect.vue?vue&type=style&index=0&id=65efbb12&scoped=true&lang=css
4559
- var ModulePageSelectvue_type_style_index_0_id_65efbb12_scoped_true_lang_css = __webpack_require__(7120);
4560
- ;// ./src/components/ModulePageSelect.vue?vue&type=style&index=0&id=65efbb12&scoped=true&lang=css
4341
+ // EXTERNAL MODULE: ./node_modules/vue-style-loader/index.js??clonedRuleSet-54.use[0]!./node_modules/css-loader/dist/cjs.js??clonedRuleSet-54.use[1]!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-54.use[2]!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-54.use[3]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/components/ModulePageSelect.vue?vue&type=style&index=0&id=3fb01432&scoped=true&lang=css
4342
+ var ModulePageSelectvue_type_style_index_0_id_3fb01432_scoped_true_lang_css = __webpack_require__(9690);
4343
+ ;// ./src/components/ModulePageSelect.vue?vue&type=style&index=0&id=3fb01432&scoped=true&lang=css
4561
4344
 
4562
4345
  // EXTERNAL MODULE: ./node_modules/vue-loader/dist/exportHelper.js
4563
4346
  var exportHelper = __webpack_require__(5907);
@@ -4569,7 +4352,7 @@ var exportHelper = __webpack_require__(5907);
4569
4352
  ;
4570
4353
 
4571
4354
 
4572
- const __exports__ = /*#__PURE__*/(0,exportHelper/* default */.A)(ModulePageSelectvue_type_script_lang_js, [['render',render],['__scopeId',"data-v-65efbb12"]])
4355
+ const __exports__ = /*#__PURE__*/(0,exportHelper/* default */.A)(ModulePageSelectvue_type_script_lang_js, [['render',render],['__scopeId',"data-v-3fb01432"]])
4573
4356
 
4574
4357
  /* harmony default export */ var ModulePageSelect = (__exports__);
4575
4358
  ;// ./src/index.js