@tuoyuan/module-page-select 1.0.7 → 1.0.8
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/dist/module-page-select.common.js +104 -43
- package/dist/module-page-select.common.js.map +1 -1
- package/dist/module-page-select.umd.js +104 -43
- package/dist/module-page-select.umd.js.map +1 -1
- package/dist/module-page-select.umd.min.js +1 -1
- package/dist/module-page-select.umd.min.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/******/ (function() { // webpackBootstrap
|
|
2
2
|
/******/ var __webpack_modules__ = ({
|
|
3
3
|
|
|
4
|
-
/***/
|
|
4
|
+
/***/ 4922:
|
|
5
5
|
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
6
6
|
|
|
7
7
|
"use strict";
|
|
@@ -15,7 +15,7 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
15
15
|
|
|
16
16
|
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()));
|
|
17
17
|
// Module
|
|
18
|
-
___CSS_LOADER_EXPORT___.push([module.id, ".module-page-select[data-v-
|
|
18
|
+
___CSS_LOADER_EXPORT___.push([module.id, ".module-page-select[data-v-cfb98662]{width:100%}.selection-preview[data-v-cfb98662]{margin-top:8px;padding:8px 12px;background:#f0f9ff;border:1px solid #91d5ff;border-radius:4px;font-size:13px}.preview-label[data-v-cfb98662]{color:#666;font-size:12px;margin-bottom:4px}.preview-value[data-v-cfb98662]{color:#1890ff;font-weight:500}.config-form[data-v-cfb98662]{margin-top:16px}", ""]);
|
|
19
19
|
// Exports
|
|
20
20
|
/* harmony default export */ __webpack_exports__["default"] = (___CSS_LOADER_EXPORT___);
|
|
21
21
|
|
|
@@ -148,19 +148,19 @@ exports.A = (sfc, props) => {
|
|
|
148
148
|
|
|
149
149
|
/***/ }),
|
|
150
150
|
|
|
151
|
-
/***/
|
|
151
|
+
/***/ 7871:
|
|
152
152
|
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
|
|
153
153
|
|
|
154
154
|
// style-loader: Adds some css to the DOM by adding a <style> tag
|
|
155
155
|
|
|
156
156
|
// load the styles
|
|
157
|
-
var content = __webpack_require__(
|
|
157
|
+
var content = __webpack_require__(4922);
|
|
158
158
|
if(content.__esModule) content = content.default;
|
|
159
159
|
if(typeof content === 'string') content = [[module.id, content, '']];
|
|
160
160
|
if(content.locals) module.exports = content.locals;
|
|
161
161
|
// add the styles to the DOM
|
|
162
162
|
var add = (__webpack_require__(8459)/* ["default"] */ .A)
|
|
163
|
-
var update = add("
|
|
163
|
+
var update = add("753519da", content, true, {"sourceMap":false,"shadowMode":false});
|
|
164
164
|
|
|
165
165
|
/***/ }),
|
|
166
166
|
|
|
@@ -3541,7 +3541,7 @@ if (typeof window !== 'undefined') {
|
|
|
3541
3541
|
|
|
3542
3542
|
;// external {"commonjs":"vue","commonjs2":"vue","root":"Vue"}
|
|
3543
3543
|
var external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject = require("vue");
|
|
3544
|
-
;// ./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.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=
|
|
3544
|
+
;// ./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.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=cfb98662&scoped=true
|
|
3545
3545
|
|
|
3546
3546
|
const _hoisted_1 = {
|
|
3547
3547
|
class: "module-page-select"
|
|
@@ -3635,31 +3635,31 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
|
|
|
3635
3635
|
}, {
|
|
3636
3636
|
default: (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.withCtx)(() => [field.type === 'text' ? ((0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.openBlock)(), (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.createBlock)(_component_a_input, {
|
|
3637
3637
|
key: 0,
|
|
3638
|
-
|
|
3639
|
-
|
|
3640
|
-
|
|
3641
|
-
}, null, 8, ["
|
|
3638
|
+
"model-value": $options.getNestedValue(key, field),
|
|
3639
|
+
placeholder: field.placeholder || '',
|
|
3640
|
+
"onUpdate:modelValue": val => $options.setNestedValue(key, field, val)
|
|
3641
|
+
}, null, 8, ["model-value", "placeholder", "onUpdate:modelValue"])) : field.type === 'number' ? ((0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.openBlock)(), (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.createBlock)(_component_a_input_number, {
|
|
3642
3642
|
key: 1,
|
|
3643
|
-
|
|
3644
|
-
"onUpdate:modelValue": $event => $data.formData[key] = $event,
|
|
3643
|
+
"model-value": $options.getNestedValue(key, field),
|
|
3645
3644
|
placeholder: field.placeholder || '',
|
|
3646
3645
|
style: {
|
|
3647
3646
|
"width": "100%"
|
|
3648
|
-
}
|
|
3649
|
-
|
|
3647
|
+
},
|
|
3648
|
+
"onUpdate:modelValue": val => $options.setNestedValue(key, field, val)
|
|
3649
|
+
}, null, 8, ["model-value", "placeholder", "onUpdate:modelValue"])) : field.type === 'textarea' ? ((0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.openBlock)(), (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.createBlock)(_component_a_textarea, {
|
|
3650
3650
|
key: 2,
|
|
3651
|
-
|
|
3652
|
-
"onUpdate:modelValue": $event => $data.formData[key] = $event,
|
|
3651
|
+
"model-value": $options.getNestedValue(key, field),
|
|
3653
3652
|
placeholder: field.placeholder || '',
|
|
3654
3653
|
"auto-size": {
|
|
3655
3654
|
minRows: 3,
|
|
3656
3655
|
maxRows: 6
|
|
3657
|
-
}
|
|
3658
|
-
|
|
3656
|
+
},
|
|
3657
|
+
"onUpdate:modelValue": val => $options.setNestedValue(key, field, val)
|
|
3658
|
+
}, null, 8, ["model-value", "placeholder", "onUpdate:modelValue"])) : field.type === 'select' ? ((0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.openBlock)(), (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.createBlock)(_component_a_select, {
|
|
3659
3659
|
key: 3,
|
|
3660
|
-
|
|
3661
|
-
|
|
3662
|
-
|
|
3660
|
+
"model-value": $options.getNestedValue(key, field),
|
|
3661
|
+
placeholder: "请选择",
|
|
3662
|
+
"onUpdate:modelValue": val => $options.setNestedValue(key, field, val)
|
|
3663
3663
|
}, {
|
|
3664
3664
|
default: (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.withCtx)(() => [((0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.openBlock)(true), (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.createElementBlock)(external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.Fragment, null, (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.renderList)(field.options, option => {
|
|
3665
3665
|
return (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.openBlock)(), (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.createBlock)(_component_a_option, {
|
|
@@ -3672,7 +3672,7 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
|
|
|
3672
3672
|
}, 1032, ["value", "label"]);
|
|
3673
3673
|
}), 128))]),
|
|
3674
3674
|
_: 2
|
|
3675
|
-
}, 1032, ["
|
|
3675
|
+
}, 1032, ["model-value", "onUpdate:modelValue"])) : (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.createCommentVNode)("", true)]),
|
|
3676
3676
|
_: 2
|
|
3677
3677
|
}, 1032, ["label", "field"]);
|
|
3678
3678
|
}), 128))], 64)) : (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.createCommentVNode)("", true), $data.showConfirmButton ? ((0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.openBlock)(), (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.createBlock)(_component_a_button, {
|
|
@@ -3692,7 +3692,7 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
|
|
|
3692
3692
|
_: 1
|
|
3693
3693
|
})]);
|
|
3694
3694
|
}
|
|
3695
|
-
;// ./src/components/ModulePageSelect.vue?vue&type=template&id=
|
|
3695
|
+
;// ./src/components/ModulePageSelect.vue?vue&type=template&id=cfb98662&scoped=true
|
|
3696
3696
|
|
|
3697
3697
|
// EXTERNAL MODULE: ./node_modules/core-js/modules/es.iterator.constructor.js
|
|
3698
3698
|
var es_iterator_constructor = __webpack_require__(8111);
|
|
@@ -4067,11 +4067,9 @@ var gateway_request_lib_root_GatewayRequestLib_namespaceObject = require("@tuoyu
|
|
|
4067
4067
|
if (page.options && typeof page.options === 'object' && Object.keys(page.options).length > 0) {
|
|
4068
4068
|
this.configFields = this.parseConfigSchema(page.options);
|
|
4069
4069
|
this.showConfigForm = true;
|
|
4070
|
-
//
|
|
4070
|
+
// 如果有已有的配置数据,加载它(支持嵌套结构)
|
|
4071
4071
|
if (this.modelValue?.config) {
|
|
4072
|
-
this.formData =
|
|
4073
|
-
...this.modelValue.config
|
|
4074
|
-
};
|
|
4072
|
+
this.formData = this.deepClone(this.modelValue.config);
|
|
4075
4073
|
} else {
|
|
4076
4074
|
// 初始化表单数据为默认值
|
|
4077
4075
|
this.initFormData();
|
|
@@ -4082,22 +4080,74 @@ var gateway_request_lib_root_GatewayRequestLib_namespaceObject = require("@tuoyu
|
|
|
4082
4080
|
this.formData = {};
|
|
4083
4081
|
}
|
|
4084
4082
|
},
|
|
4085
|
-
//
|
|
4083
|
+
// 深拷贝对象
|
|
4084
|
+
deepClone(obj) {
|
|
4085
|
+
if (obj === null || typeof obj !== 'object') return obj;
|
|
4086
|
+
if (Array.isArray(obj)) return obj.map(item => this.deepClone(item));
|
|
4087
|
+
const cloned = {};
|
|
4088
|
+
Object.keys(obj).forEach(key => {
|
|
4089
|
+
cloned[key] = this.deepClone(obj[key]);
|
|
4090
|
+
});
|
|
4091
|
+
return cloned;
|
|
4092
|
+
},
|
|
4093
|
+
// 获取嵌套字段的值
|
|
4094
|
+
getNestedValue(key, field) {
|
|
4095
|
+
if (field.parentKey && field.subKey) {
|
|
4096
|
+
return this.formData[field.parentKey]?.[field.subKey] ?? '';
|
|
4097
|
+
}
|
|
4098
|
+
return this.formData[key] ?? '';
|
|
4099
|
+
},
|
|
4100
|
+
// 设置嵌套字段的值(Vue 3 直接赋值即可响应)
|
|
4101
|
+
setNestedValue(key, field, value) {
|
|
4102
|
+
if (field.parentKey && field.subKey) {
|
|
4103
|
+
if (!this.formData[field.parentKey]) {
|
|
4104
|
+
this.formData[field.parentKey] = {};
|
|
4105
|
+
}
|
|
4106
|
+
this.formData[field.parentKey][field.subKey] = value;
|
|
4107
|
+
} else {
|
|
4108
|
+
this.formData[key] = value;
|
|
4109
|
+
}
|
|
4110
|
+
},
|
|
4111
|
+
// 解析配置 schema(基于 JSON Schema)- 支持嵌套的 object 类型
|
|
4086
4112
|
parseConfigSchema(schema) {
|
|
4087
4113
|
const fields = {};
|
|
4088
4114
|
if (schema.properties) {
|
|
4089
4115
|
Object.keys(schema.properties).forEach(key => {
|
|
4090
4116
|
const prop = schema.properties[key];
|
|
4091
|
-
|
|
4092
|
-
|
|
4093
|
-
|
|
4094
|
-
|
|
4095
|
-
|
|
4096
|
-
|
|
4097
|
-
|
|
4098
|
-
|
|
4099
|
-
|
|
4100
|
-
|
|
4117
|
+
|
|
4118
|
+
// 如果是嵌套的 object 类型,递归解析其子字段
|
|
4119
|
+
if (prop.type === 'object' && prop.properties) {
|
|
4120
|
+
Object.keys(prop.properties).forEach(subKey => {
|
|
4121
|
+
const subProp = prop.properties[subKey];
|
|
4122
|
+
// 使用 "parentKey.subKey" 作为表单字段的 key
|
|
4123
|
+
const fieldKey = `${key}.${subKey}`;
|
|
4124
|
+
fields[fieldKey] = {
|
|
4125
|
+
label: subProp.title || subKey,
|
|
4126
|
+
type: this.mapSchemaType(subProp.type),
|
|
4127
|
+
placeholder: subProp.description || '',
|
|
4128
|
+
options: subProp.enum ? subProp.enum.map((v, i) => ({
|
|
4129
|
+
label: subProp.enumDescriptions?.[i] || v,
|
|
4130
|
+
value: v
|
|
4131
|
+
})) : null,
|
|
4132
|
+
default: subProp.default,
|
|
4133
|
+
parentKey: key,
|
|
4134
|
+
// 记录父字段名,用于保存数据时重建嵌套结构
|
|
4135
|
+
subKey: subKey
|
|
4136
|
+
};
|
|
4137
|
+
});
|
|
4138
|
+
} else {
|
|
4139
|
+
// 非 object 类型,直接解析
|
|
4140
|
+
fields[key] = {
|
|
4141
|
+
label: prop.title || key,
|
|
4142
|
+
type: this.mapSchemaType(prop.type),
|
|
4143
|
+
placeholder: prop.description || '',
|
|
4144
|
+
options: prop.enum ? prop.enum.map((v, i) => ({
|
|
4145
|
+
label: prop.enumDescriptions?.[i] || v,
|
|
4146
|
+
value: v
|
|
4147
|
+
})) : null,
|
|
4148
|
+
default: prop.default
|
|
4149
|
+
};
|
|
4150
|
+
}
|
|
4101
4151
|
});
|
|
4102
4152
|
}
|
|
4103
4153
|
return fields;
|
|
@@ -4116,7 +4166,18 @@ var gateway_request_lib_root_GatewayRequestLib_namespaceObject = require("@tuoyu
|
|
|
4116
4166
|
initFormData() {
|
|
4117
4167
|
const data = {};
|
|
4118
4168
|
Object.keys(this.configFields).forEach(key => {
|
|
4119
|
-
|
|
4169
|
+
const field = this.configFields[key];
|
|
4170
|
+
const defaultValue = field.default !== undefined ? field.default : '';
|
|
4171
|
+
|
|
4172
|
+
// 如果是嵌套字段(有 parentKey),需要构建嵌套结构
|
|
4173
|
+
if (field.parentKey && field.subKey) {
|
|
4174
|
+
if (!data[field.parentKey]) {
|
|
4175
|
+
data[field.parentKey] = {};
|
|
4176
|
+
}
|
|
4177
|
+
data[field.parentKey][field.subKey] = defaultValue;
|
|
4178
|
+
} else {
|
|
4179
|
+
data[key] = defaultValue;
|
|
4180
|
+
}
|
|
4120
4181
|
});
|
|
4121
4182
|
this.formData = data;
|
|
4122
4183
|
},
|
|
@@ -4160,9 +4221,9 @@ var gateway_request_lib_root_GatewayRequestLib_namespaceObject = require("@tuoyu
|
|
|
4160
4221
|
});
|
|
4161
4222
|
;// ./src/components/ModulePageSelect.vue?vue&type=script&lang=js
|
|
4162
4223
|
|
|
4163
|
-
// EXTERNAL MODULE: ./node_modules/vue-style-loader/index.js??clonedRuleSet-12.use[0]!./node_modules/css-loader/dist/cjs.js??clonedRuleSet-12.use[1]!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12.use[2]!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12.use[3]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/components/ModulePageSelect.vue?vue&type=style&index=0&id=
|
|
4164
|
-
var
|
|
4165
|
-
;// ./src/components/ModulePageSelect.vue?vue&type=style&index=0&id=
|
|
4224
|
+
// EXTERNAL MODULE: ./node_modules/vue-style-loader/index.js??clonedRuleSet-12.use[0]!./node_modules/css-loader/dist/cjs.js??clonedRuleSet-12.use[1]!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12.use[2]!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12.use[3]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/components/ModulePageSelect.vue?vue&type=style&index=0&id=cfb98662&scoped=true&lang=css
|
|
4225
|
+
var ModulePageSelectvue_type_style_index_0_id_cfb98662_scoped_true_lang_css = __webpack_require__(7871);
|
|
4226
|
+
;// ./src/components/ModulePageSelect.vue?vue&type=style&index=0&id=cfb98662&scoped=true&lang=css
|
|
4166
4227
|
|
|
4167
4228
|
// EXTERNAL MODULE: ./node_modules/vue-loader/dist/exportHelper.js
|
|
4168
4229
|
var exportHelper = __webpack_require__(1241);
|
|
@@ -4174,7 +4235,7 @@ var exportHelper = __webpack_require__(1241);
|
|
|
4174
4235
|
;
|
|
4175
4236
|
|
|
4176
4237
|
|
|
4177
|
-
const __exports__ = /*#__PURE__*/(0,exportHelper/* default */.A)(ModulePageSelectvue_type_script_lang_js, [['render',render],['__scopeId',"data-v-
|
|
4238
|
+
const __exports__ = /*#__PURE__*/(0,exportHelper/* default */.A)(ModulePageSelectvue_type_script_lang_js, [['render',render],['__scopeId',"data-v-cfb98662"]])
|
|
4178
4239
|
|
|
4179
4240
|
/* harmony default export */ var ModulePageSelect = (__exports__);
|
|
4180
4241
|
;// ./src/index.js
|