@fecp/designer 5.4.1 → 5.4.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.
- package/es/designer/package.json.mjs +1 -1
- package/es/designer/src/components/ParamsConfig.vue2.mjs +1 -1
- package/es/designer/src/components/ValueSelector.vue.mjs +191 -0
- package/es/designer/src/layout/aside/HiddenFieldDialog.vue.mjs +1 -1
- package/es/designer/src/packages/advancedFilter/ValueInput.vue2.mjs +1 -1
- package/es/designer/src/packages/dataLinkage/index.vue.mjs +1 -1
- package/es/designer/src/packages/dialogGlobal/index.vue.mjs +1 -1
- package/es/designer/src/packages/form/property/approvalHistory.vue.mjs +1 -1
- package/es/designer/src/packages/form/property/subForm.vue.mjs +1 -1
- package/es/designer/src/packages/prod/index.vue.mjs +1 -1
- package/es/designer/src/packages/table/headerBtn.vue.mjs +1 -1
- package/es/designer.css +6 -6
- package/es/packages/vue/src/components/forms/form/Form.vue.mjs +2 -2
- package/lib/designer/package.json.js +1 -1
- package/lib/designer/src/components/ParamsConfig.vue2.js +1 -1
- package/lib/designer/src/components/ValueSelector.vue.js +191 -0
- package/lib/designer/src/layout/aside/HiddenFieldDialog.vue.js +1 -1
- package/lib/designer/src/packages/advancedFilter/ValueInput.vue2.js +1 -1
- package/lib/designer/src/packages/dataLinkage/index.vue.js +1 -1
- package/lib/designer/src/packages/dialogGlobal/index.vue.js +1 -1
- package/lib/designer/src/packages/form/property/approvalHistory.vue.js +1 -1
- package/lib/designer/src/packages/form/property/subForm.vue.js +1 -1
- package/lib/designer/src/packages/prod/index.vue.js +1 -1
- package/lib/designer/src/packages/table/headerBtn.vue.js +1 -1
- package/lib/designer.css +6 -6
- package/lib/packages/vue/src/components/forms/form/Form.vue.js +2 -2
- package/package.json +1 -1
|
@@ -4,7 +4,7 @@ import "../../../node_modules/element-plus/es/index.mjs";
|
|
|
4
4
|
/* empty css */
|
|
5
5
|
import { computed, createElementBlock, openBlock, createBlock, unref, withCtx, createTextVNode, createElementVNode, Fragment, renderList, createVNode } from "vue";
|
|
6
6
|
import { Plus as plus_default, Delete as delete_default } from "../../../node_modules/@element-plus/icons-vue/dist/index.mjs";
|
|
7
|
-
import ValueSelector from "./ValueSelector.
|
|
7
|
+
import ValueSelector from "./ValueSelector.vue.mjs";
|
|
8
8
|
/* empty css */
|
|
9
9
|
import _export_sfc from "../../../_virtual/_plugin-vue_export-helper.mjs";
|
|
10
10
|
import { ElButton } from "../../../node_modules/element-plus/es/components/button/index.mjs";
|
|
@@ -0,0 +1,191 @@
|
|
|
1
|
+
import { computed, createBlock, openBlock, resolveDynamicComponent, withCtx, createVNode } from "vue";
|
|
2
|
+
import "../../../node_modules/element-plus/es/index.mjs";
|
|
3
|
+
import ValueSelectorPopover from "./ValueSelectorPopover.vue2.mjs";
|
|
4
|
+
import { getEditConfigData, getEditConfigDataFields } from "../packages/utils/common.mjs";
|
|
5
|
+
/* empty css */
|
|
6
|
+
import _export_sfc from "../../../_virtual/_plugin-vue_export-helper.mjs";
|
|
7
|
+
import { ElInputTag } from "../../../node_modules/element-plus/es/components/input-tag/index.mjs";
|
|
8
|
+
import { ElInput } from "../../../node_modules/element-plus/es/components/input/index.mjs";
|
|
9
|
+
const _sfc_main = {
|
|
10
|
+
__name: "ValueSelector",
|
|
11
|
+
props: {
|
|
12
|
+
// modelValue 的格式:
|
|
13
|
+
// 单选:{ type: 'field', value: '字段ID' }
|
|
14
|
+
// 多选:[{ type: 'field', value: '字段ID1' }, { type: 'field', value: '字段ID2' }]
|
|
15
|
+
modelValue: {
|
|
16
|
+
default: () => null
|
|
17
|
+
},
|
|
18
|
+
placeholder: {
|
|
19
|
+
type: String,
|
|
20
|
+
default: "请输入或选择值"
|
|
21
|
+
},
|
|
22
|
+
readOnly: {
|
|
23
|
+
type: Boolean,
|
|
24
|
+
default: false
|
|
25
|
+
},
|
|
26
|
+
disabled: {
|
|
27
|
+
type: Boolean,
|
|
28
|
+
default: false
|
|
29
|
+
},
|
|
30
|
+
multiple: {
|
|
31
|
+
type: Boolean,
|
|
32
|
+
default: false
|
|
33
|
+
},
|
|
34
|
+
size: {
|
|
35
|
+
type: String,
|
|
36
|
+
default: "small"
|
|
37
|
+
}
|
|
38
|
+
// // 可选的字段列表(从父组件传入)
|
|
39
|
+
// availableFields: {
|
|
40
|
+
// type: Array,
|
|
41
|
+
// default: () => [],
|
|
42
|
+
// validator: (value) => Array.isArray(value),
|
|
43
|
+
// },
|
|
44
|
+
},
|
|
45
|
+
emits: ["update:modelValue"],
|
|
46
|
+
setup(__props, { emit: __emit }) {
|
|
47
|
+
const props = __props;
|
|
48
|
+
const emit = __emit;
|
|
49
|
+
const inputComponent = computed(() => {
|
|
50
|
+
return props.multiple ? ElInputTag : ElInput;
|
|
51
|
+
});
|
|
52
|
+
const hiddenFieldsData = computed(() => {
|
|
53
|
+
const editConfigData = getEditConfigData();
|
|
54
|
+
return (editConfigData == null ? void 0 : editConfigData.hiddenFields) || [];
|
|
55
|
+
});
|
|
56
|
+
const availableFields = computed(() => {
|
|
57
|
+
const fields = getEditConfigDataFields() || [];
|
|
58
|
+
return fields.map((item) => ({
|
|
59
|
+
id: item.id,
|
|
60
|
+
label: item.label,
|
|
61
|
+
fieldName: item.fieldName,
|
|
62
|
+
fieldType: item.fieldType
|
|
63
|
+
}));
|
|
64
|
+
});
|
|
65
|
+
const displayText = computed(() => {
|
|
66
|
+
if (!props.modelValue) return "";
|
|
67
|
+
if (!props.multiple && typeof props.modelValue === "object" && !Array.isArray(props.modelValue)) {
|
|
68
|
+
const val = props.modelValue;
|
|
69
|
+
if (val.label) return val.label;
|
|
70
|
+
const field = availableFields.value.find((f) => f.id === val.value);
|
|
71
|
+
return (field == null ? void 0 : field.label) || (field == null ? void 0 : field.fieldName) || val.value;
|
|
72
|
+
} else if (!props.multiple && typeof props.modelValue === "string") {
|
|
73
|
+
return props.modelValue;
|
|
74
|
+
}
|
|
75
|
+
return "";
|
|
76
|
+
});
|
|
77
|
+
const tags = computed({
|
|
78
|
+
get() {
|
|
79
|
+
if (!props.multiple || !Array.isArray(props.modelValue)) {
|
|
80
|
+
return [];
|
|
81
|
+
}
|
|
82
|
+
return props.modelValue.map((item) => {
|
|
83
|
+
if (item.label) return item.label;
|
|
84
|
+
const field = availableFields.value.find((f) => f.id === item.value);
|
|
85
|
+
return (field == null ? void 0 : field.label) || (field == null ? void 0 : field.fieldName) || item.value;
|
|
86
|
+
}).filter(Boolean);
|
|
87
|
+
},
|
|
88
|
+
set(val) {
|
|
89
|
+
if (Array.isArray(props.modelValue)) {
|
|
90
|
+
const newModelValue = props.modelValue.filter((item) => {
|
|
91
|
+
const itemLabel = item.label || (() => {
|
|
92
|
+
const field = [
|
|
93
|
+
...availableFields.value,
|
|
94
|
+
...hiddenFieldsData.value
|
|
95
|
+
].find((f) => f.id === item.value);
|
|
96
|
+
return (field == null ? void 0 : field.label) || (field == null ? void 0 : field.fieldName) || item.value;
|
|
97
|
+
})();
|
|
98
|
+
return val.includes(itemLabel);
|
|
99
|
+
});
|
|
100
|
+
emit("update:modelValue", newModelValue);
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
});
|
|
104
|
+
const unifiedInputValue = computed({
|
|
105
|
+
get() {
|
|
106
|
+
return props.multiple ? tags.value : displayText.value;
|
|
107
|
+
},
|
|
108
|
+
set(val) {
|
|
109
|
+
if (props.multiple && Array.isArray(val)) {
|
|
110
|
+
tags.value = val;
|
|
111
|
+
} else if (!props.multiple && typeof val === "string") {
|
|
112
|
+
emit("update:modelValue", val);
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
});
|
|
116
|
+
const handleConfirm = (selected) => {
|
|
117
|
+
let result = null;
|
|
118
|
+
if (selected.type === "field") {
|
|
119
|
+
const field = [...availableFields.value, ...hiddenFieldsData.value].find(
|
|
120
|
+
(f) => f.id === selected.value
|
|
121
|
+
);
|
|
122
|
+
result = {
|
|
123
|
+
label: `\${${(field == null ? void 0 : field.label) || (field == null ? void 0 : field.fieldName) || selected.value}}`,
|
|
124
|
+
type: "field",
|
|
125
|
+
value: selected.value
|
|
126
|
+
};
|
|
127
|
+
} else if (selected.type === "userInfo") {
|
|
128
|
+
result = {
|
|
129
|
+
label: `\${用户信息: ${getUserInfoLabel(selected.value)}}`,
|
|
130
|
+
type: "userInfo",
|
|
131
|
+
value: selected.value
|
|
132
|
+
};
|
|
133
|
+
} else if (selected.type === "urlParam") {
|
|
134
|
+
result = {
|
|
135
|
+
label: `\${路由参数: ${selected.value}}`,
|
|
136
|
+
type: "urlParam",
|
|
137
|
+
value: selected.value
|
|
138
|
+
};
|
|
139
|
+
}
|
|
140
|
+
if (!result) return;
|
|
141
|
+
if (props.multiple) {
|
|
142
|
+
const currentValue = Array.isArray(props.modelValue) ? props.modelValue : [];
|
|
143
|
+
const exists = currentValue.some((item) => item.value === result.value);
|
|
144
|
+
if (!exists) {
|
|
145
|
+
emit("update:modelValue", [...currentValue, result]);
|
|
146
|
+
}
|
|
147
|
+
} else {
|
|
148
|
+
emit("update:modelValue", result);
|
|
149
|
+
}
|
|
150
|
+
};
|
|
151
|
+
const getUserInfoLabel = (key) => {
|
|
152
|
+
const labels = {
|
|
153
|
+
userCode: "用户编号",
|
|
154
|
+
userName: "用户名称",
|
|
155
|
+
roleCode: "角色编号",
|
|
156
|
+
roleName: "角色名称",
|
|
157
|
+
orgCode: "机构编号",
|
|
158
|
+
orgName: "机构名称"
|
|
159
|
+
};
|
|
160
|
+
return labels[key] || key;
|
|
161
|
+
};
|
|
162
|
+
return (_ctx, _cache) => {
|
|
163
|
+
return openBlock(), createBlock(resolveDynamicComponent(inputComponent.value), {
|
|
164
|
+
modelValue: unifiedInputValue.value,
|
|
165
|
+
"onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => unifiedInputValue.value = $event),
|
|
166
|
+
placeholder: __props.placeholder,
|
|
167
|
+
disabled: __props.disabled,
|
|
168
|
+
readonly: __props.readOnly,
|
|
169
|
+
trigger: __props.multiple ? "Space" : void 0,
|
|
170
|
+
"collapse-tags": "",
|
|
171
|
+
"collapse-tags-tooltip": "",
|
|
172
|
+
"max-collapse-tags": 1,
|
|
173
|
+
class: "value-selector-input",
|
|
174
|
+
size: __props.size
|
|
175
|
+
}, {
|
|
176
|
+
suffix: withCtx(() => [
|
|
177
|
+
createVNode(ValueSelectorPopover, {
|
|
178
|
+
"available-fields": availableFields.value,
|
|
179
|
+
disabled: __props.disabled,
|
|
180
|
+
onConfirm: handleConfirm
|
|
181
|
+
}, null, 8, ["available-fields", "disabled"])
|
|
182
|
+
]),
|
|
183
|
+
_: 1
|
|
184
|
+
}, 8, ["modelValue", "placeholder", "disabled", "readonly", "trigger", "size"]);
|
|
185
|
+
};
|
|
186
|
+
}
|
|
187
|
+
};
|
|
188
|
+
const ValueSelector = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-e5b87efa"]]);
|
|
189
|
+
export {
|
|
190
|
+
ValueSelector as default
|
|
191
|
+
};
|
|
@@ -16,7 +16,7 @@ import { Plus as plus_default, RefreshRight as refresh_right_default, Delete as
|
|
|
16
16
|
import { getEditConfigData, getEditingType, cloneDeep, getEditConfigDataFields } from "../../packages/utils/common.mjs";
|
|
17
17
|
import { defaultProperty } from "../../packages/form/aside/index.mjs";
|
|
18
18
|
import { defaultProperty as defaultProperty$1 } from "../../packages/table/aside/index.mjs";
|
|
19
|
-
import ValueSelector from "../../components/ValueSelector.
|
|
19
|
+
import ValueSelector from "../../components/ValueSelector.vue.mjs";
|
|
20
20
|
/* empty css */
|
|
21
21
|
import _export_sfc from "../../../../_virtual/_plugin-vue_export-helper.mjs";
|
|
22
22
|
import { ElDialog } from "../../../../node_modules/element-plus/es/components/dialog/index.mjs";
|
|
@@ -14,7 +14,7 @@ import "../../../../node_modules/element-plus/theme-chalk/el-tooltip.css.mjs";
|
|
|
14
14
|
import "../../../../node_modules/element-plus/theme-chalk/el-date-picker.css.mjs";
|
|
15
15
|
import { computed, watch, ref, createElementBlock, unref, openBlock, createBlock, isRef, createVNode, createElementVNode, withCtx, Fragment, renderList } from "vue";
|
|
16
16
|
import { useVModel } from "../../../../node_modules/@vueuse/core/dist/index.mjs";
|
|
17
|
-
import ValueSelector from "../../components/ValueSelector.
|
|
17
|
+
import ValueSelector from "../../components/ValueSelector.vue.mjs";
|
|
18
18
|
import api from "../../api/index.mjs";
|
|
19
19
|
import { getEditConfigDataSources } from "../utils/common.mjs";
|
|
20
20
|
import { createDataSource } from "../utils/datasource.mjs";
|
|
@@ -30,7 +30,7 @@ import "../../../../node_modules/element-plus/theme-chalk/el-date-picker.css.mjs
|
|
|
30
30
|
/* empty css */
|
|
31
31
|
/* empty css */
|
|
32
32
|
import _export_sfc from "../../../../_virtual/_plugin-vue_export-helper.mjs";
|
|
33
|
-
/* empty css
|
|
33
|
+
/* empty css */
|
|
34
34
|
import "../../axios/config.mjs";
|
|
35
35
|
import "../../../../_virtual/FileSaver.min.mjs";
|
|
36
36
|
import "../../../../_virtual/index.mjs";
|
|
@@ -79,7 +79,7 @@ import "../../../../node_modules/element-plus/theme-chalk/el-date-picker.css.mjs
|
|
|
79
79
|
import "../../../../node_modules/element-plus/theme-chalk/el-tab-pane.css.mjs";
|
|
80
80
|
/* empty css */
|
|
81
81
|
/* empty css */
|
|
82
|
-
/* empty css
|
|
82
|
+
/* empty css */
|
|
83
83
|
import "../../axios/config.mjs";
|
|
84
84
|
/* empty css */
|
|
85
85
|
/* empty css */
|
|
@@ -11,7 +11,7 @@ import "../../../../../node_modules/element-plus/es/index.mjs";
|
|
|
11
11
|
import { computed, ref, watch, createBlock, openBlock, unref, isRef, withCtx, createVNode, createElementBlock, createCommentVNode, createTextVNode, Fragment } from "vue";
|
|
12
12
|
import { getCurrentItem, getEditConfigData } from "../../utils/common.mjs";
|
|
13
13
|
import emitter from "../../utils/eventBus.mjs";
|
|
14
|
-
import ValueSelector from "../../../components/ValueSelector.
|
|
14
|
+
import ValueSelector from "../../../components/ValueSelector.vue.mjs";
|
|
15
15
|
import { ElCollapse, ElCollapseItem } from "../../../../../node_modules/element-plus/es/components/collapse/index.mjs";
|
|
16
16
|
import { ElForm, ElFormItem } from "../../../../../node_modules/element-plus/es/components/form/index.mjs";
|
|
17
17
|
import { ElInput } from "../../../../../node_modules/element-plus/es/components/input/index.mjs";
|
|
@@ -13,7 +13,7 @@ import { computed, ref, createBlock, openBlock, unref, isRef, withCtx, createVNo
|
|
|
13
13
|
import { getCurrentItem, getEditConfigData } from "../../utils/common.mjs";
|
|
14
14
|
import TemplateSelector from "../../../components/TemplateSelector.vue.mjs";
|
|
15
15
|
import emitter from "../../utils/eventBus.mjs";
|
|
16
|
-
import ValueSelector from "../../../components/ValueSelector.
|
|
16
|
+
import ValueSelector from "../../../components/ValueSelector.vue.mjs";
|
|
17
17
|
import { ElCollapse, ElCollapseItem } from "../../../../../node_modules/element-plus/es/components/collapse/index.mjs";
|
|
18
18
|
import { ElForm, ElFormItem } from "../../../../../node_modules/element-plus/es/components/form/index.mjs";
|
|
19
19
|
import { ElInput } from "../../../../../node_modules/element-plus/es/components/input/index.mjs";
|
|
@@ -14,7 +14,7 @@ import "../../../../node_modules/element-plus/es/index.mjs";
|
|
|
14
14
|
import { useModel, ref, watch, computed, createBlock, openBlock, withCtx, createVNode, createElementVNode, createElementBlock, Fragment, renderList, createTextVNode, unref } from "vue";
|
|
15
15
|
import { Plus as plus_default } from "../../../../node_modules/@element-plus/icons-vue/dist/index.mjs";
|
|
16
16
|
import { getEditConfigData, getEditConfigDataFields, setEditConfigData } from "../utils/common.mjs";
|
|
17
|
-
import ValueSelector from "../../components/ValueSelector.
|
|
17
|
+
import ValueSelector from "../../components/ValueSelector.vue.mjs";
|
|
18
18
|
import api from "../../api/index.mjs";
|
|
19
19
|
/* empty css */
|
|
20
20
|
import _export_sfc from "../../../../_virtual/_plugin-vue_export-helper.mjs";
|
package/es/designer.css
CHANGED
|
@@ -5669,27 +5669,27 @@ body,
|
|
|
5669
5669
|
width: 80px;
|
|
5670
5670
|
font-size: var(--el-font-size-extra-small);
|
|
5671
5671
|
}
|
|
5672
|
-
.fec-form[data-v-
|
|
5672
|
+
.fec-form[data-v-c9bc9779] {
|
|
5673
5673
|
height: 100%;
|
|
5674
5674
|
}
|
|
5675
|
-
[data-v-
|
|
5675
|
+
[data-v-c9bc9779] .vgl-item {
|
|
5676
5676
|
transition: none;
|
|
5677
5677
|
}
|
|
5678
|
-
[data-v-
|
|
5678
|
+
[data-v-c9bc9779] .vgl-item > .el-form-item {
|
|
5679
5679
|
width: 100%;
|
|
5680
5680
|
padding: 12px 8px 0 8px;
|
|
5681
5681
|
height: calc(100% - 15px);
|
|
5682
5682
|
display: flex;
|
|
5683
5683
|
}
|
|
5684
|
-
[data-v-
|
|
5684
|
+
[data-v-c9bc9779] .vgl-item > .el-form-item.el-form-item--label-top {
|
|
5685
5685
|
flex-direction: column;
|
|
5686
5686
|
}
|
|
5687
|
-
[data-v-
|
|
5687
|
+
[data-v-c9bc9779] .vgl-item > .el-form-item .el-form-item__label {
|
|
5688
5688
|
line-height: 20px;
|
|
5689
5689
|
display: flex;
|
|
5690
5690
|
align-items: center;
|
|
5691
5691
|
}
|
|
5692
|
-
[data-v-
|
|
5692
|
+
[data-v-c9bc9779] .vgl-item > .el-container {
|
|
5693
5693
|
height: auto !important;
|
|
5694
5694
|
}.cell-content .cell-text[data-v-3e5372d4] {
|
|
5695
5695
|
display: inline-block;
|
|
@@ -146,7 +146,6 @@ const _sfc_main = /* @__PURE__ */ Object.assign({
|
|
|
146
146
|
"form",
|
|
147
147
|
props.initOption
|
|
148
148
|
);
|
|
149
|
-
emit("loaded", option);
|
|
150
149
|
rowHeight.value = option.labelPosition == "top" ? 1.5 : 1;
|
|
151
150
|
localConfig.value = option;
|
|
152
151
|
if (props.initFormMode) {
|
|
@@ -177,6 +176,7 @@ const _sfc_main = /* @__PURE__ */ Object.assign({
|
|
|
177
176
|
await pageEvents.executeEvent("onCreated");
|
|
178
177
|
}
|
|
179
178
|
}
|
|
179
|
+
emit("loaded", option);
|
|
180
180
|
} catch (error) {
|
|
181
181
|
console.error("加载配置失败:", error);
|
|
182
182
|
ElMessage.error("加载配置失败");
|
|
@@ -1027,7 +1027,7 @@ const _sfc_main = /* @__PURE__ */ Object.assign({
|
|
|
1027
1027
|
};
|
|
1028
1028
|
}
|
|
1029
1029
|
});
|
|
1030
|
-
const _Form = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-
|
|
1030
|
+
const _Form = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-c9bc9779"]]);
|
|
1031
1031
|
export {
|
|
1032
1032
|
_Form as default
|
|
1033
1033
|
};
|
|
@@ -6,7 +6,7 @@ require("../../../node_modules/element-plus/es/index.js");
|
|
|
6
6
|
;/* empty css */
|
|
7
7
|
const vue = require("vue");
|
|
8
8
|
const index$1 = require("../../../node_modules/@element-plus/icons-vue/dist/index.js");
|
|
9
|
-
const ValueSelector = require("./ValueSelector.
|
|
9
|
+
const ValueSelector = require("./ValueSelector.vue.js");
|
|
10
10
|
;/* empty css */
|
|
11
11
|
const _pluginVue_exportHelper = require("../../../_virtual/_plugin-vue_export-helper.js");
|
|
12
12
|
const index = require("../../../node_modules/element-plus/es/components/button/index.js");
|
|
@@ -0,0 +1,191 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
|
|
3
|
+
const vue = require("vue");
|
|
4
|
+
require("../../../node_modules/element-plus/es/index.js");
|
|
5
|
+
const ValueSelectorPopover = require("./ValueSelectorPopover.vue2.js");
|
|
6
|
+
const common = require("../packages/utils/common.js");
|
|
7
|
+
;/* empty css */
|
|
8
|
+
const _pluginVue_exportHelper = require("../../../_virtual/_plugin-vue_export-helper.js");
|
|
9
|
+
const index = require("../../../node_modules/element-plus/es/components/input-tag/index.js");
|
|
10
|
+
const index$1 = require("../../../node_modules/element-plus/es/components/input/index.js");
|
|
11
|
+
const _sfc_main = {
|
|
12
|
+
__name: "ValueSelector",
|
|
13
|
+
props: {
|
|
14
|
+
// modelValue 的格式:
|
|
15
|
+
// 单选:{ type: 'field', value: '字段ID' }
|
|
16
|
+
// 多选:[{ type: 'field', value: '字段ID1' }, { type: 'field', value: '字段ID2' }]
|
|
17
|
+
modelValue: {
|
|
18
|
+
default: () => null
|
|
19
|
+
},
|
|
20
|
+
placeholder: {
|
|
21
|
+
type: String,
|
|
22
|
+
default: "请输入或选择值"
|
|
23
|
+
},
|
|
24
|
+
readOnly: {
|
|
25
|
+
type: Boolean,
|
|
26
|
+
default: false
|
|
27
|
+
},
|
|
28
|
+
disabled: {
|
|
29
|
+
type: Boolean,
|
|
30
|
+
default: false
|
|
31
|
+
},
|
|
32
|
+
multiple: {
|
|
33
|
+
type: Boolean,
|
|
34
|
+
default: false
|
|
35
|
+
},
|
|
36
|
+
size: {
|
|
37
|
+
type: String,
|
|
38
|
+
default: "small"
|
|
39
|
+
}
|
|
40
|
+
// // 可选的字段列表(从父组件传入)
|
|
41
|
+
// availableFields: {
|
|
42
|
+
// type: Array,
|
|
43
|
+
// default: () => [],
|
|
44
|
+
// validator: (value) => Array.isArray(value),
|
|
45
|
+
// },
|
|
46
|
+
},
|
|
47
|
+
emits: ["update:modelValue"],
|
|
48
|
+
setup(__props, { emit: __emit }) {
|
|
49
|
+
const props = __props;
|
|
50
|
+
const emit = __emit;
|
|
51
|
+
const inputComponent = vue.computed(() => {
|
|
52
|
+
return props.multiple ? index.ElInputTag : index$1.ElInput;
|
|
53
|
+
});
|
|
54
|
+
const hiddenFieldsData = vue.computed(() => {
|
|
55
|
+
const editConfigData = common.getEditConfigData();
|
|
56
|
+
return (editConfigData == null ? void 0 : editConfigData.hiddenFields) || [];
|
|
57
|
+
});
|
|
58
|
+
const availableFields = vue.computed(() => {
|
|
59
|
+
const fields = common.getEditConfigDataFields() || [];
|
|
60
|
+
return fields.map((item) => ({
|
|
61
|
+
id: item.id,
|
|
62
|
+
label: item.label,
|
|
63
|
+
fieldName: item.fieldName,
|
|
64
|
+
fieldType: item.fieldType
|
|
65
|
+
}));
|
|
66
|
+
});
|
|
67
|
+
const displayText = vue.computed(() => {
|
|
68
|
+
if (!props.modelValue) return "";
|
|
69
|
+
if (!props.multiple && typeof props.modelValue === "object" && !Array.isArray(props.modelValue)) {
|
|
70
|
+
const val = props.modelValue;
|
|
71
|
+
if (val.label) return val.label;
|
|
72
|
+
const field = availableFields.value.find((f) => f.id === val.value);
|
|
73
|
+
return (field == null ? void 0 : field.label) || (field == null ? void 0 : field.fieldName) || val.value;
|
|
74
|
+
} else if (!props.multiple && typeof props.modelValue === "string") {
|
|
75
|
+
return props.modelValue;
|
|
76
|
+
}
|
|
77
|
+
return "";
|
|
78
|
+
});
|
|
79
|
+
const tags = vue.computed({
|
|
80
|
+
get() {
|
|
81
|
+
if (!props.multiple || !Array.isArray(props.modelValue)) {
|
|
82
|
+
return [];
|
|
83
|
+
}
|
|
84
|
+
return props.modelValue.map((item) => {
|
|
85
|
+
if (item.label) return item.label;
|
|
86
|
+
const field = availableFields.value.find((f) => f.id === item.value);
|
|
87
|
+
return (field == null ? void 0 : field.label) || (field == null ? void 0 : field.fieldName) || item.value;
|
|
88
|
+
}).filter(Boolean);
|
|
89
|
+
},
|
|
90
|
+
set(val) {
|
|
91
|
+
if (Array.isArray(props.modelValue)) {
|
|
92
|
+
const newModelValue = props.modelValue.filter((item) => {
|
|
93
|
+
const itemLabel = item.label || (() => {
|
|
94
|
+
const field = [
|
|
95
|
+
...availableFields.value,
|
|
96
|
+
...hiddenFieldsData.value
|
|
97
|
+
].find((f) => f.id === item.value);
|
|
98
|
+
return (field == null ? void 0 : field.label) || (field == null ? void 0 : field.fieldName) || item.value;
|
|
99
|
+
})();
|
|
100
|
+
return val.includes(itemLabel);
|
|
101
|
+
});
|
|
102
|
+
emit("update:modelValue", newModelValue);
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
});
|
|
106
|
+
const unifiedInputValue = vue.computed({
|
|
107
|
+
get() {
|
|
108
|
+
return props.multiple ? tags.value : displayText.value;
|
|
109
|
+
},
|
|
110
|
+
set(val) {
|
|
111
|
+
if (props.multiple && Array.isArray(val)) {
|
|
112
|
+
tags.value = val;
|
|
113
|
+
} else if (!props.multiple && typeof val === "string") {
|
|
114
|
+
emit("update:modelValue", val);
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
});
|
|
118
|
+
const handleConfirm = (selected) => {
|
|
119
|
+
let result = null;
|
|
120
|
+
if (selected.type === "field") {
|
|
121
|
+
const field = [...availableFields.value, ...hiddenFieldsData.value].find(
|
|
122
|
+
(f) => f.id === selected.value
|
|
123
|
+
);
|
|
124
|
+
result = {
|
|
125
|
+
label: `\${${(field == null ? void 0 : field.label) || (field == null ? void 0 : field.fieldName) || selected.value}}`,
|
|
126
|
+
type: "field",
|
|
127
|
+
value: selected.value
|
|
128
|
+
};
|
|
129
|
+
} else if (selected.type === "userInfo") {
|
|
130
|
+
result = {
|
|
131
|
+
label: `\${用户信息: ${getUserInfoLabel(selected.value)}}`,
|
|
132
|
+
type: "userInfo",
|
|
133
|
+
value: selected.value
|
|
134
|
+
};
|
|
135
|
+
} else if (selected.type === "urlParam") {
|
|
136
|
+
result = {
|
|
137
|
+
label: `\${路由参数: ${selected.value}}`,
|
|
138
|
+
type: "urlParam",
|
|
139
|
+
value: selected.value
|
|
140
|
+
};
|
|
141
|
+
}
|
|
142
|
+
if (!result) return;
|
|
143
|
+
if (props.multiple) {
|
|
144
|
+
const currentValue = Array.isArray(props.modelValue) ? props.modelValue : [];
|
|
145
|
+
const exists = currentValue.some((item) => item.value === result.value);
|
|
146
|
+
if (!exists) {
|
|
147
|
+
emit("update:modelValue", [...currentValue, result]);
|
|
148
|
+
}
|
|
149
|
+
} else {
|
|
150
|
+
emit("update:modelValue", result);
|
|
151
|
+
}
|
|
152
|
+
};
|
|
153
|
+
const getUserInfoLabel = (key) => {
|
|
154
|
+
const labels = {
|
|
155
|
+
userCode: "用户编号",
|
|
156
|
+
userName: "用户名称",
|
|
157
|
+
roleCode: "角色编号",
|
|
158
|
+
roleName: "角色名称",
|
|
159
|
+
orgCode: "机构编号",
|
|
160
|
+
orgName: "机构名称"
|
|
161
|
+
};
|
|
162
|
+
return labels[key] || key;
|
|
163
|
+
};
|
|
164
|
+
return (_ctx, _cache) => {
|
|
165
|
+
return vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent(inputComponent.value), {
|
|
166
|
+
modelValue: unifiedInputValue.value,
|
|
167
|
+
"onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => unifiedInputValue.value = $event),
|
|
168
|
+
placeholder: __props.placeholder,
|
|
169
|
+
disabled: __props.disabled,
|
|
170
|
+
readonly: __props.readOnly,
|
|
171
|
+
trigger: __props.multiple ? "Space" : void 0,
|
|
172
|
+
"collapse-tags": "",
|
|
173
|
+
"collapse-tags-tooltip": "",
|
|
174
|
+
"max-collapse-tags": 1,
|
|
175
|
+
class: "value-selector-input",
|
|
176
|
+
size: __props.size
|
|
177
|
+
}, {
|
|
178
|
+
suffix: vue.withCtx(() => [
|
|
179
|
+
vue.createVNode(ValueSelectorPopover.default, {
|
|
180
|
+
"available-fields": availableFields.value,
|
|
181
|
+
disabled: __props.disabled,
|
|
182
|
+
onConfirm: handleConfirm
|
|
183
|
+
}, null, 8, ["available-fields", "disabled"])
|
|
184
|
+
]),
|
|
185
|
+
_: 1
|
|
186
|
+
}, 8, ["modelValue", "placeholder", "disabled", "readonly", "trigger", "size"]);
|
|
187
|
+
};
|
|
188
|
+
}
|
|
189
|
+
};
|
|
190
|
+
const ValueSelector = /* @__PURE__ */ _pluginVue_exportHelper.default(_sfc_main, [["__scopeId", "data-v-e5b87efa"]]);
|
|
191
|
+
exports.default = ValueSelector;
|
|
@@ -18,7 +18,7 @@ const index$2 = require("../../../../node_modules/@element-plus/icons-vue/dist/i
|
|
|
18
18
|
const common = require("../../packages/utils/common.js");
|
|
19
19
|
const index$5 = require("../../packages/form/aside/index.js");
|
|
20
20
|
const index$6 = require("../../packages/table/aside/index.js");
|
|
21
|
-
const ValueSelector = require("../../components/ValueSelector.
|
|
21
|
+
const ValueSelector = require("../../components/ValueSelector.vue.js");
|
|
22
22
|
;/* empty css */
|
|
23
23
|
const _pluginVue_exportHelper = require("../../../../_virtual/_plugin-vue_export-helper.js");
|
|
24
24
|
const index = require("../../../../node_modules/element-plus/es/components/dialog/index.js");
|
|
@@ -16,7 +16,7 @@ require("../../../../node_modules/element-plus/theme-chalk/el-tooltip.css.js");
|
|
|
16
16
|
require("../../../../node_modules/element-plus/theme-chalk/el-date-picker.css.js");
|
|
17
17
|
const vue = require("vue");
|
|
18
18
|
const index = require("../../../../node_modules/@vueuse/core/dist/index.js");
|
|
19
|
-
const ValueSelector = require("../../components/ValueSelector.
|
|
19
|
+
const ValueSelector = require("../../components/ValueSelector.vue.js");
|
|
20
20
|
const index$1 = require("../../api/index.js");
|
|
21
21
|
const common = require("../utils/common.js");
|
|
22
22
|
const datasource = require("../utils/datasource.js");
|
|
@@ -32,7 +32,7 @@ require("../../../../node_modules/element-plus/theme-chalk/el-date-picker.css.js
|
|
|
32
32
|
;/* empty css */
|
|
33
33
|
;/* empty css */
|
|
34
34
|
const _pluginVue_exportHelper = require("../../../../_virtual/_plugin-vue_export-helper.js");
|
|
35
|
-
;/* empty css
|
|
35
|
+
;/* empty css */
|
|
36
36
|
require("../../axios/config.js");
|
|
37
37
|
require("../../../../_virtual/FileSaver.min.js");
|
|
38
38
|
require("../../../../_virtual/index.js");
|
|
@@ -81,7 +81,7 @@ require("../../../../node_modules/element-plus/theme-chalk/el-date-picker.css.js
|
|
|
81
81
|
require("../../../../node_modules/element-plus/theme-chalk/el-tab-pane.css.js");
|
|
82
82
|
;/* empty css */
|
|
83
83
|
;/* empty css */
|
|
84
|
-
;/* empty css
|
|
84
|
+
;/* empty css */
|
|
85
85
|
require("../../axios/config.js");
|
|
86
86
|
;/* empty css */
|
|
87
87
|
;/* empty css */
|
|
@@ -13,7 +13,7 @@ require("../../../../../node_modules/element-plus/es/index.js");
|
|
|
13
13
|
const vue = require("vue");
|
|
14
14
|
const common = require("../../utils/common.js");
|
|
15
15
|
const eventBus = require("../../utils/eventBus.js");
|
|
16
|
-
const ValueSelector = require("../../../components/ValueSelector.
|
|
16
|
+
const ValueSelector = require("../../../components/ValueSelector.vue.js");
|
|
17
17
|
const index = require("../../../../../node_modules/element-plus/es/components/collapse/index.js");
|
|
18
18
|
const index$1 = require("../../../../../node_modules/element-plus/es/components/form/index.js");
|
|
19
19
|
const index$2 = require("../../../../../node_modules/element-plus/es/components/input/index.js");
|
|
@@ -15,7 +15,7 @@ const vue = require("vue");
|
|
|
15
15
|
const common = require("../../utils/common.js");
|
|
16
16
|
const TemplateSelector = require("../../../components/TemplateSelector.vue.js");
|
|
17
17
|
const eventBus = require("../../utils/eventBus.js");
|
|
18
|
-
const ValueSelector = require("../../../components/ValueSelector.
|
|
18
|
+
const ValueSelector = require("../../../components/ValueSelector.vue.js");
|
|
19
19
|
const index = require("../../../../../node_modules/element-plus/es/components/collapse/index.js");
|
|
20
20
|
const index$1 = require("../../../../../node_modules/element-plus/es/components/form/index.js");
|
|
21
21
|
const index$2 = require("../../../../../node_modules/element-plus/es/components/input/index.js");
|
|
@@ -16,7 +16,7 @@ require("../../../../node_modules/element-plus/es/index.js");
|
|
|
16
16
|
const vue = require("vue");
|
|
17
17
|
const index$6 = require("../../../../node_modules/@element-plus/icons-vue/dist/index.js");
|
|
18
18
|
const common = require("../utils/common.js");
|
|
19
|
-
const ValueSelector = require("../../components/ValueSelector.
|
|
19
|
+
const ValueSelector = require("../../components/ValueSelector.vue.js");
|
|
20
20
|
const index = require("../../api/index.js");
|
|
21
21
|
;/* empty css */
|
|
22
22
|
const _pluginVue_exportHelper = require("../../../../_virtual/_plugin-vue_export-helper.js");
|
package/lib/designer.css
CHANGED
|
@@ -5669,27 +5669,27 @@ body,
|
|
|
5669
5669
|
width: 80px;
|
|
5670
5670
|
font-size: var(--el-font-size-extra-small);
|
|
5671
5671
|
}
|
|
5672
|
-
.fec-form[data-v-
|
|
5672
|
+
.fec-form[data-v-c9bc9779] {
|
|
5673
5673
|
height: 100%;
|
|
5674
5674
|
}
|
|
5675
|
-
[data-v-
|
|
5675
|
+
[data-v-c9bc9779] .vgl-item {
|
|
5676
5676
|
transition: none;
|
|
5677
5677
|
}
|
|
5678
|
-
[data-v-
|
|
5678
|
+
[data-v-c9bc9779] .vgl-item > .el-form-item {
|
|
5679
5679
|
width: 100%;
|
|
5680
5680
|
padding: 12px 8px 0 8px;
|
|
5681
5681
|
height: calc(100% - 15px);
|
|
5682
5682
|
display: flex;
|
|
5683
5683
|
}
|
|
5684
|
-
[data-v-
|
|
5684
|
+
[data-v-c9bc9779] .vgl-item > .el-form-item.el-form-item--label-top {
|
|
5685
5685
|
flex-direction: column;
|
|
5686
5686
|
}
|
|
5687
|
-
[data-v-
|
|
5687
|
+
[data-v-c9bc9779] .vgl-item > .el-form-item .el-form-item__label {
|
|
5688
5688
|
line-height: 20px;
|
|
5689
5689
|
display: flex;
|
|
5690
5690
|
align-items: center;
|
|
5691
5691
|
}
|
|
5692
|
-
[data-v-
|
|
5692
|
+
[data-v-c9bc9779] .vgl-item > .el-container {
|
|
5693
5693
|
height: auto !important;
|
|
5694
5694
|
}.cell-content .cell-text[data-v-3e5372d4] {
|
|
5695
5695
|
display: inline-block;
|
|
@@ -148,7 +148,6 @@ const _sfc_main = /* @__PURE__ */ Object.assign({
|
|
|
148
148
|
"form",
|
|
149
149
|
props.initOption
|
|
150
150
|
);
|
|
151
|
-
emit("loaded", option);
|
|
152
151
|
rowHeight.value = option.labelPosition == "top" ? 1.5 : 1;
|
|
153
152
|
localConfig.value = option;
|
|
154
153
|
if (props.initFormMode) {
|
|
@@ -179,6 +178,7 @@ const _sfc_main = /* @__PURE__ */ Object.assign({
|
|
|
179
178
|
await pageEvents.executeEvent("onCreated");
|
|
180
179
|
}
|
|
181
180
|
}
|
|
181
|
+
emit("loaded", option);
|
|
182
182
|
} catch (error) {
|
|
183
183
|
console.error("加载配置失败:", error);
|
|
184
184
|
index.ElMessage.error("加载配置失败");
|
|
@@ -1029,5 +1029,5 @@ const _sfc_main = /* @__PURE__ */ Object.assign({
|
|
|
1029
1029
|
};
|
|
1030
1030
|
}
|
|
1031
1031
|
});
|
|
1032
|
-
const _Form = /* @__PURE__ */ _pluginVue_exportHelper.default(_sfc_main, [["__scopeId", "data-v-
|
|
1032
|
+
const _Form = /* @__PURE__ */ _pluginVue_exportHelper.default(_sfc_main, [["__scopeId", "data-v-c9bc9779"]]);
|
|
1033
1033
|
exports.default = _Form;
|