rb-document-form-constructor 0.1.2 → 0.1.6
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/rb-document-form-constructor.esm.js +1155 -434
- package/dist/rb-document-form-constructor.min.js +2 -3
- package/dist/rb-document-form-constructor.ssr.js +1107 -424
- package/dist/scss/components/_field-rule-form-modal.scss +27 -0
- package/dist/scss/components.scss +1 -0
- package/package.json +6 -4
- package/src/assets/fontello/README.txt +75 -0
- package/src/components/DocForm.vue +50 -19
- package/src/components/DocTemplateConstructor.vue +25 -20
- package/src/components/DocTemplateFacetList.vue +6 -6
- package/src/components/DocTemplateFieldSidebar.vue +88 -9
- package/src/components/FieldRuleFormModal.vue +260 -0
|
@@ -1,283 +1,84 @@
|
|
|
1
|
-
|
|
2
|
-
return JSON.parse(JSON.stringify(data));
|
|
3
|
-
};
|
|
4
|
-
|
|
5
|
-
let __assign = function () {
|
|
6
|
-
__assign = Object.assign || function __assign(t) {
|
|
7
|
-
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
8
|
-
s = arguments[i];
|
|
9
|
-
|
|
10
|
-
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
return t;
|
|
14
|
-
};
|
|
1
|
+
import crypto from 'crypto';
|
|
15
2
|
|
|
16
|
-
return __assign.apply(this, arguments);
|
|
17
|
-
};
|
|
18
|
-
|
|
19
|
-
let fcInputs = {
|
|
20
|
-
text: {
|
|
21
|
-
text: 'Текст',
|
|
22
|
-
name: 'text',
|
|
23
|
-
type: 'b-form-input',
|
|
24
|
-
props: {
|
|
25
|
-
placeholder: {
|
|
26
|
-
type: 'string',
|
|
27
|
-
default: null,
|
|
28
|
-
label: 'Надпись внутри',
|
|
29
|
-
visible: true
|
|
30
|
-
},
|
|
31
|
-
type: {
|
|
32
|
-
type: 'string',
|
|
33
|
-
default: 'text',
|
|
34
|
-
label: 'Тип данных',
|
|
35
|
-
visible: false
|
|
36
|
-
}
|
|
37
|
-
},
|
|
38
|
-
propsData: {},
|
|
39
|
-
defaultValue: null
|
|
40
|
-
},
|
|
41
|
-
number: {
|
|
42
|
-
text: 'Число',
|
|
43
|
-
name: 'number',
|
|
44
|
-
type: 'b-form-input',
|
|
45
|
-
props: {
|
|
46
|
-
placeholder: {
|
|
47
|
-
type: 'string',
|
|
48
|
-
default: null,
|
|
49
|
-
label: 'Надпись внутри',
|
|
50
|
-
visible: true
|
|
51
|
-
},
|
|
52
|
-
type: {
|
|
53
|
-
type: 'string',
|
|
54
|
-
default: 'number',
|
|
55
|
-
label: 'Тип данных',
|
|
56
|
-
visible: false
|
|
57
|
-
}
|
|
58
|
-
},
|
|
59
|
-
propsData: {},
|
|
60
|
-
defaultValue: null
|
|
61
|
-
},
|
|
62
|
-
memo: {
|
|
63
|
-
text: 'Большой текст',
|
|
64
|
-
name: 'memo',
|
|
65
|
-
type: 'b-form-textarea',
|
|
66
|
-
props: {
|
|
67
|
-
placeholder: {
|
|
68
|
-
type: 'string',
|
|
69
|
-
default: null,
|
|
70
|
-
label: 'Надпись внутри',
|
|
71
|
-
visible: true
|
|
72
|
-
}
|
|
73
|
-
},
|
|
74
|
-
propsData: {},
|
|
75
|
-
defaultValue: null
|
|
76
|
-
},
|
|
77
|
-
date: {
|
|
78
|
-
text: 'Дата',
|
|
79
|
-
name: 'date',
|
|
80
|
-
type: 'rb-date-picker-input',
|
|
81
|
-
props: {},
|
|
82
|
-
propsData: {},
|
|
83
|
-
defaultValue: null
|
|
84
|
-
},
|
|
85
|
-
phone: {
|
|
86
|
-
text: 'Телефон',
|
|
87
|
-
name: 'phone',
|
|
88
|
-
type: 'rb-phone-input',
|
|
89
|
-
props: {
|
|
90
|
-
placeholder: {
|
|
91
|
-
type: 'string',
|
|
92
|
-
default: 'Телефон',
|
|
93
|
-
label: 'Надпись внутри',
|
|
94
|
-
visible: true
|
|
95
|
-
}
|
|
96
|
-
},
|
|
97
|
-
propsData: {},
|
|
98
|
-
defaultValue: null
|
|
99
|
-
}
|
|
100
|
-
};
|
|
101
|
-
let fcPrimitiveInputs = {
|
|
102
|
-
text: [__clone(fcInputs.text), __clone(fcInputs.number), __clone(fcInputs.memo), __clone(fcInputs.phone)],
|
|
103
|
-
memo: [__clone(fcInputs.memo), __clone(fcInputs.text)],
|
|
104
|
-
number: [__clone(fcInputs.text), __clone(fcInputs.number)],
|
|
105
|
-
date: [__clone(fcInputs.date)]
|
|
106
|
-
};
|
|
107
|
-
let fcDictInputs = [];
|
|
108
|
-
let fcRefInputs = {};
|
|
109
|
-
let fcRefInputConfigs = {};
|
|
110
|
-
let baseConfig = {
|
|
111
|
-
inputs: __clone(fcInputs),
|
|
112
|
-
primitiveInputs: __clone(fcPrimitiveInputs),
|
|
113
|
-
dictInputs: __clone(fcDictInputs),
|
|
114
|
-
refInputs: __clone(fcRefInputs),
|
|
115
|
-
refInputConfigs: __clone(fcRefInputConfigs),
|
|
116
|
-
icons: {
|
|
117
|
-
iconExpandFacet: 'icon-chevron-up',
|
|
118
|
-
iconCollapseFacet: 'icon-chevron-down',
|
|
119
|
-
iconCloseFieldSidebar: 'icon-chevron-right',
|
|
120
|
-
iconOpenFieldSidebar: 'icon-chevron-left',
|
|
121
|
-
iconAdd: 'icon-add',
|
|
122
|
-
iconEdit: 'icon-edit',
|
|
123
|
-
iconDelete: 'icon-delete',
|
|
124
|
-
iconDrag: 'icon-reorder'
|
|
125
|
-
}
|
|
126
|
-
};
|
|
127
3
|
const UtFormConfig = {
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
this.config = __clone(baseConfig);
|
|
132
|
-
|
|
133
|
-
if (formConfig) {
|
|
134
|
-
if (formConfig.inputs) {
|
|
135
|
-
this.mergeInputsInMap(this.config.inputs, formConfig.inputs);
|
|
136
|
-
}
|
|
137
|
-
|
|
138
|
-
if (formConfig.primitiveInputs) {
|
|
139
|
-
this.mergeInputInMapOfArrays(this.config.primitiveInputs, formConfig.primitiveInputs);
|
|
140
|
-
}
|
|
141
|
-
|
|
142
|
-
if (formConfig.dictInputs) {
|
|
143
|
-
this.mergeInputsInArray(this.config.dictInputs, formConfig.dictInputs);
|
|
144
|
-
}
|
|
145
|
-
|
|
146
|
-
if (formConfig.refInputs) {
|
|
147
|
-
this.mergeInputInMapOfArrays(this.config.refInputs, formConfig.refInputs);
|
|
148
|
-
}
|
|
149
|
-
|
|
150
|
-
if (formConfig.refInputConfigs) {
|
|
151
|
-
this.config.refInputConfigs = formConfig.refInputConfigs;
|
|
152
|
-
}
|
|
153
|
-
|
|
154
|
-
if (formConfig.icons) {
|
|
155
|
-
this.config.icons = __assign(this.config.icons, formConfig.icons);
|
|
156
|
-
}
|
|
4
|
+
findField(fieldName, formConfig) {
|
|
5
|
+
if (!formConfig || !formConfig.sections) {
|
|
6
|
+
return null;
|
|
157
7
|
}
|
|
158
|
-
},
|
|
159
8
|
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
9
|
+
let found = null;
|
|
10
|
+
formConfig.sections.every(r => {
|
|
11
|
+
if (r.columns) {
|
|
12
|
+
r.columns.every(c => {
|
|
13
|
+
c.fields.forEach(f => {
|
|
14
|
+
if (f.name === fieldName) {
|
|
15
|
+
found = f;
|
|
16
|
+
}
|
|
17
|
+
});
|
|
163
18
|
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
19
|
+
if (found) {
|
|
20
|
+
return false;
|
|
21
|
+
}
|
|
22
|
+
});
|
|
168
23
|
}
|
|
169
|
-
}
|
|
170
|
-
},
|
|
171
|
-
|
|
172
|
-
mergeInputsInMap(inputs, formConfigInputs) {
|
|
173
|
-
for (let name in formConfigInputs) {
|
|
174
|
-
inputs[name] = __assign(inputs[name] ? inputs[name] : {}, formConfigInputs[name] ? formConfigInputs[name] : {});
|
|
175
|
-
}
|
|
176
|
-
},
|
|
177
24
|
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
let index = inputs.findIndex(item => item.name === input.name);
|
|
181
|
-
|
|
182
|
-
if (index >= 0) {
|
|
183
|
-
inputs[index] = input;
|
|
184
|
-
} else {
|
|
185
|
-
inputs.push(input);
|
|
25
|
+
if (found) {
|
|
26
|
+
return false;
|
|
186
27
|
}
|
|
187
28
|
});
|
|
29
|
+
return found;
|
|
188
30
|
},
|
|
189
31
|
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
getAllDictInputs() {
|
|
195
|
-
return this.config.dictInputs;
|
|
196
|
-
},
|
|
197
|
-
|
|
198
|
-
getInputTypes(field) {
|
|
199
|
-
if (!field) {
|
|
200
|
-
return [];
|
|
201
|
-
}
|
|
202
|
-
|
|
203
|
-
if (field.dict) {
|
|
204
|
-
return this.config.dictInputs;
|
|
205
|
-
}
|
|
206
|
-
|
|
207
|
-
if (field.ref) {
|
|
208
|
-
return this.config.refInputs[field.ref];
|
|
209
|
-
}
|
|
210
|
-
|
|
211
|
-
return this.config.primitiveInputs[field.type];
|
|
212
|
-
},
|
|
213
|
-
|
|
214
|
-
getDefaultInput(field) {
|
|
215
|
-
let input = null;
|
|
216
|
-
|
|
217
|
-
if (field.ref && this.config.refInputs[field.ref]) {
|
|
218
|
-
input = __clone(this.config.refInputs[field.ref][0]);
|
|
219
|
-
this.applyDefaultProps(input);
|
|
220
|
-
|
|
221
|
-
if (this.config.refInputConfigs[field.ref] && this.config.refInputConfigs[field.ref][input.name]) {
|
|
222
|
-
this.applyRefProps(input, this.config.refInputConfigs[field.ref][input.name]);
|
|
223
|
-
}
|
|
224
|
-
} else if (field.dict) {
|
|
225
|
-
input = __clone(this.config.dictInputs[0]);
|
|
226
|
-
input.props.dict.default = field.ref;
|
|
227
|
-
this.applyDefaultProps(input);
|
|
228
|
-
} else {
|
|
229
|
-
input = __clone(this.config.primitiveInputs[field.type][0]);
|
|
230
|
-
this.applyDefaultProps(input);
|
|
32
|
+
findRule(ruleId, formConfig) {
|
|
33
|
+
if (!formConfig || !formConfig.sections) {
|
|
34
|
+
return null;
|
|
231
35
|
}
|
|
232
36
|
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
37
|
+
let found = null;
|
|
38
|
+
formConfig.sections.every(s => {
|
|
39
|
+
if (s.columns) {
|
|
40
|
+
s.columns.every(c => {
|
|
41
|
+
c.fields.every(f => {
|
|
42
|
+
if (f.rules) {
|
|
43
|
+
f.rules.forEach(r => {
|
|
44
|
+
if (r.id === ruleId) {
|
|
45
|
+
found = r;
|
|
46
|
+
}
|
|
47
|
+
});
|
|
48
|
+
}
|
|
238
49
|
|
|
239
|
-
|
|
240
|
-
|
|
50
|
+
if (found) {
|
|
51
|
+
return false;
|
|
52
|
+
}
|
|
53
|
+
});
|
|
241
54
|
|
|
242
|
-
|
|
243
|
-
|
|
55
|
+
if (found) {
|
|
56
|
+
return false;
|
|
57
|
+
}
|
|
58
|
+
});
|
|
244
59
|
}
|
|
245
|
-
} else if (field.dict) {
|
|
246
|
-
input.props.dict.default = field.ref;
|
|
247
|
-
this.applyDefaultProps(input);
|
|
248
|
-
} else {
|
|
249
|
-
this.applyDefaultProps(input);
|
|
250
|
-
}
|
|
251
|
-
|
|
252
|
-
return input;
|
|
253
|
-
},
|
|
254
60
|
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
input.propsData[propName] = input.props[propName].default;
|
|
258
|
-
}
|
|
259
|
-
},
|
|
260
|
-
|
|
261
|
-
applyRefProps(input, refConfig) {
|
|
262
|
-
if (refConfig !== null && refConfig !== void 0 && refConfig.propsData) {
|
|
263
|
-
for (let propName in refConfig.propsData) {
|
|
264
|
-
input.propsData[propName] = refConfig.propsData[propName];
|
|
61
|
+
if (found) {
|
|
62
|
+
return false;
|
|
265
63
|
}
|
|
266
|
-
}
|
|
64
|
+
});
|
|
65
|
+
return found;
|
|
267
66
|
},
|
|
268
67
|
|
|
269
|
-
|
|
270
|
-
let
|
|
271
|
-
formConfig.sections.
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
if (
|
|
275
|
-
|
|
68
|
+
getFields(formConfig) {
|
|
69
|
+
let fields = [];
|
|
70
|
+
formConfig.sections.forEach(s => {
|
|
71
|
+
if (s.columns) {
|
|
72
|
+
s.columns.forEach(c => {
|
|
73
|
+
if (c.fields) {
|
|
74
|
+
c.fields.forEach(f => {
|
|
75
|
+
fields.push(f);
|
|
76
|
+
});
|
|
276
77
|
}
|
|
277
78
|
});
|
|
278
|
-
}
|
|
79
|
+
}
|
|
279
80
|
});
|
|
280
|
-
return
|
|
81
|
+
return fields;
|
|
281
82
|
}
|
|
282
83
|
|
|
283
84
|
};
|
|
@@ -301,7 +102,7 @@ const UtFormConfig = {
|
|
|
301
102
|
//
|
|
302
103
|
//
|
|
303
104
|
//
|
|
304
|
-
var script$
|
|
105
|
+
var script$5 = {
|
|
305
106
|
name: 'DocTemplateSectionModal',
|
|
306
107
|
props: {
|
|
307
108
|
section: Object,
|
|
@@ -435,10 +236,10 @@ function normalizeComponent(template, style, script, scopeId, isFunctionalTempla
|
|
|
435
236
|
}
|
|
436
237
|
|
|
437
238
|
/* script */
|
|
438
|
-
const __vue_script__$
|
|
239
|
+
const __vue_script__$5 = script$5;
|
|
439
240
|
/* template */
|
|
440
241
|
|
|
441
|
-
var __vue_render__$
|
|
242
|
+
var __vue_render__$5 = function () {
|
|
442
243
|
var _vm = this;
|
|
443
244
|
|
|
444
245
|
var _h = _vm.$createElement;
|
|
@@ -486,19 +287,19 @@ var __vue_render__$4 = function () {
|
|
|
486
287
|
})], 1)], 1)], 1)], 1)], 1);
|
|
487
288
|
};
|
|
488
289
|
|
|
489
|
-
var __vue_staticRenderFns__$
|
|
290
|
+
var __vue_staticRenderFns__$5 = [];
|
|
490
291
|
/* style */
|
|
491
292
|
|
|
492
|
-
const __vue_inject_styles__$
|
|
293
|
+
const __vue_inject_styles__$5 = undefined;
|
|
493
294
|
/* scoped */
|
|
494
295
|
|
|
495
|
-
const __vue_scope_id__$
|
|
296
|
+
const __vue_scope_id__$5 = undefined;
|
|
496
297
|
/* module identifier */
|
|
497
298
|
|
|
498
|
-
const __vue_module_identifier__$
|
|
299
|
+
const __vue_module_identifier__$5 = undefined;
|
|
499
300
|
/* functional template */
|
|
500
301
|
|
|
501
|
-
const __vue_is_functional_template__$
|
|
302
|
+
const __vue_is_functional_template__$5 = false;
|
|
502
303
|
/* style inject */
|
|
503
304
|
|
|
504
305
|
/* style inject SSR */
|
|
@@ -506,9 +307,9 @@ const __vue_is_functional_template__$4 = false;
|
|
|
506
307
|
/* style inject shadow dom */
|
|
507
308
|
|
|
508
309
|
const __vue_component__$6 = /*#__PURE__*/normalizeComponent({
|
|
509
|
-
render: __vue_render__$
|
|
510
|
-
staticRenderFns: __vue_staticRenderFns__$
|
|
511
|
-
}, __vue_inject_styles__$
|
|
310
|
+
render: __vue_render__$5,
|
|
311
|
+
staticRenderFns: __vue_staticRenderFns__$5
|
|
312
|
+
}, __vue_inject_styles__$5, __vue_script__$5, __vue_scope_id__$5, __vue_is_functional_template__$5, __vue_module_identifier__$5, false, undefined, undefined, undefined);
|
|
512
313
|
|
|
513
314
|
var DocTemplateSectionModal = __vue_component__$6;
|
|
514
315
|
|
|
@@ -5900,18 +5701,321 @@ if (typeof window !== "undefined" && "Vue" in window) {
|
|
|
5900
5701
|
|
|
5901
5702
|
});
|
|
5902
5703
|
|
|
5903
|
-
|
|
5904
|
-
|
|
5905
|
-
|
|
5906
|
-
|
|
5907
|
-
|
|
5908
|
-
|
|
5909
|
-
|
|
5910
|
-
|
|
5911
|
-
|
|
5912
|
-
|
|
5913
|
-
}
|
|
5914
|
-
|
|
5704
|
+
let __clone = function (data) {
|
|
5705
|
+
return JSON.parse(JSON.stringify(data));
|
|
5706
|
+
};
|
|
5707
|
+
|
|
5708
|
+
let __assign = function () {
|
|
5709
|
+
__assign = Object.assign || function __assign(t) {
|
|
5710
|
+
for (let s, i = 1, n = arguments.length; i < n; i++) {
|
|
5711
|
+
s = arguments[i];
|
|
5712
|
+
|
|
5713
|
+
for (let p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
|
|
5714
|
+
}
|
|
5715
|
+
|
|
5716
|
+
return t;
|
|
5717
|
+
};
|
|
5718
|
+
|
|
5719
|
+
return __assign.apply(this, arguments);
|
|
5720
|
+
};
|
|
5721
|
+
|
|
5722
|
+
let __mergeInputInMapOfArrays = function (inputs, formConfigInputs) {
|
|
5723
|
+
for (let dataType in formConfigInputs) {
|
|
5724
|
+
let foundInputs = inputs[dataType];
|
|
5725
|
+
|
|
5726
|
+
if (foundInputs) {
|
|
5727
|
+
__mergeInputsInArray(foundInputs, formConfigInputs[dataType]);
|
|
5728
|
+
} else {
|
|
5729
|
+
inputs[dataType] = formConfigInputs[dataType];
|
|
5730
|
+
}
|
|
5731
|
+
}
|
|
5732
|
+
};
|
|
5733
|
+
|
|
5734
|
+
let __mergeInputsInMap = function (inputs, formConfigInputs) {
|
|
5735
|
+
for (let name in formConfigInputs) {
|
|
5736
|
+
inputs[name] = __assign(inputs[name] ? inputs[name] : {}, formConfigInputs[name] ? formConfigInputs[name] : {});
|
|
5737
|
+
}
|
|
5738
|
+
};
|
|
5739
|
+
|
|
5740
|
+
let __mergeInputsInArray = function (inputs, formConfigInputs) {
|
|
5741
|
+
formConfigInputs.forEach(input => {
|
|
5742
|
+
let index = inputs.findIndex(item => item.name === input.name);
|
|
5743
|
+
|
|
5744
|
+
if (index >= 0) {
|
|
5745
|
+
inputs[index] = input;
|
|
5746
|
+
} else {
|
|
5747
|
+
inputs.push(input);
|
|
5748
|
+
}
|
|
5749
|
+
});
|
|
5750
|
+
};
|
|
5751
|
+
|
|
5752
|
+
let __applyDefaultProps = function (input) {
|
|
5753
|
+
for (let propName in input.props) {
|
|
5754
|
+
input.propsData[propName] = input.props[propName].default;
|
|
5755
|
+
}
|
|
5756
|
+
};
|
|
5757
|
+
|
|
5758
|
+
let __applyRefProps = function (input, refConfig) {
|
|
5759
|
+
if (refConfig !== null && refConfig !== void 0 && refConfig.propsData) {
|
|
5760
|
+
for (let propName in refConfig.propsData) {
|
|
5761
|
+
input.propsData[propName] = refConfig.propsData[propName];
|
|
5762
|
+
}
|
|
5763
|
+
}
|
|
5764
|
+
};
|
|
5765
|
+
|
|
5766
|
+
let fcInputs = {
|
|
5767
|
+
text: {
|
|
5768
|
+
text: 'Текст',
|
|
5769
|
+
name: 'text',
|
|
5770
|
+
type: 'b-form-input',
|
|
5771
|
+
props: {
|
|
5772
|
+
placeholder: {
|
|
5773
|
+
type: 'string',
|
|
5774
|
+
default: null,
|
|
5775
|
+
label: 'Надпись внутри',
|
|
5776
|
+
visible: true
|
|
5777
|
+
},
|
|
5778
|
+
type: {
|
|
5779
|
+
type: 'string',
|
|
5780
|
+
default: 'text',
|
|
5781
|
+
label: 'Тип данных',
|
|
5782
|
+
visible: false
|
|
5783
|
+
}
|
|
5784
|
+
},
|
|
5785
|
+
propsData: {},
|
|
5786
|
+
defaultValue: null
|
|
5787
|
+
},
|
|
5788
|
+
number: {
|
|
5789
|
+
text: 'Число',
|
|
5790
|
+
name: 'number',
|
|
5791
|
+
type: 'b-form-input',
|
|
5792
|
+
props: {
|
|
5793
|
+
placeholder: {
|
|
5794
|
+
type: 'string',
|
|
5795
|
+
default: null,
|
|
5796
|
+
label: 'Надпись внутри',
|
|
5797
|
+
visible: true
|
|
5798
|
+
},
|
|
5799
|
+
type: {
|
|
5800
|
+
type: 'string',
|
|
5801
|
+
default: 'number',
|
|
5802
|
+
label: 'Тип данных',
|
|
5803
|
+
visible: false
|
|
5804
|
+
}
|
|
5805
|
+
},
|
|
5806
|
+
propsData: {},
|
|
5807
|
+
defaultValue: null
|
|
5808
|
+
},
|
|
5809
|
+
memo: {
|
|
5810
|
+
text: 'Большой текст',
|
|
5811
|
+
name: 'memo',
|
|
5812
|
+
type: 'b-form-textarea',
|
|
5813
|
+
props: {
|
|
5814
|
+
placeholder: {
|
|
5815
|
+
type: 'string',
|
|
5816
|
+
default: null,
|
|
5817
|
+
label: 'Надпись внутри',
|
|
5818
|
+
visible: true
|
|
5819
|
+
}
|
|
5820
|
+
},
|
|
5821
|
+
propsData: {},
|
|
5822
|
+
defaultValue: null
|
|
5823
|
+
},
|
|
5824
|
+
date: {
|
|
5825
|
+
text: 'Дата',
|
|
5826
|
+
name: 'date',
|
|
5827
|
+
type: 'rb-date-picker-input',
|
|
5828
|
+
props: {},
|
|
5829
|
+
propsData: {},
|
|
5830
|
+
defaultValue: null
|
|
5831
|
+
},
|
|
5832
|
+
phone: {
|
|
5833
|
+
text: 'Телефон',
|
|
5834
|
+
name: 'phone',
|
|
5835
|
+
type: 'rb-phone-input',
|
|
5836
|
+
props: {
|
|
5837
|
+
placeholder: {
|
|
5838
|
+
type: 'string',
|
|
5839
|
+
default: 'Телефон',
|
|
5840
|
+
label: 'Надпись внутри',
|
|
5841
|
+
visible: true
|
|
5842
|
+
}
|
|
5843
|
+
},
|
|
5844
|
+
propsData: {},
|
|
5845
|
+
defaultValue: null
|
|
5846
|
+
}
|
|
5847
|
+
};
|
|
5848
|
+
let fcPrimitiveInputs = {
|
|
5849
|
+
text: [__clone(fcInputs.text), __clone(fcInputs.number), __clone(fcInputs.memo), __clone(fcInputs.phone)],
|
|
5850
|
+
memo: [__clone(fcInputs.memo), __clone(fcInputs.text)],
|
|
5851
|
+
number: [__clone(fcInputs.text), __clone(fcInputs.number)],
|
|
5852
|
+
date: [__clone(fcInputs.date)]
|
|
5853
|
+
};
|
|
5854
|
+
let fcDictInputs = [];
|
|
5855
|
+
let fcRefInputs = {};
|
|
5856
|
+
let fcRefInputConfigs = {};
|
|
5857
|
+
let baseConfig = {
|
|
5858
|
+
inputs: __clone(fcInputs),
|
|
5859
|
+
primitiveInputs: __clone(fcPrimitiveInputs),
|
|
5860
|
+
dictInputs: __clone(fcDictInputs),
|
|
5861
|
+
refInputs: __clone(fcRefInputs),
|
|
5862
|
+
refInputConfigs: __clone(fcRefInputConfigs),
|
|
5863
|
+
rules: [],
|
|
5864
|
+
icons: {
|
|
5865
|
+
iconExpandFacet: 'icon-chevron-up',
|
|
5866
|
+
iconCollapseFacet: 'icon-chevron-down',
|
|
5867
|
+
iconCloseFieldSidebar: 'icon-chevron-right',
|
|
5868
|
+
iconOpenFieldSidebar: 'icon-chevron-left',
|
|
5869
|
+
iconAdd: 'icon-add',
|
|
5870
|
+
iconEdit: 'icon-edit',
|
|
5871
|
+
iconDelete: 'icon-delete',
|
|
5872
|
+
iconDrag: 'icon-reorder'
|
|
5873
|
+
},
|
|
5874
|
+
ruleContext: {}
|
|
5875
|
+
};
|
|
5876
|
+
const UtFormConstructor = {
|
|
5877
|
+
config: {},
|
|
5878
|
+
|
|
5879
|
+
init(formConfig) {
|
|
5880
|
+
this.config = __clone(baseConfig);
|
|
5881
|
+
|
|
5882
|
+
if (formConfig) {
|
|
5883
|
+
if (formConfig.inputs) {
|
|
5884
|
+
__mergeInputsInMap(this.config.inputs, formConfig.inputs);
|
|
5885
|
+
}
|
|
5886
|
+
|
|
5887
|
+
if (formConfig.primitiveInputs) {
|
|
5888
|
+
__mergeInputInMapOfArrays(this.config.primitiveInputs, formConfig.primitiveInputs);
|
|
5889
|
+
}
|
|
5890
|
+
|
|
5891
|
+
if (formConfig.dictInputs) {
|
|
5892
|
+
__mergeInputsInArray(this.config.dictInputs, formConfig.dictInputs);
|
|
5893
|
+
}
|
|
5894
|
+
|
|
5895
|
+
if (formConfig.refInputs) {
|
|
5896
|
+
__mergeInputInMapOfArrays(this.config.refInputs, formConfig.refInputs);
|
|
5897
|
+
}
|
|
5898
|
+
|
|
5899
|
+
if (formConfig.refInputConfigs) {
|
|
5900
|
+
this.config.refInputConfigs = formConfig.refInputConfigs;
|
|
5901
|
+
}
|
|
5902
|
+
|
|
5903
|
+
if (formConfig.icons) {
|
|
5904
|
+
this.config.icons = __assign(this.config.icons, formConfig.icons);
|
|
5905
|
+
}
|
|
5906
|
+
|
|
5907
|
+
if (formConfig.rules) {
|
|
5908
|
+
this.config.rules = formConfig.rules;
|
|
5909
|
+
}
|
|
5910
|
+
|
|
5911
|
+
if (formConfig.ruleContext) {
|
|
5912
|
+
this.config.ruleContext = formConfig.ruleContext;
|
|
5913
|
+
}
|
|
5914
|
+
}
|
|
5915
|
+
},
|
|
5916
|
+
|
|
5917
|
+
getInputTypes(field) {
|
|
5918
|
+
if (!field) {
|
|
5919
|
+
return [];
|
|
5920
|
+
}
|
|
5921
|
+
|
|
5922
|
+
if (field.dict && !this.config.refInputs[field.ref]) {
|
|
5923
|
+
return this.config.dictInputs;
|
|
5924
|
+
}
|
|
5925
|
+
|
|
5926
|
+
if (field.ref) {
|
|
5927
|
+
return this.config.refInputs[field.ref];
|
|
5928
|
+
}
|
|
5929
|
+
|
|
5930
|
+
return this.config.primitiveInputs[field.type];
|
|
5931
|
+
},
|
|
5932
|
+
|
|
5933
|
+
getDefaultInput(field) {
|
|
5934
|
+
let input = null;
|
|
5935
|
+
|
|
5936
|
+
if (field.ref && this.config.refInputs[field.ref]) {
|
|
5937
|
+
input = __clone(this.config.refInputs[field.ref][0]);
|
|
5938
|
+
|
|
5939
|
+
__applyDefaultProps(input);
|
|
5940
|
+
|
|
5941
|
+
if (this.config.refInputConfigs[field.ref] && this.config.refInputConfigs[field.ref][input.name]) {
|
|
5942
|
+
__applyRefProps(input, this.config.refInputConfigs[field.ref][input.name]);
|
|
5943
|
+
}
|
|
5944
|
+
} else if (field.dict) {
|
|
5945
|
+
input = __clone(this.config.dictInputs[0]);
|
|
5946
|
+
input.props.dict.default = field.ref;
|
|
5947
|
+
|
|
5948
|
+
__applyDefaultProps(input);
|
|
5949
|
+
} else {
|
|
5950
|
+
input = __clone(this.config.primitiveInputs[field.type][0]);
|
|
5951
|
+
|
|
5952
|
+
__applyDefaultProps(input);
|
|
5953
|
+
}
|
|
5954
|
+
|
|
5955
|
+
return input;
|
|
5956
|
+
},
|
|
5957
|
+
|
|
5958
|
+
getInputTypeByName(name, field) {
|
|
5959
|
+
let input = JSON.parse(JSON.stringify(this.config.inputs[name]));
|
|
5960
|
+
|
|
5961
|
+
if (field.ref && this.config.refInputs[field.ref]) {
|
|
5962
|
+
__applyDefaultProps(input);
|
|
5963
|
+
|
|
5964
|
+
if (this.config.refInputConfigs[field.ref] && this.config.refInputConfigs[field.ref][input.name]) {
|
|
5965
|
+
__applyRefProps(input, this.config.refInputConfigs[field.ref][input.name]);
|
|
5966
|
+
}
|
|
5967
|
+
} else if (field.dict) {
|
|
5968
|
+
input.props.dict.default = field.ref;
|
|
5969
|
+
|
|
5970
|
+
__applyDefaultProps(input);
|
|
5971
|
+
} else {
|
|
5972
|
+
__applyDefaultProps(input);
|
|
5973
|
+
}
|
|
5974
|
+
|
|
5975
|
+
input.propsData['ref'] = field.name;
|
|
5976
|
+
return input;
|
|
5977
|
+
},
|
|
5978
|
+
|
|
5979
|
+
getAvailableFieldRules(field) {
|
|
5980
|
+
return this.config.rules.filter(rule => {
|
|
5981
|
+
return !rule.fields || rule.fields.length === 0 || rule.fields.indexOf(field.name) >= 0;
|
|
5982
|
+
});
|
|
5983
|
+
},
|
|
5984
|
+
|
|
5985
|
+
getRuleContext() {
|
|
5986
|
+
return this.config.ruleContext;
|
|
5987
|
+
},
|
|
5988
|
+
|
|
5989
|
+
runRule(context, script) {
|
|
5990
|
+
let appendScript = `
|
|
5991
|
+
var doc = this.form.doc;
|
|
5992
|
+
var form = this.form;
|
|
5993
|
+
var event = this.event;
|
|
5994
|
+
var eventName = this.eventName;
|
|
5995
|
+
|
|
5996
|
+
`;
|
|
5997
|
+
|
|
5998
|
+
let func = function (script) {
|
|
5999
|
+
return eval(script);
|
|
6000
|
+
};
|
|
6001
|
+
|
|
6002
|
+
func.call(context, appendScript + script);
|
|
6003
|
+
}
|
|
6004
|
+
|
|
6005
|
+
};
|
|
6006
|
+
|
|
6007
|
+
//
|
|
6008
|
+
var script$4 = {
|
|
6009
|
+
name: 'DocTemplateFacetList',
|
|
6010
|
+
components: {
|
|
6011
|
+
draggable: vuedraggable_umd
|
|
6012
|
+
},
|
|
6013
|
+
props: {
|
|
6014
|
+
facets: {
|
|
6015
|
+
type: Array,
|
|
6016
|
+
default: () => []
|
|
6017
|
+
}
|
|
6018
|
+
},
|
|
5915
6019
|
|
|
5916
6020
|
data() {
|
|
5917
6021
|
return {
|
|
@@ -5923,11 +6027,11 @@ var script$3 = {
|
|
|
5923
6027
|
|
|
5924
6028
|
computed: {
|
|
5925
6029
|
iconExpandFacet() {
|
|
5926
|
-
return
|
|
6030
|
+
return UtFormConstructor.config.icons.iconExpandFacet;
|
|
5927
6031
|
},
|
|
5928
6032
|
|
|
5929
6033
|
iconCollapseFacet() {
|
|
5930
|
-
return
|
|
6034
|
+
return UtFormConstructor.config.icons.iconCollapseFacet;
|
|
5931
6035
|
}
|
|
5932
6036
|
|
|
5933
6037
|
},
|
|
@@ -5944,7 +6048,7 @@ var script$3 = {
|
|
|
5944
6048
|
methods: {
|
|
5945
6049
|
onFieldCloned(cloneField) {
|
|
5946
6050
|
let field = JSON.parse(JSON.stringify(cloneField));
|
|
5947
|
-
field.input =
|
|
6051
|
+
field.input = UtFormConstructor.getDefaultInput(field);
|
|
5948
6052
|
return field;
|
|
5949
6053
|
},
|
|
5950
6054
|
|
|
@@ -5975,101 +6079,593 @@ var script$3 = {
|
|
|
5975
6079
|
});
|
|
5976
6080
|
this.innerFacets = facets;
|
|
5977
6081
|
},
|
|
5978
|
-
|
|
5979
|
-
handleFacetsProp() {
|
|
5980
|
-
let innerFacets = this.facets.map(f => ({ ...f,
|
|
5981
|
-
expanded: false
|
|
5982
|
-
}));
|
|
5983
|
-
this.innerFacets = JSON.parse(JSON.stringify(innerFacets));
|
|
5984
|
-
this.allFacets = JSON.parse(JSON.stringify(innerFacets));
|
|
6082
|
+
|
|
6083
|
+
handleFacetsProp() {
|
|
6084
|
+
let innerFacets = this.facets.map(f => ({ ...f,
|
|
6085
|
+
expanded: false
|
|
6086
|
+
}));
|
|
6087
|
+
this.innerFacets = JSON.parse(JSON.stringify(innerFacets));
|
|
6088
|
+
this.allFacets = JSON.parse(JSON.stringify(innerFacets));
|
|
6089
|
+
}
|
|
6090
|
+
|
|
6091
|
+
},
|
|
6092
|
+
|
|
6093
|
+
created() {
|
|
6094
|
+
this.handleFacetsProp();
|
|
6095
|
+
}
|
|
6096
|
+
|
|
6097
|
+
};
|
|
6098
|
+
|
|
6099
|
+
/* script */
|
|
6100
|
+
const __vue_script__$4 = script$4;
|
|
6101
|
+
/* template */
|
|
6102
|
+
|
|
6103
|
+
var __vue_render__$4 = function () {
|
|
6104
|
+
var _vm = this;
|
|
6105
|
+
|
|
6106
|
+
var _h = _vm.$createElement;
|
|
6107
|
+
|
|
6108
|
+
var _c = _vm._self._c || _h;
|
|
6109
|
+
|
|
6110
|
+
return _c('div', {
|
|
6111
|
+
staticClass: "rb-facets-sidebar"
|
|
6112
|
+
}, [_c('h4', [_vm._v("Компоненты")]), _vm._v(" "), _c('b-form', [_c('b-form-row', [_c('b-col', {
|
|
6113
|
+
attrs: {
|
|
6114
|
+
"lg": "12"
|
|
6115
|
+
}
|
|
6116
|
+
}, [_c('b-form-group', [_c('b-form-input', {
|
|
6117
|
+
attrs: {
|
|
6118
|
+
"placeholder": "Название поля"
|
|
6119
|
+
},
|
|
6120
|
+
model: {
|
|
6121
|
+
value: _vm.facetSearchStr,
|
|
6122
|
+
callback: function ($$v) {
|
|
6123
|
+
_vm.facetSearchStr = $$v;
|
|
6124
|
+
},
|
|
6125
|
+
expression: "facetSearchStr"
|
|
6126
|
+
}
|
|
6127
|
+
})], 1)], 1)], 1)], 1), _vm._v(" "), _c('div', {
|
|
6128
|
+
staticClass: "rb-facet-list"
|
|
6129
|
+
}, _vm._l(_vm.innerFacets, function (facet) {
|
|
6130
|
+
return _c('div', {
|
|
6131
|
+
key: facet.name,
|
|
6132
|
+
staticClass: "rb-facet"
|
|
6133
|
+
}, [_c('h6', {
|
|
6134
|
+
staticClass: "rb-facet-label d-flex cursor-pointer",
|
|
6135
|
+
on: {
|
|
6136
|
+
"click": function ($event) {
|
|
6137
|
+
facet.expanded = !facet.expanded;
|
|
6138
|
+
}
|
|
6139
|
+
}
|
|
6140
|
+
}, [_c('rb-text', {
|
|
6141
|
+
staticClass: "flex-fill"
|
|
6142
|
+
}, [_vm._v(_vm._s(facet.labelRu))]), _vm._v(" "), _c('rb-icon', {
|
|
6143
|
+
attrs: {
|
|
6144
|
+
"icon": facet.expanded ? _vm.iconCollapseFacet : _vm.iconExpandFacet
|
|
6145
|
+
}
|
|
6146
|
+
})], 1), _vm._v(" "), facet.expanded ? _c('b-list-group', [_c('draggable', {
|
|
6147
|
+
attrs: {
|
|
6148
|
+
"clone": _vm.onFieldCloned,
|
|
6149
|
+
"animation": 200,
|
|
6150
|
+
"group": {
|
|
6151
|
+
name: 'fields',
|
|
6152
|
+
pull: 'clone',
|
|
6153
|
+
put: false
|
|
6154
|
+
},
|
|
6155
|
+
"ghost-class": "rb-facet-field-moving"
|
|
6156
|
+
},
|
|
6157
|
+
on: {
|
|
6158
|
+
"end": function ($event) {
|
|
6159
|
+
return _vm.onFieldMoveEnd($event);
|
|
6160
|
+
}
|
|
6161
|
+
},
|
|
6162
|
+
model: {
|
|
6163
|
+
value: facet.fields,
|
|
6164
|
+
callback: function ($$v) {
|
|
6165
|
+
_vm.$set(facet, "fields", $$v);
|
|
6166
|
+
},
|
|
6167
|
+
expression: "facet.fields"
|
|
6168
|
+
}
|
|
6169
|
+
}, _vm._l(facet.fields, function (field) {
|
|
6170
|
+
return _c('b-list-group-item', {
|
|
6171
|
+
key: field.name,
|
|
6172
|
+
staticClass: "cursor-pointer"
|
|
6173
|
+
}, [_c('rb-text', [_vm._v(_vm._s(field.labelRu))])], 1);
|
|
6174
|
+
}), 1)], 1) : _vm._e()], 1);
|
|
6175
|
+
}), 0)], 1);
|
|
6176
|
+
};
|
|
6177
|
+
|
|
6178
|
+
var __vue_staticRenderFns__$4 = [];
|
|
6179
|
+
/* style */
|
|
6180
|
+
|
|
6181
|
+
const __vue_inject_styles__$4 = undefined;
|
|
6182
|
+
/* scoped */
|
|
6183
|
+
|
|
6184
|
+
const __vue_scope_id__$4 = undefined;
|
|
6185
|
+
/* module identifier */
|
|
6186
|
+
|
|
6187
|
+
const __vue_module_identifier__$4 = undefined;
|
|
6188
|
+
/* functional template */
|
|
6189
|
+
|
|
6190
|
+
const __vue_is_functional_template__$4 = false;
|
|
6191
|
+
/* style inject */
|
|
6192
|
+
|
|
6193
|
+
/* style inject SSR */
|
|
6194
|
+
|
|
6195
|
+
/* style inject shadow dom */
|
|
6196
|
+
|
|
6197
|
+
const __vue_component__$5 = /*#__PURE__*/normalizeComponent({
|
|
6198
|
+
render: __vue_render__$4,
|
|
6199
|
+
staticRenderFns: __vue_staticRenderFns__$4
|
|
6200
|
+
}, __vue_inject_styles__$4, __vue_script__$4, __vue_scope_id__$4, __vue_is_functional_template__$4, __vue_module_identifier__$4, false, undefined, undefined, undefined);
|
|
6201
|
+
|
|
6202
|
+
var DocTemplateFacetList = __vue_component__$5;
|
|
6203
|
+
|
|
6204
|
+
const rnds8Pool = new Uint8Array(256); // # of random values to pre-allocate
|
|
6205
|
+
|
|
6206
|
+
let poolPtr = rnds8Pool.length;
|
|
6207
|
+
function rng() {
|
|
6208
|
+
if (poolPtr > rnds8Pool.length - 16) {
|
|
6209
|
+
crypto.randomFillSync(rnds8Pool);
|
|
6210
|
+
poolPtr = 0;
|
|
6211
|
+
}
|
|
6212
|
+
|
|
6213
|
+
return rnds8Pool.slice(poolPtr, poolPtr += 16);
|
|
6214
|
+
}
|
|
6215
|
+
|
|
6216
|
+
var REGEX = /^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;
|
|
6217
|
+
|
|
6218
|
+
function validate(uuid) {
|
|
6219
|
+
return typeof uuid === 'string' && REGEX.test(uuid);
|
|
6220
|
+
}
|
|
6221
|
+
|
|
6222
|
+
/**
|
|
6223
|
+
* Convert array of 16 byte values to UUID string format of the form:
|
|
6224
|
+
* XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
|
|
6225
|
+
*/
|
|
6226
|
+
|
|
6227
|
+
const byteToHex = [];
|
|
6228
|
+
|
|
6229
|
+
for (let i = 0; i < 256; ++i) {
|
|
6230
|
+
byteToHex.push((i + 0x100).toString(16).substr(1));
|
|
6231
|
+
}
|
|
6232
|
+
|
|
6233
|
+
function stringify(arr, offset = 0) {
|
|
6234
|
+
// Note: Be careful editing this code! It's been tuned for performance
|
|
6235
|
+
// and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434
|
|
6236
|
+
const uuid = (byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]]).toLowerCase(); // Consistency check for valid UUID. If this throws, it's likely due to one
|
|
6237
|
+
// of the following:
|
|
6238
|
+
// - One or more input array values don't map to a hex octet (leading to
|
|
6239
|
+
// "undefined" in the uuid)
|
|
6240
|
+
// - Invalid input values for the RFC `version` or `variant` fields
|
|
6241
|
+
|
|
6242
|
+
if (!validate(uuid)) {
|
|
6243
|
+
throw TypeError('Stringified UUID is invalid');
|
|
6244
|
+
}
|
|
6245
|
+
|
|
6246
|
+
return uuid;
|
|
6247
|
+
}
|
|
6248
|
+
|
|
6249
|
+
function v4(options, buf, offset) {
|
|
6250
|
+
options = options || {};
|
|
6251
|
+
const rnds = options.random || (options.rng || rng)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`
|
|
6252
|
+
|
|
6253
|
+
rnds[6] = rnds[6] & 0x0f | 0x40;
|
|
6254
|
+
rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided
|
|
6255
|
+
|
|
6256
|
+
if (buf) {
|
|
6257
|
+
offset = offset || 0;
|
|
6258
|
+
|
|
6259
|
+
for (let i = 0; i < 16; ++i) {
|
|
6260
|
+
buf[offset + i] = rnds[i];
|
|
6261
|
+
}
|
|
6262
|
+
|
|
6263
|
+
return buf;
|
|
6264
|
+
}
|
|
6265
|
+
|
|
6266
|
+
return stringify(rnds);
|
|
6267
|
+
}
|
|
6268
|
+
|
|
6269
|
+
//
|
|
6270
|
+
var script$3 = {
|
|
6271
|
+
name: 'FieldRuleFormModal',
|
|
6272
|
+
components: {
|
|
6273
|
+
DocForm
|
|
6274
|
+
},
|
|
6275
|
+
props: {
|
|
6276
|
+
field: Object,
|
|
6277
|
+
rule: Object,
|
|
6278
|
+
formConfig: Object,
|
|
6279
|
+
mode: {
|
|
6280
|
+
type: String,
|
|
6281
|
+
default: 'ins'
|
|
6282
|
+
},
|
|
6283
|
+
onAfterOk: Function
|
|
6284
|
+
},
|
|
6285
|
+
|
|
6286
|
+
data() {
|
|
6287
|
+
return {
|
|
6288
|
+
id: 'rb-field-rule-form-modal',
|
|
6289
|
+
state: this.getDefaultState(),
|
|
6290
|
+
innerFormConfig: null,
|
|
6291
|
+
innerRule: null
|
|
6292
|
+
};
|
|
6293
|
+
},
|
|
6294
|
+
|
|
6295
|
+
computed: {
|
|
6296
|
+
title() {
|
|
6297
|
+
return this.mode === 'ins' ? 'Добавление правила' : 'Редактирование правила';
|
|
6298
|
+
},
|
|
6299
|
+
|
|
6300
|
+
fields() {
|
|
6301
|
+
return UtFormConfig.getFields(this.formConfig);
|
|
6302
|
+
},
|
|
6303
|
+
|
|
6304
|
+
rulePresets() {
|
|
6305
|
+
return UtFormConstructor.getAvailableFieldRules(this.field);
|
|
6306
|
+
}
|
|
6307
|
+
|
|
6308
|
+
},
|
|
6309
|
+
watch: {
|
|
6310
|
+
formConfig() {
|
|
6311
|
+
this.copyToInnerFormConfig();
|
|
6312
|
+
},
|
|
6313
|
+
|
|
6314
|
+
rule() {
|
|
6315
|
+
if (this.rule) {
|
|
6316
|
+
this.innerRule = this.rule;
|
|
6317
|
+
} else {
|
|
6318
|
+
this.innerRule = this.getDefaultRule();
|
|
6319
|
+
}
|
|
6320
|
+
}
|
|
6321
|
+
|
|
6322
|
+
},
|
|
6323
|
+
methods: {
|
|
6324
|
+
validateFields(fieldName) {
|
|
6325
|
+
let fields = fieldName ? [fieldName] : ['name', 'event', 'script'];
|
|
6326
|
+
fields.forEach(field => {
|
|
6327
|
+
if (!this.innerRule[field]) {
|
|
6328
|
+
this.state[field] = false;
|
|
6329
|
+
this.state[`${field}_feedback`] = 'Заполните название';
|
|
6330
|
+
} else {
|
|
6331
|
+
this.state[field] = true;
|
|
6332
|
+
this.state[`${field}_feedback`] = null;
|
|
6333
|
+
}
|
|
6334
|
+
});
|
|
6335
|
+
},
|
|
6336
|
+
|
|
6337
|
+
copyToInnerFormConfig() {
|
|
6338
|
+
this.innerFormConfig = JSON.parse(JSON.stringify(this.formConfig));
|
|
6339
|
+
},
|
|
6340
|
+
|
|
6341
|
+
applyRuleToInnerFormConfig() {
|
|
6342
|
+
if (this.innerFormConfig) {
|
|
6343
|
+
let foundRule = UtFormConfig.findRule(this.innerRule.id, this.innerFormConfig);
|
|
6344
|
+
|
|
6345
|
+
if (!foundRule) {
|
|
6346
|
+
let foundField = UtFormConfig.findField(this.field.name, this.innerFormConfig);
|
|
6347
|
+
|
|
6348
|
+
if (foundField) {
|
|
6349
|
+
foundField.rules = foundField.rules ? foundField.rules : [];
|
|
6350
|
+
foundField.rules.push(this.rule);
|
|
6351
|
+
}
|
|
6352
|
+
} else {
|
|
6353
|
+
Object.assign(foundRule, this.innerRule);
|
|
6354
|
+
}
|
|
6355
|
+
}
|
|
6356
|
+
},
|
|
6357
|
+
|
|
6358
|
+
onActivateTab(index) {
|
|
6359
|
+
if (index > 0) {
|
|
6360
|
+
this.copyToInnerFormConfig();
|
|
6361
|
+
this.applyRuleToInnerFormConfig();
|
|
6362
|
+
}
|
|
6363
|
+
},
|
|
6364
|
+
|
|
6365
|
+
getDefaultState() {
|
|
6366
|
+
return {
|
|
6367
|
+
name: null,
|
|
6368
|
+
event: null,
|
|
6369
|
+
script: null
|
|
6370
|
+
};
|
|
6371
|
+
},
|
|
6372
|
+
|
|
6373
|
+
getDefaultRule() {
|
|
6374
|
+
return {
|
|
6375
|
+
id: v4(),
|
|
6376
|
+
name: null,
|
|
6377
|
+
event: null,
|
|
6378
|
+
script: null
|
|
6379
|
+
};
|
|
6380
|
+
},
|
|
6381
|
+
|
|
6382
|
+
resetModal() {
|
|
6383
|
+
this.state = this.getDefaultState();
|
|
6384
|
+
this.innerRule = null;
|
|
6385
|
+
},
|
|
6386
|
+
|
|
6387
|
+
addVariableToScript(varName) {
|
|
6388
|
+
let r = this.innerRule;
|
|
6389
|
+
r.script = r.script ? r.script + varName : varName;
|
|
6390
|
+
},
|
|
6391
|
+
|
|
6392
|
+
addSetVariableToScript(field) {
|
|
6393
|
+
let r = this.innerRule;
|
|
6394
|
+
let setVariableScript = `doc['${field.name}'] = Значение;`;
|
|
6395
|
+
r.script = r.script ? r.script + setVariableScript : setVariableScript;
|
|
6396
|
+
},
|
|
6397
|
+
|
|
6398
|
+
addCallInputFunction(field) {
|
|
6399
|
+
let r = this.innerRule;
|
|
6400
|
+
let setVariableScript = `form.$refs['${field.name}'].Название функции();`;
|
|
6401
|
+
r.script = r.script ? r.script + setVariableScript : setVariableScript;
|
|
6402
|
+
},
|
|
6403
|
+
|
|
6404
|
+
onRuleSelected(ruleName) {
|
|
6405
|
+
let rule = this.rulePresets.find(rule => rule.name === ruleName);
|
|
6406
|
+
|
|
6407
|
+
if (rule) {
|
|
6408
|
+
Object.assign(this.innerRule, rule);
|
|
6409
|
+
this.innerRule.script = this.innerRule.script.trim();
|
|
6410
|
+
}
|
|
6411
|
+
},
|
|
6412
|
+
|
|
6413
|
+
onOk() {
|
|
6414
|
+
this.validateFields();
|
|
6415
|
+
|
|
6416
|
+
if (this.state.name && this.state.script) {
|
|
6417
|
+
if (this.onAfterOk) {
|
|
6418
|
+
this.onAfterOk(this.innerRule);
|
|
6419
|
+
}
|
|
6420
|
+
|
|
6421
|
+
this.$nextTick(() => {
|
|
6422
|
+
this.resetModal();
|
|
6423
|
+
this.$bvModal.hide(this.id);
|
|
6424
|
+
});
|
|
6425
|
+
}
|
|
6426
|
+
}
|
|
6427
|
+
|
|
6428
|
+
},
|
|
6429
|
+
|
|
6430
|
+
created() {
|
|
6431
|
+
this.copyToInnerFormConfig();
|
|
6432
|
+
}
|
|
6433
|
+
|
|
6434
|
+
};
|
|
6435
|
+
|
|
6436
|
+
/* script */
|
|
6437
|
+
const __vue_script__$3 = script$3;
|
|
6438
|
+
/* template */
|
|
6439
|
+
|
|
6440
|
+
var __vue_render__$3 = function () {
|
|
6441
|
+
var _vm = this;
|
|
6442
|
+
|
|
6443
|
+
var _h = _vm.$createElement;
|
|
6444
|
+
|
|
6445
|
+
var _c = _vm._self._c || _h;
|
|
6446
|
+
|
|
6447
|
+
return _c('b-modal', {
|
|
6448
|
+
attrs: {
|
|
6449
|
+
"id": _vm.id,
|
|
6450
|
+
"title": _vm.title,
|
|
6451
|
+
"modal-class": "rb-field-rule-form-modal",
|
|
6452
|
+
"size": "lg",
|
|
6453
|
+
"ok-title": "Сохранить правило",
|
|
6454
|
+
"cancel-variant": "outline-gray",
|
|
6455
|
+
"cancel-title": "Отмена"
|
|
6456
|
+
},
|
|
6457
|
+
on: {
|
|
6458
|
+
"ok": function ($event) {
|
|
6459
|
+
$event.preventDefault();
|
|
6460
|
+
return _vm.onOk.apply(null, arguments);
|
|
6461
|
+
}
|
|
6462
|
+
}
|
|
6463
|
+
}, [_c('b-card', {
|
|
6464
|
+
attrs: {
|
|
6465
|
+
"no-body": ""
|
|
6466
|
+
}
|
|
6467
|
+
}, [_c('b-tabs', {
|
|
6468
|
+
attrs: {
|
|
6469
|
+
"card": ""
|
|
6470
|
+
},
|
|
6471
|
+
on: {
|
|
6472
|
+
"activate-tab": _vm.onActivateTab
|
|
6473
|
+
}
|
|
6474
|
+
}, [_c('b-tab', {
|
|
6475
|
+
attrs: {
|
|
6476
|
+
"title": "Правило",
|
|
6477
|
+
"active": ""
|
|
6478
|
+
}
|
|
6479
|
+
}, [_vm.innerRule ? _c('b-form', [_c('b-form-row', [_c('b-col', {
|
|
6480
|
+
attrs: {
|
|
6481
|
+
"log": "12"
|
|
6482
|
+
}
|
|
6483
|
+
}, [_vm.rulePresets.length > 0 ? _c('b-form-group', {
|
|
6484
|
+
attrs: {
|
|
6485
|
+
"label": "Выбрать"
|
|
6486
|
+
},
|
|
6487
|
+
scopedSlots: _vm._u([{
|
|
6488
|
+
key: "description",
|
|
6489
|
+
fn: function () {
|
|
6490
|
+
return [_vm._v("\n Выберите готовое правило из списка и если нужно, измените\n ")];
|
|
6491
|
+
},
|
|
6492
|
+
proxy: true
|
|
6493
|
+
}], null, false, 3419583775)
|
|
6494
|
+
}, [_vm._v(" "), _c('b-form-select', {
|
|
6495
|
+
on: {
|
|
6496
|
+
"input": function ($event) {
|
|
6497
|
+
return _vm.onRuleSelected($event);
|
|
6498
|
+
}
|
|
6499
|
+
}
|
|
6500
|
+
}, _vm._l(_vm.rulePresets, function (r) {
|
|
6501
|
+
return _c('b-form-select-option', {
|
|
6502
|
+
key: r.name,
|
|
6503
|
+
attrs: {
|
|
6504
|
+
"value": r.name
|
|
6505
|
+
}
|
|
6506
|
+
}, [_vm._v("\n " + _vm._s(r.name) + "\n ")]);
|
|
6507
|
+
}), 1)], 1) : _vm._e()], 1), _vm._v(" "), _c('b-col', {
|
|
6508
|
+
attrs: {
|
|
6509
|
+
"lg": "12"
|
|
6510
|
+
}
|
|
6511
|
+
}, [_c('b-form-group', {
|
|
6512
|
+
attrs: {
|
|
6513
|
+
"label": "Название"
|
|
6514
|
+
},
|
|
6515
|
+
scopedSlots: _vm._u([{
|
|
6516
|
+
key: "description",
|
|
6517
|
+
fn: function () {
|
|
6518
|
+
return [_vm._v("\n Задайте уникальное название, чтобы отличать правило в списке\n ")];
|
|
6519
|
+
},
|
|
6520
|
+
proxy: true
|
|
6521
|
+
}], null, false, 3665649506)
|
|
6522
|
+
}, [_vm._v(" "), _c('b-form-input', {
|
|
6523
|
+
attrs: {
|
|
6524
|
+
"state": _vm.state.name,
|
|
6525
|
+
"invalid-feedback": _vm.state.name_feedback
|
|
6526
|
+
},
|
|
6527
|
+
model: {
|
|
6528
|
+
value: _vm.innerRule.name,
|
|
6529
|
+
callback: function ($$v) {
|
|
6530
|
+
_vm.$set(_vm.innerRule, "name", $$v);
|
|
6531
|
+
},
|
|
6532
|
+
expression: "innerRule.name"
|
|
5985
6533
|
}
|
|
5986
|
-
|
|
5987
|
-
},
|
|
5988
|
-
|
|
5989
|
-
created() {
|
|
5990
|
-
this.handleFacetsProp();
|
|
5991
|
-
}
|
|
5992
|
-
|
|
5993
|
-
};
|
|
5994
|
-
|
|
5995
|
-
/* script */
|
|
5996
|
-
const __vue_script__$3 = script$3;
|
|
5997
|
-
/* template */
|
|
5998
|
-
|
|
5999
|
-
var __vue_render__$3 = function () {
|
|
6000
|
-
var _vm = this;
|
|
6001
|
-
|
|
6002
|
-
var _h = _vm.$createElement;
|
|
6003
|
-
|
|
6004
|
-
var _c = _vm._self._c || _h;
|
|
6005
|
-
|
|
6006
|
-
return _c('div', {
|
|
6007
|
-
staticClass: "rb-facets-sidebar"
|
|
6008
|
-
}, [_c('h4', [_vm._v("Компоненты")]), _vm._v(" "), _c('b-form', [_c('b-form-row', [_c('b-col', {
|
|
6534
|
+
})], 1)], 1), _vm._v(" "), _c('b-col', {
|
|
6009
6535
|
attrs: {
|
|
6010
6536
|
"lg": "12"
|
|
6011
6537
|
}
|
|
6012
|
-
}, [_c('b-form-group',
|
|
6538
|
+
}, [_c('b-form-group', {
|
|
6013
6539
|
attrs: {
|
|
6014
|
-
"
|
|
6540
|
+
"label": "Событие"
|
|
6541
|
+
},
|
|
6542
|
+
scopedSlots: _vm._u([{
|
|
6543
|
+
key: "description",
|
|
6544
|
+
fn: function () {
|
|
6545
|
+
return [_vm._v("\n При возникновении этого события будет выполняться правило\n ")];
|
|
6546
|
+
},
|
|
6547
|
+
proxy: true
|
|
6548
|
+
}], null, false, 1461632685)
|
|
6549
|
+
}, [_vm._v(" "), _c('b-form-select', {
|
|
6550
|
+
attrs: {
|
|
6551
|
+
"state": _vm.state.event,
|
|
6552
|
+
"invalid-feedback": _vm.state.event_feedback
|
|
6015
6553
|
},
|
|
6016
6554
|
model: {
|
|
6017
|
-
value: _vm.
|
|
6555
|
+
value: _vm.innerRule.event,
|
|
6018
6556
|
callback: function ($$v) {
|
|
6019
|
-
_vm.
|
|
6557
|
+
_vm.$set(_vm.innerRule, "event", $$v);
|
|
6020
6558
|
},
|
|
6021
|
-
expression: "
|
|
6559
|
+
expression: "innerRule.event"
|
|
6022
6560
|
}
|
|
6023
|
-
}
|
|
6024
|
-
|
|
6025
|
-
|
|
6026
|
-
|
|
6027
|
-
|
|
6028
|
-
|
|
6029
|
-
|
|
6030
|
-
|
|
6031
|
-
|
|
6032
|
-
|
|
6033
|
-
|
|
6034
|
-
|
|
6035
|
-
|
|
6036
|
-
|
|
6561
|
+
}, [_c('b-form-select-option', {
|
|
6562
|
+
attrs: {
|
|
6563
|
+
"value": 'input'
|
|
6564
|
+
}
|
|
6565
|
+
}, [_vm._v("\n Ввод значения\n ")]), _vm._v(" "), _c('b-form-select-option', {
|
|
6566
|
+
attrs: {
|
|
6567
|
+
"value": 'change'
|
|
6568
|
+
}
|
|
6569
|
+
}, [_vm._v("\n Изменение значения\n ")]), _vm._v(" "), _c('b-form-select-option', {
|
|
6570
|
+
attrs: {
|
|
6571
|
+
"value": 'click'
|
|
6572
|
+
}
|
|
6573
|
+
}, [_vm._v("\n Клик\n ")])], 1)], 1)], 1), _vm._v(" "), _c('b-col', {
|
|
6574
|
+
attrs: {
|
|
6575
|
+
"lg": "12"
|
|
6576
|
+
}
|
|
6577
|
+
}, [_c('b-form-group', {
|
|
6578
|
+
attrs: {
|
|
6579
|
+
"label": "Скрипт"
|
|
6580
|
+
},
|
|
6581
|
+
scopedSlots: _vm._u([{
|
|
6582
|
+
key: "description",
|
|
6583
|
+
fn: function () {
|
|
6584
|
+
return [_vm._v("\n Здесь указывается скрипт правила. Скрипт должен быть написан на языке\n javascript\n ")];
|
|
6037
6585
|
},
|
|
6586
|
+
proxy: true
|
|
6587
|
+
}], null, false, 2031959747)
|
|
6588
|
+
}, [_vm._v(" "), _c('div', {
|
|
6589
|
+
staticClass: "rb-script-input"
|
|
6590
|
+
}, [_c('b-button-toolbar', [_c('b-dropdown', {
|
|
6591
|
+
staticClass: "mx-1",
|
|
6592
|
+
attrs: {
|
|
6593
|
+
"text": "Переменные",
|
|
6594
|
+
"variant": "outline-secondary",
|
|
6595
|
+
"size": "sm"
|
|
6596
|
+
}
|
|
6597
|
+
}, [_c('b-dropdown-item', {
|
|
6598
|
+
on: {
|
|
6599
|
+
"click": function ($event) {
|
|
6600
|
+
return _vm.addVariableToScript('doc');
|
|
6601
|
+
}
|
|
6602
|
+
}
|
|
6603
|
+
}, [_vm._v("\n Документ\n ")]), _vm._v(" "), _c('b-dropdown-item', {
|
|
6604
|
+
on: {
|
|
6605
|
+
"click": function ($event) {
|
|
6606
|
+
return _vm.addVariableToScript('form');
|
|
6607
|
+
}
|
|
6608
|
+
}
|
|
6609
|
+
}, [_vm._v("\n Форма\n ")]), _vm._v(" "), _c('b-dropdown-item', {
|
|
6610
|
+
on: {
|
|
6611
|
+
"click": function ($event) {
|
|
6612
|
+
return _vm.addVariableToScript('event');
|
|
6613
|
+
}
|
|
6614
|
+
}
|
|
6615
|
+
}, [_vm._v("\n Значение события\n ")])], 1), _vm._v(" "), _c('b-dropdown', {
|
|
6616
|
+
staticClass: "mx-1",
|
|
6617
|
+
attrs: {
|
|
6618
|
+
"text": "Задать значение",
|
|
6619
|
+
"variant": "outline-secondary",
|
|
6620
|
+
"size": "sm"
|
|
6621
|
+
}
|
|
6622
|
+
}, _vm._l(_vm.fields, function (f) {
|
|
6623
|
+
return _vm.fields ? _c('b-dropdown-item', {
|
|
6624
|
+
key: f.name,
|
|
6038
6625
|
on: {
|
|
6039
6626
|
"click": function ($event) {
|
|
6040
|
-
|
|
6627
|
+
return _vm.addSetVariableToScript(f);
|
|
6041
6628
|
}
|
|
6042
6629
|
}
|
|
6043
|
-
}
|
|
6044
|
-
|
|
6045
|
-
|
|
6046
|
-
|
|
6047
|
-
|
|
6048
|
-
|
|
6049
|
-
|
|
6050
|
-
|
|
6051
|
-
|
|
6052
|
-
|
|
6053
|
-
|
|
6630
|
+
}, [_vm._v("\n " + _vm._s(f.name) + "\n ")]) : _vm._e();
|
|
6631
|
+
}), 1), _vm._v(" "), _c('b-dropdown', {
|
|
6632
|
+
staticClass: "mx-1",
|
|
6633
|
+
attrs: {
|
|
6634
|
+
"text": "Вызвать функцию инпута",
|
|
6635
|
+
"variant": "outline-secondary",
|
|
6636
|
+
"size": "sm"
|
|
6637
|
+
}
|
|
6638
|
+
}, _vm._l(_vm.fields, function (f) {
|
|
6639
|
+
return _vm.fields ? _c('b-dropdown-item', {
|
|
6640
|
+
key: f.name,
|
|
6054
6641
|
on: {
|
|
6055
|
-
"
|
|
6056
|
-
return _vm.
|
|
6642
|
+
"click": function ($event) {
|
|
6643
|
+
return _vm.addCallInputFunction(f);
|
|
6057
6644
|
}
|
|
6058
|
-
},
|
|
6059
|
-
model: {
|
|
6060
|
-
value: facet.fields,
|
|
6061
|
-
callback: function ($$v) {
|
|
6062
|
-
_vm.$set(facet, "fields", $$v);
|
|
6063
|
-
},
|
|
6064
|
-
expression: "facet.fields"
|
|
6065
6645
|
}
|
|
6066
|
-
}, _vm.
|
|
6067
|
-
|
|
6068
|
-
|
|
6069
|
-
|
|
6070
|
-
|
|
6071
|
-
|
|
6072
|
-
|
|
6646
|
+
}, [_vm._v("\n " + _vm._s(f.name) + "\n ")]) : _vm._e();
|
|
6647
|
+
}), 1)], 1), _vm._v(" "), _c('b-form-textarea', {
|
|
6648
|
+
attrs: {
|
|
6649
|
+
"state": _vm.state.script,
|
|
6650
|
+
"invalid-feedback": _vm.state.script_feedback,
|
|
6651
|
+
"rows": "8"
|
|
6652
|
+
},
|
|
6653
|
+
model: {
|
|
6654
|
+
value: _vm.innerRule.script,
|
|
6655
|
+
callback: function ($$v) {
|
|
6656
|
+
_vm.$set(_vm.innerRule, "script", $$v);
|
|
6657
|
+
},
|
|
6658
|
+
expression: "innerRule.script"
|
|
6659
|
+
}
|
|
6660
|
+
})], 1)])], 1)], 1)], 1) : _vm._e()], 1), _vm._v(" "), _vm.innerFormConfig ? _c('b-tab', {
|
|
6661
|
+
attrs: {
|
|
6662
|
+
"title": "Протестировать правило"
|
|
6663
|
+
}
|
|
6664
|
+
}, [_c('doc-form', {
|
|
6665
|
+
attrs: {
|
|
6666
|
+
"form-config": _vm.innerFormConfig
|
|
6667
|
+
}
|
|
6668
|
+
})], 1) : _vm._e()], 1)], 1)], 1);
|
|
6073
6669
|
};
|
|
6074
6670
|
|
|
6075
6671
|
var __vue_staticRenderFns__$3 = [];
|
|
@@ -6091,16 +6687,19 @@ const __vue_is_functional_template__$3 = false;
|
|
|
6091
6687
|
|
|
6092
6688
|
/* style inject shadow dom */
|
|
6093
6689
|
|
|
6094
|
-
const __vue_component__$
|
|
6690
|
+
const __vue_component__$4 = /*#__PURE__*/normalizeComponent({
|
|
6095
6691
|
render: __vue_render__$3,
|
|
6096
6692
|
staticRenderFns: __vue_staticRenderFns__$3
|
|
6097
6693
|
}, __vue_inject_styles__$3, __vue_script__$3, __vue_scope_id__$3, __vue_is_functional_template__$3, __vue_module_identifier__$3, false, undefined, undefined, undefined);
|
|
6098
6694
|
|
|
6099
|
-
var
|
|
6695
|
+
var FieldRuleFormModal = __vue_component__$4;
|
|
6100
6696
|
|
|
6101
6697
|
//
|
|
6102
6698
|
var script$2 = {
|
|
6103
6699
|
name: 'DocTemplateFieldSidebar',
|
|
6700
|
+
components: {
|
|
6701
|
+
FieldRuleFormModal
|
|
6702
|
+
},
|
|
6104
6703
|
props: {
|
|
6105
6704
|
value: {
|
|
6106
6705
|
type: Object,
|
|
@@ -6109,28 +6708,43 @@ var script$2 = {
|
|
|
6109
6708
|
visible: {
|
|
6110
6709
|
type: Boolean,
|
|
6111
6710
|
default: null
|
|
6112
|
-
}
|
|
6711
|
+
},
|
|
6712
|
+
formConfig: Object
|
|
6113
6713
|
},
|
|
6114
6714
|
|
|
6115
6715
|
data() {
|
|
6116
6716
|
return {
|
|
6117
6717
|
innerVisible: null,
|
|
6118
6718
|
field: null,
|
|
6119
|
-
currentInputName: null
|
|
6719
|
+
currentInputName: null,
|
|
6720
|
+
modalId: 'rb-field-rule-form-modal',
|
|
6721
|
+
ruleModalCfg: {
|
|
6722
|
+
rule: {},
|
|
6723
|
+
mode: 'ins'
|
|
6724
|
+
},
|
|
6725
|
+
rulesHash: v4()
|
|
6120
6726
|
};
|
|
6121
6727
|
},
|
|
6122
6728
|
|
|
6123
6729
|
computed: {
|
|
6124
6730
|
inputOptions() {
|
|
6125
|
-
return this.field ?
|
|
6731
|
+
return this.field ? UtFormConstructor.getInputTypes(this.field) : [];
|
|
6126
6732
|
},
|
|
6127
6733
|
|
|
6128
6734
|
iconCloseSidebar() {
|
|
6129
|
-
return
|
|
6735
|
+
return UtFormConstructor.config.icons.iconCloseFieldSidebar;
|
|
6130
6736
|
},
|
|
6131
6737
|
|
|
6132
6738
|
iconOpenSidebar() {
|
|
6133
|
-
return
|
|
6739
|
+
return UtFormConstructor.config.icons.iconOpenFieldSidebar;
|
|
6740
|
+
},
|
|
6741
|
+
|
|
6742
|
+
iconAdd() {
|
|
6743
|
+
return UtFormConstructor.config.icons.iconAdd;
|
|
6744
|
+
},
|
|
6745
|
+
|
|
6746
|
+
rules() {
|
|
6747
|
+
return UtFormConstructor.getAvailableFieldRules(this.field);
|
|
6134
6748
|
}
|
|
6135
6749
|
|
|
6136
6750
|
},
|
|
@@ -6153,7 +6767,7 @@ var script$2 = {
|
|
|
6153
6767
|
},
|
|
6154
6768
|
|
|
6155
6769
|
currentInputName() {
|
|
6156
|
-
this.field.input =
|
|
6770
|
+
this.field.input = UtFormConstructor.getInputTypeByName(this.currentInputName, this.field);
|
|
6157
6771
|
}
|
|
6158
6772
|
|
|
6159
6773
|
},
|
|
@@ -6179,6 +6793,49 @@ var script$2 = {
|
|
|
6179
6793
|
} else {
|
|
6180
6794
|
return {};
|
|
6181
6795
|
}
|
|
6796
|
+
},
|
|
6797
|
+
|
|
6798
|
+
addRule() {
|
|
6799
|
+
this.ruleModalCfg = {
|
|
6800
|
+
mode: 'ins',
|
|
6801
|
+
rule: {
|
|
6802
|
+
name: null,
|
|
6803
|
+
script: null
|
|
6804
|
+
},
|
|
6805
|
+
onAfterOk: rule => {
|
|
6806
|
+
this.field.rules = this.field.rules ? this.field.rules : [];
|
|
6807
|
+
this.field.rules.push({ ...rule
|
|
6808
|
+
});
|
|
6809
|
+
this.rulesHash = v4();
|
|
6810
|
+
}
|
|
6811
|
+
};
|
|
6812
|
+
this.$bvModal.show(this.modalId);
|
|
6813
|
+
},
|
|
6814
|
+
|
|
6815
|
+
editRule(rule, event) {
|
|
6816
|
+
if (event.target.classList && event.target.classList.contains('rb-remove-rule')) {
|
|
6817
|
+
return;
|
|
6818
|
+
}
|
|
6819
|
+
|
|
6820
|
+
this.ruleModalCfg = {
|
|
6821
|
+
mode: 'upd',
|
|
6822
|
+
rule: { ...rule
|
|
6823
|
+
},
|
|
6824
|
+
onAfterOk: modalRule => {
|
|
6825
|
+
Object.assign(rule, modalRule);
|
|
6826
|
+
}
|
|
6827
|
+
};
|
|
6828
|
+
this.$bvModal.show(this.modalId);
|
|
6829
|
+
},
|
|
6830
|
+
|
|
6831
|
+
removeRule(rule) {
|
|
6832
|
+
let index = this.field.rules.findIndex(r => r.id === rule.id);
|
|
6833
|
+
|
|
6834
|
+
if (index >= 0) {
|
|
6835
|
+
this.field.rules.splice(index, 1);
|
|
6836
|
+
}
|
|
6837
|
+
|
|
6838
|
+
this.rulesHash = v4();
|
|
6182
6839
|
}
|
|
6183
6840
|
|
|
6184
6841
|
},
|
|
@@ -6389,7 +7046,7 @@ var __vue_render__$2 = function () {
|
|
|
6389
7046
|
staticClass: "rb-form-section"
|
|
6390
7047
|
}, [_c('div', {
|
|
6391
7048
|
staticClass: "rb-title"
|
|
6392
|
-
}, [_vm._v("
|
|
7049
|
+
}, [_vm._v("Значение по-умолчанию")]), _vm._v(" "), _c('b-form-row', [_c('b-col', {
|
|
6393
7050
|
attrs: {
|
|
6394
7051
|
"lg": "12"
|
|
6395
7052
|
}
|
|
@@ -6407,7 +7064,55 @@ var __vue_render__$2 = function () {
|
|
|
6407
7064
|
},
|
|
6408
7065
|
expression: "field.defaultValue"
|
|
6409
7066
|
}
|
|
6410
|
-
}, 'component', _vm.field.input.propsData, false))], 1)], 1)], 1)], 1) : _vm._e()
|
|
7067
|
+
}, 'component', _vm.field.input.propsData, false))], 1)], 1)], 1)], 1) : _vm._e(), _vm._v(" "), _c('div', {
|
|
7068
|
+
staticClass: "rb-form-section"
|
|
7069
|
+
}, [_c('div', {
|
|
7070
|
+
staticClass: "rb-title"
|
|
7071
|
+
}, [_vm._v("Правила")]), _vm._v(" "), _c('b-list-group', {
|
|
7072
|
+
attrs: {
|
|
7073
|
+
"data-hash": _vm.rulesHash
|
|
7074
|
+
}
|
|
7075
|
+
}, [_vm._l(_vm.field.rules, function (rule) {
|
|
7076
|
+
return _c('b-list-group-item', {
|
|
7077
|
+
key: rule.id,
|
|
7078
|
+
staticClass: "cursor-pointer d-flex justify-content-between align-items-center",
|
|
7079
|
+
attrs: {
|
|
7080
|
+
"data-hash": _vm.rulesHash
|
|
7081
|
+
},
|
|
7082
|
+
on: {
|
|
7083
|
+
"click": function ($event) {
|
|
7084
|
+
return _vm.editRule(rule, $event);
|
|
7085
|
+
}
|
|
7086
|
+
}
|
|
7087
|
+
}, [_c('rb-text', [_vm._v(_vm._s(rule.name))]), _vm._v(" "), _c('rb-icon', {
|
|
7088
|
+
staticClass: "rb-remove-rule",
|
|
7089
|
+
attrs: {
|
|
7090
|
+
"icon": "icon-close"
|
|
7091
|
+
},
|
|
7092
|
+
on: {
|
|
7093
|
+
"click": function ($event) {
|
|
7094
|
+
return _vm.removeRule(rule);
|
|
7095
|
+
}
|
|
7096
|
+
}
|
|
7097
|
+
})], 1);
|
|
7098
|
+
}), _vm._v(" "), _c('b-list-group-item', {
|
|
7099
|
+
staticClass: "cursor-pointer",
|
|
7100
|
+
on: {
|
|
7101
|
+
"click": _vm.addRule
|
|
7102
|
+
}
|
|
7103
|
+
}, [_c('rb-icon', {
|
|
7104
|
+
attrs: {
|
|
7105
|
+
"icon": _vm.iconAdd
|
|
7106
|
+
}
|
|
7107
|
+
}), _vm._v(" "), _c('rb-text', [_vm._v("Добавить правило ...")])], 1)], 2)], 1)]) : _vm._e(), _vm._v(" "), _c('field-rule-form-modal', {
|
|
7108
|
+
attrs: {
|
|
7109
|
+
"rule": _vm.ruleModalCfg.rule,
|
|
7110
|
+
"form-config": _vm.formConfig,
|
|
7111
|
+
"field": _vm.field,
|
|
7112
|
+
"mode": _vm.ruleModalCfg.mode,
|
|
7113
|
+
"on-after-ok": _vm.ruleModalCfg.onAfterOk
|
|
7114
|
+
}
|
|
7115
|
+
})], 1);
|
|
6411
7116
|
};
|
|
6412
7117
|
|
|
6413
7118
|
var __vue_staticRenderFns__$2 = [];
|
|
@@ -6429,12 +7134,12 @@ const __vue_is_functional_template__$2 = false;
|
|
|
6429
7134
|
|
|
6430
7135
|
/* style inject shadow dom */
|
|
6431
7136
|
|
|
6432
|
-
const __vue_component__$
|
|
7137
|
+
const __vue_component__$3 = /*#__PURE__*/normalizeComponent({
|
|
6433
7138
|
render: __vue_render__$2,
|
|
6434
7139
|
staticRenderFns: __vue_staticRenderFns__$2
|
|
6435
7140
|
}, __vue_inject_styles__$2, __vue_script__$2, __vue_scope_id__$2, __vue_is_functional_template__$2, __vue_module_identifier__$2, false, undefined, undefined, undefined);
|
|
6436
7141
|
|
|
6437
|
-
var DocTemplateFieldSidebar = __vue_component__$
|
|
7142
|
+
var DocTemplateFieldSidebar = __vue_component__$3;
|
|
6438
7143
|
|
|
6439
7144
|
//
|
|
6440
7145
|
var script$1 = {
|
|
@@ -6479,24 +7184,28 @@ var script$1 = {
|
|
|
6479
7184
|
|
|
6480
7185
|
computed: {
|
|
6481
7186
|
iconAdd() {
|
|
6482
|
-
return
|
|
7187
|
+
return UtFormConstructor.config.icons.iconAdd;
|
|
6483
7188
|
},
|
|
6484
7189
|
|
|
6485
7190
|
iconEdit() {
|
|
6486
|
-
return
|
|
7191
|
+
return UtFormConstructor.config.icons.iconEdit;
|
|
6487
7192
|
},
|
|
6488
7193
|
|
|
6489
7194
|
iconDelete() {
|
|
6490
|
-
return
|
|
7195
|
+
return UtFormConstructor.config.icons.iconDelete;
|
|
6491
7196
|
},
|
|
6492
7197
|
|
|
6493
7198
|
iconDrag() {
|
|
6494
|
-
return
|
|
7199
|
+
return UtFormConstructor.config.icons.iconDrag;
|
|
6495
7200
|
}
|
|
6496
7201
|
|
|
6497
7202
|
},
|
|
6498
7203
|
methods: {
|
|
6499
|
-
showProperties(field) {
|
|
7204
|
+
showProperties(field, event) {
|
|
7205
|
+
if (event.target.classList && event.target.classList.contains('rb-remove-field')) {
|
|
7206
|
+
return;
|
|
7207
|
+
}
|
|
7208
|
+
|
|
6500
7209
|
this.sidebarVisible = true;
|
|
6501
7210
|
this.sidebarField = field;
|
|
6502
7211
|
},
|
|
@@ -6570,12 +7279,7 @@ var script$1 = {
|
|
|
6570
7279
|
let index = newIndex != null ? newIndex : -1;
|
|
6571
7280
|
|
|
6572
7281
|
if (index < 0) {
|
|
6573
|
-
column.fields.
|
|
6574
|
-
if (field.name === f.name) {
|
|
6575
|
-
index = i;
|
|
6576
|
-
return false;
|
|
6577
|
-
}
|
|
6578
|
-
});
|
|
7282
|
+
index = column.fields.findIndex(f => field.name === f.name);
|
|
6579
7283
|
}
|
|
6580
7284
|
|
|
6581
7285
|
if (index >= 0) {
|
|
@@ -6655,7 +7359,7 @@ var __vue_render__$1 = function () {
|
|
|
6655
7359
|
staticClass: "rb-form-constructor flex-fill"
|
|
6656
7360
|
}, [_c('div', {
|
|
6657
7361
|
staticClass: "rb-constructor-toolbar d-flex flex-row"
|
|
6658
|
-
}, [_c('h4', [_vm._v("
|
|
7362
|
+
}, [_c('h4', [_vm._v("Добавить секцию: ")]), _vm._v(" "), _c('div', {
|
|
6659
7363
|
staticClass: "rb-layout-buttons"
|
|
6660
7364
|
}, [_c('b-button', {
|
|
6661
7365
|
attrs: {
|
|
@@ -6667,7 +7371,7 @@ var __vue_render__$1 = function () {
|
|
|
6667
7371
|
return _vm.addSection(1);
|
|
6668
7372
|
}
|
|
6669
7373
|
}
|
|
6670
|
-
}, [_c('rb-text', [_vm._v("1
|
|
7374
|
+
}, [_c('rb-text', [_vm._v("Секция с 1 колонкой")]), _vm._v(" "), _c('rb-icon', {
|
|
6671
7375
|
attrs: {
|
|
6672
7376
|
"icon": _vm.iconAdd
|
|
6673
7377
|
}
|
|
@@ -6681,7 +7385,7 @@ var __vue_render__$1 = function () {
|
|
|
6681
7385
|
return _vm.addSection(2);
|
|
6682
7386
|
}
|
|
6683
7387
|
}
|
|
6684
|
-
}, [_c('rb-text', [_vm._v("2
|
|
7388
|
+
}, [_c('rb-text', [_vm._v("Секция с 2 колонками")]), _vm._v(" "), _c('rb-icon', {
|
|
6685
7389
|
attrs: {
|
|
6686
7390
|
"icon": _vm.iconAdd
|
|
6687
7391
|
}
|
|
@@ -6695,7 +7399,7 @@ var __vue_render__$1 = function () {
|
|
|
6695
7399
|
return _vm.addSection(3);
|
|
6696
7400
|
}
|
|
6697
7401
|
}
|
|
6698
|
-
}, [_c('rb-text', [_vm._v("3
|
|
7402
|
+
}, [_c('rb-text', [_vm._v("Секция с 3 колонками")]), _vm._v(" "), _c('rb-icon', {
|
|
6699
7403
|
attrs: {
|
|
6700
7404
|
"icon": _vm.iconAdd
|
|
6701
7405
|
}
|
|
@@ -6797,7 +7501,7 @@ var __vue_render__$1 = function () {
|
|
|
6797
7501
|
staticClass: "cursor-pointer",
|
|
6798
7502
|
on: {
|
|
6799
7503
|
"click": function ($event) {
|
|
6800
|
-
return _vm.showProperties(field);
|
|
7504
|
+
return _vm.showProperties(field, $event);
|
|
6801
7505
|
}
|
|
6802
7506
|
}
|
|
6803
7507
|
}, [_c('b-col', {
|
|
@@ -6817,6 +7521,7 @@ var __vue_render__$1 = function () {
|
|
|
6817
7521
|
"icon": _vm.iconDrag
|
|
6818
7522
|
}
|
|
6819
7523
|
}), _vm._v(" "), _c('rb-text', [_vm._v(_vm._s(field.labelRu))]), _vm._v(" "), _c('rb-icon', {
|
|
7524
|
+
staticClass: "rb-remove-field",
|
|
6820
7525
|
attrs: {
|
|
6821
7526
|
"icon": _vm.iconDelete
|
|
6822
7527
|
},
|
|
@@ -6841,7 +7546,8 @@ var __vue_render__$1 = function () {
|
|
|
6841
7546
|
}), 1)]);
|
|
6842
7547
|
}), 1)], 1), _vm._v(" "), _c('doc-template-field-sidebar', {
|
|
6843
7548
|
attrs: {
|
|
6844
|
-
"visible": _vm.sidebarVisible
|
|
7549
|
+
"visible": _vm.sidebarVisible,
|
|
7550
|
+
"form-config": _vm.formConfig
|
|
6845
7551
|
},
|
|
6846
7552
|
on: {
|
|
6847
7553
|
"hide": function ($event) {
|
|
@@ -6883,56 +7589,58 @@ const __vue_is_functional_template__$1 = false;
|
|
|
6883
7589
|
|
|
6884
7590
|
/* style inject shadow dom */
|
|
6885
7591
|
|
|
6886
|
-
const __vue_component__$
|
|
7592
|
+
const __vue_component__$1 = /*#__PURE__*/normalizeComponent({
|
|
6887
7593
|
render: __vue_render__$1,
|
|
6888
7594
|
staticRenderFns: __vue_staticRenderFns__$1
|
|
6889
7595
|
}, __vue_inject_styles__$1, __vue_script__$1, __vue_scope_id__$1, __vue_is_functional_template__$1, __vue_module_identifier__$1, false, undefined, undefined, undefined);
|
|
6890
7596
|
|
|
6891
|
-
var __vue_component__$
|
|
7597
|
+
var __vue_component__$2 = __vue_component__$1;
|
|
6892
7598
|
|
|
6893
|
-
//
|
|
6894
|
-
//
|
|
6895
|
-
//
|
|
6896
|
-
//
|
|
6897
|
-
//
|
|
6898
|
-
//
|
|
6899
|
-
//
|
|
6900
|
-
//
|
|
6901
|
-
//
|
|
6902
|
-
//
|
|
6903
|
-
//
|
|
6904
|
-
//
|
|
6905
|
-
//
|
|
6906
|
-
//
|
|
6907
|
-
//
|
|
6908
|
-
//
|
|
6909
|
-
//
|
|
6910
|
-
//
|
|
6911
|
-
//
|
|
6912
|
-
//
|
|
6913
|
-
//
|
|
6914
|
-
//
|
|
6915
|
-
//
|
|
6916
|
-
//
|
|
6917
7599
|
//
|
|
6918
7600
|
var script = {
|
|
6919
7601
|
name: 'DocForm',
|
|
6920
7602
|
props: {
|
|
6921
7603
|
formConfig: Object,
|
|
7604
|
+
applyDefaultValues: {
|
|
7605
|
+
type: Boolean,
|
|
7606
|
+
default: true
|
|
7607
|
+
},
|
|
6922
7608
|
doc: {
|
|
6923
7609
|
type: Object,
|
|
6924
7610
|
default: () => ({})
|
|
7611
|
+
},
|
|
7612
|
+
validationState: {
|
|
7613
|
+
type: Object,
|
|
7614
|
+
default: () => ({})
|
|
7615
|
+
}
|
|
7616
|
+
},
|
|
7617
|
+
methods: {
|
|
7618
|
+
onEventFired(eventName, event, field) {
|
|
7619
|
+
if (field.rules) {
|
|
7620
|
+
field.rules.forEach(rule => {
|
|
7621
|
+
if (rule.event === eventName && rule.script) {
|
|
7622
|
+
let ruleContext = UtFormConstructor.getRuleContext();
|
|
7623
|
+
ruleContext.form = this;
|
|
7624
|
+
ruleContext.event = event;
|
|
7625
|
+
ruleContext.eventName = eventName;
|
|
7626
|
+
UtFormConstructor.runRule(ruleContext, rule.script);
|
|
7627
|
+
}
|
|
7628
|
+
});
|
|
7629
|
+
}
|
|
6925
7630
|
}
|
|
7631
|
+
|
|
6926
7632
|
},
|
|
6927
7633
|
|
|
6928
7634
|
created() {
|
|
6929
|
-
this.
|
|
6930
|
-
|
|
6931
|
-
|
|
6932
|
-
|
|
7635
|
+
if (this.applyDefaultValues) {
|
|
7636
|
+
this.formConfig.sections.forEach(r => {
|
|
7637
|
+
r.columns.forEach(c => {
|
|
7638
|
+
c.fields.forEach(f => {
|
|
7639
|
+
this.$set(this.doc, f.name, f.defaultValue == null ? null : f.defaultValue);
|
|
7640
|
+
});
|
|
6933
7641
|
});
|
|
6934
7642
|
});
|
|
6935
|
-
}
|
|
7643
|
+
}
|
|
6936
7644
|
}
|
|
6937
7645
|
|
|
6938
7646
|
};
|
|
@@ -6959,14 +7667,10 @@ var __vue_render__ = function () {
|
|
|
6959
7667
|
}, _vm._l(section.columns, function (column) {
|
|
6960
7668
|
return _c('div', {
|
|
6961
7669
|
key: column.index,
|
|
6962
|
-
staticClass: "rb-form-column"
|
|
6963
|
-
|
|
6964
|
-
|
|
6965
|
-
|
|
6966
|
-
}, _vm._l(column.fields, function (field) {
|
|
6967
|
-
return _c('b-form-row', {
|
|
6968
|
-
key: field.name,
|
|
6969
|
-
staticClass: "cursor-pointer"
|
|
7670
|
+
staticClass: "rb-form-column"
|
|
7671
|
+
}, [_vm._l(column.fields, function (field) {
|
|
7672
|
+
return [field.visible ? _c('b-form-row', {
|
|
7673
|
+
key: field.name
|
|
6970
7674
|
}, [_c('b-col', {
|
|
6971
7675
|
attrs: {
|
|
6972
7676
|
"lg": "12"
|
|
@@ -6978,7 +7682,24 @@ var __vue_render__ = function () {
|
|
|
6978
7682
|
"label": field.labelRu
|
|
6979
7683
|
}
|
|
6980
7684
|
}, [_c(field.input.type, _vm._b({
|
|
7685
|
+
ref: field.name,
|
|
7686
|
+
refInFor: true,
|
|
6981
7687
|
tag: "component",
|
|
7688
|
+
attrs: {
|
|
7689
|
+
"disabled": !field.editable,
|
|
7690
|
+
"state": _vm.validationState[field.name]
|
|
7691
|
+
},
|
|
7692
|
+
on: {
|
|
7693
|
+
"input": function ($event) {
|
|
7694
|
+
return _vm.onEventFired('input', $event, field);
|
|
7695
|
+
},
|
|
7696
|
+
"change": function ($event) {
|
|
7697
|
+
return _vm.onEventFired('change', $event, field);
|
|
7698
|
+
},
|
|
7699
|
+
"click": function ($event) {
|
|
7700
|
+
return _vm.onEventFired('click', $event, field);
|
|
7701
|
+
}
|
|
7702
|
+
},
|
|
6982
7703
|
model: {
|
|
6983
7704
|
value: _vm.doc[field.name],
|
|
6984
7705
|
callback: function ($$v) {
|
|
@@ -6986,8 +7707,8 @@ var __vue_render__ = function () {
|
|
|
6986
7707
|
},
|
|
6987
7708
|
expression: "doc[field.name]"
|
|
6988
7709
|
}
|
|
6989
|
-
}, 'component', field.input.propsData, false))], 1)], 1)], 1);
|
|
6990
|
-
}),
|
|
7710
|
+
}, 'component', field.input.propsData, false))], 1)], 1)], 1) : _vm._e()];
|
|
7711
|
+
})], 2);
|
|
6991
7712
|
}), 0)]);
|
|
6992
7713
|
}), 0);
|
|
6993
7714
|
};
|
|
@@ -7016,7 +7737,7 @@ const __vue_component__ = /*#__PURE__*/normalizeComponent({
|
|
|
7016
7737
|
staticRenderFns: __vue_staticRenderFns__
|
|
7017
7738
|
}, __vue_inject_styles__, __vue_script__, __vue_scope_id__, __vue_is_functional_template__, __vue_module_identifier__, false, undefined, undefined, undefined);
|
|
7018
7739
|
|
|
7019
|
-
var
|
|
7740
|
+
var DocForm = __vue_component__;
|
|
7020
7741
|
|
|
7021
7742
|
/* eslint-disable import/prefer-default-export */
|
|
7022
7743
|
|
|
@@ -7026,8 +7747,8 @@ var components = /*#__PURE__*/Object.freeze({
|
|
|
7026
7747
|
DocTemplateSectionModal: DocTemplateSectionModal,
|
|
7027
7748
|
DocTemplateFacetList: DocTemplateFacetList,
|
|
7028
7749
|
DocTemplateFieldSidebar: DocTemplateFieldSidebar,
|
|
7029
|
-
DocTemplateConstructor: __vue_component__$
|
|
7030
|
-
DocForm:
|
|
7750
|
+
DocTemplateConstructor: __vue_component__$2,
|
|
7751
|
+
DocForm: DocForm
|
|
7031
7752
|
});
|
|
7032
7753
|
|
|
7033
7754
|
// Import vue components
|
|
@@ -7039,4 +7760,4 @@ const install = function installRbDocumentFormConstructor(Vue) {
|
|
|
7039
7760
|
});
|
|
7040
7761
|
}; // Create module definition for Vue.use()
|
|
7041
7762
|
|
|
7042
|
-
export {
|
|
7763
|
+
export { DocForm, __vue_component__$2 as DocTemplateConstructor, DocTemplateFacetList, DocTemplateFieldSidebar, DocTemplateSectionModal, UtFormConfig, install as default };
|