cloud-web-corejs 1.0.245 → 1.0.247
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/package.json +1 -1
- package/src/components/xform/form-designer/form-widget/container-widget/data-table-widget.vue +10 -0
- package/src/components/xform/form-designer/form-widget/field-widget/form-item-wrapper.vue +150 -40
- package/src/components/xform/form-designer/setting-panel/property-editor/container-data-table/edit-tree-button-group-config-dialog.vue +281 -0
- package/src/components/xform/form-designer/setting-panel/property-editor/container-data-table/table-column-dialog.vue +569 -197
- package/src/components/xform/form-designer/setting-panel/property-editor/labelIconClass-editor.vue +18 -17
- package/src/components/xform/form-designer/setting-panel/property-editor/labelIconPosition-editor.vue +26 -26
- package/src/components/xform/form-designer/setting-panel/property-editor/labelTooltip-editor.vue +67 -13
- package/src/components/xform/form-designer/setting-panel/propertyRegister.js +3 -3
- package/src/components/xform/form-render/container-item/data-table-mixin.js +2 -11
- package/src/components/xform/form-render/container-item/sub-form-item.vue +10 -2
- package/src/components/xform/icon-picker/icons.json +284 -0
- package/src/components/xform/icon-picker/index.vue +145 -0
- package/src/components/xform/utils/sfc-generator.js +2 -2
- package/src/components/xform/utils/tableColumnHelper.js +156 -0
- package/src/components/xform/utils/util.js +152 -77
package/package.json
CHANGED
package/src/components/xform/form-designer/form-widget/container-widget/data-table-widget.vue
CHANGED
|
@@ -190,6 +190,7 @@ import TableCellWidget from '../../../../../components/xform/form-designer/form-
|
|
|
190
190
|
import FieldComponents from '../../../../../components/xform/form-designer/form-widget/field-widget/index';
|
|
191
191
|
import Draggable from 'vuedraggable';
|
|
192
192
|
import dataTableMixin from './data-table-mixin.js';
|
|
193
|
+
import { enrichTableColumnsWithLabelIcon } from '../../../utils/tableColumnHelper';
|
|
193
194
|
|
|
194
195
|
export default {
|
|
195
196
|
name: 'data-table-widget',
|
|
@@ -200,6 +201,15 @@ export default {
|
|
|
200
201
|
...FieldComponents
|
|
201
202
|
},
|
|
202
203
|
mixins: [dataTableMixin],
|
|
204
|
+
computed: {
|
|
205
|
+
columns() {
|
|
206
|
+
const baseColumns = dataTableMixin.computed.columns.call(this);
|
|
207
|
+
return enrichTableColumnsWithLabelIcon(
|
|
208
|
+
baseColumns,
|
|
209
|
+
this.widget.options.tableColumns || []
|
|
210
|
+
);
|
|
211
|
+
},
|
|
212
|
+
},
|
|
203
213
|
created() {
|
|
204
214
|
if(this.widget.options.isNotQueryAllPage===undefined)this.widget.options.isNotQueryAllPage = false;
|
|
205
215
|
}
|
|
@@ -22,20 +22,33 @@
|
|
|
22
22
|
</template>
|
|
23
23
|
<template
|
|
24
24
|
v-else-if="
|
|
25
|
-
field.options.widgetTextFlag === 3 &&
|
|
25
|
+
field.options.widgetTextFlag === 3 &&
|
|
26
|
+
field.options.widgetTextLinkConfig
|
|
26
27
|
"
|
|
27
28
|
>
|
|
28
29
|
<div class="ellipsis">
|
|
29
|
-
<a
|
|
30
|
+
<a
|
|
31
|
+
class="a-link"
|
|
32
|
+
:class="getWidgetClass()"
|
|
33
|
+
@click.native="handleClick"
|
|
34
|
+
>
|
|
30
35
|
<span>
|
|
31
36
|
<i
|
|
32
|
-
:class="
|
|
33
|
-
|
|
37
|
+
:class="
|
|
38
|
+
field.options.widgetTextLinkConfig.options.prefixIcon
|
|
39
|
+
"
|
|
40
|
+
v-if="
|
|
41
|
+
!!field.options.widgetTextLinkConfig.options.prefixIcon
|
|
42
|
+
"
|
|
34
43
|
></i>
|
|
35
44
|
<span>{{ getWidgetValue() }}</span>
|
|
36
45
|
<i
|
|
37
|
-
:class="
|
|
38
|
-
|
|
46
|
+
:class="
|
|
47
|
+
field.options.widgetTextLinkConfig.options.suffixIcon
|
|
48
|
+
"
|
|
49
|
+
v-if="
|
|
50
|
+
!!field.options.widgetTextLinkConfig.options.suffixIcon
|
|
51
|
+
"
|
|
39
52
|
></i>
|
|
40
53
|
</span>
|
|
41
54
|
</a>
|
|
@@ -48,10 +61,12 @@
|
|
|
48
61
|
</template>
|
|
49
62
|
<template v-else>
|
|
50
63
|
<el-form-item
|
|
51
|
-
v-if="
|
|
64
|
+
v-if="
|
|
65
|
+
!!field.formItemFlag &&
|
|
66
|
+
(!field.options.hidden || designState === true)
|
|
67
|
+
"
|
|
52
68
|
:label="label"
|
|
53
69
|
:label-width="labelWidth"
|
|
54
|
-
:title="field.options.labelTooltip"
|
|
55
70
|
:rules="getRules()"
|
|
56
71
|
:prop="getPropName()"
|
|
57
72
|
:class="[
|
|
@@ -66,31 +81,48 @@
|
|
|
66
81
|
v-if="!!field.options.labelIconClass"
|
|
67
82
|
slot="label"
|
|
68
83
|
class="custom-label"
|
|
69
|
-
:style="{ color: field.options.labelColor }"
|
|
70
84
|
>
|
|
71
85
|
<template v-if="field.options.labelIconPosition === 'front'">
|
|
72
86
|
<template v-if="!!field.options.labelTooltip">
|
|
73
|
-
<el-tooltip
|
|
87
|
+
<el-tooltip
|
|
88
|
+
:content="field.options.labelTooltip"
|
|
89
|
+
effect="dark"
|
|
90
|
+
popper-class="label-tooltip-pre-line"
|
|
91
|
+
>
|
|
74
92
|
<i :class="field.options.labelIconClass"></i></el-tooltip
|
|
75
|
-
|
|
93
|
+
><span :style="{ color: field.options.labelColor }">{{
|
|
94
|
+
label
|
|
95
|
+
}}</span></template
|
|
76
96
|
>
|
|
77
97
|
<template v-else>
|
|
78
|
-
<i :class="field.options.labelIconClass"></i
|
|
98
|
+
<i :class="field.options.labelIconClass"></i
|
|
99
|
+
><span :style="{ color: field.options.labelColor }">{{
|
|
100
|
+
label
|
|
101
|
+
}}</span></template
|
|
79
102
|
>
|
|
80
103
|
</template>
|
|
81
104
|
<template v-else-if="field.options.labelIconPosition === 'rear'">
|
|
82
105
|
<template v-if="!!field.options.labelTooltip">
|
|
83
|
-
{{
|
|
84
|
-
|
|
106
|
+
<span :style="{ color: field.options.labelColor }">{{
|
|
107
|
+
label
|
|
108
|
+
}}</span
|
|
109
|
+
><el-tooltip
|
|
110
|
+
:content="field.options.labelTooltip"
|
|
111
|
+
effect="dark"
|
|
112
|
+
popper-class="label-tooltip-pre-line"
|
|
113
|
+
>
|
|
85
114
|
<i :class="field.options.labelIconClass"></i></el-tooltip
|
|
86
115
|
></template>
|
|
87
116
|
<template v-else>
|
|
88
|
-
|
|
117
|
+
<span :style="{ color: field.options.labelColor }">{{
|
|
118
|
+
label
|
|
119
|
+
}}</span
|
|
120
|
+
><i :class="field.options.labelIconClass"></i
|
|
89
121
|
></template>
|
|
90
122
|
</template>
|
|
91
123
|
</span>
|
|
92
124
|
<span
|
|
93
|
-
v-if="!!field.options.labelColor"
|
|
125
|
+
v-else-if="!!field.options.labelColor"
|
|
94
126
|
slot="label"
|
|
95
127
|
:style="{ color: field.options.labelColor }"
|
|
96
128
|
>
|
|
@@ -101,20 +133,29 @@
|
|
|
101
133
|
</template>
|
|
102
134
|
<template
|
|
103
135
|
v-else-if="
|
|
104
|
-
field.options.widgetTextFlag === 3 &&
|
|
136
|
+
field.options.widgetTextFlag === 3 &&
|
|
137
|
+
field.options.widgetTextLinkConfig
|
|
105
138
|
"
|
|
106
139
|
>
|
|
107
140
|
<div class="ellipsis">
|
|
108
141
|
<a class="a-link" :class="getWidgetClass()" @click="handleClick">
|
|
109
142
|
<span>
|
|
110
143
|
<i
|
|
111
|
-
:class="
|
|
112
|
-
|
|
144
|
+
:class="
|
|
145
|
+
field.options.widgetTextLinkConfig.options.prefixIcon
|
|
146
|
+
"
|
|
147
|
+
v-if="
|
|
148
|
+
!!field.options.widgetTextLinkConfig.options.prefixIcon
|
|
149
|
+
"
|
|
113
150
|
></i>
|
|
114
151
|
<span>{{ getWidgetValue() }}</span>
|
|
115
152
|
<i
|
|
116
|
-
:class="
|
|
117
|
-
|
|
153
|
+
:class="
|
|
154
|
+
field.options.widgetTextLinkConfig.options.suffixIcon
|
|
155
|
+
"
|
|
156
|
+
v-if="
|
|
157
|
+
!!field.options.widgetTextLinkConfig.options.suffixIcon
|
|
158
|
+
"
|
|
118
159
|
></i>
|
|
119
160
|
</span>
|
|
120
161
|
</a>
|
|
@@ -171,7 +212,10 @@
|
|
|
171
212
|
|
|
172
213
|
<script>
|
|
173
214
|
import i18n from "../../../../../components/xform/utils/i18n";
|
|
174
|
-
import {
|
|
215
|
+
import {
|
|
216
|
+
getSubFormNameByFieldId,
|
|
217
|
+
isVabsearchMultiWidget,
|
|
218
|
+
} from "../../../../../components/xform/utils/util";
|
|
175
219
|
|
|
176
220
|
export default {
|
|
177
221
|
name: "form-item-wrapper",
|
|
@@ -225,7 +269,7 @@ export default {
|
|
|
225
269
|
},
|
|
226
270
|
|
|
227
271
|
label() {
|
|
228
|
-
if (
|
|
272
|
+
if (this.shouldHideFieldLabel()) {
|
|
229
273
|
return "";
|
|
230
274
|
}
|
|
231
275
|
return this.getI18nLabel(this.field.options.label);
|
|
@@ -234,7 +278,7 @@ export default {
|
|
|
234
278
|
},
|
|
235
279
|
|
|
236
280
|
labelWidth() {
|
|
237
|
-
if (
|
|
281
|
+
if (this.shouldHideFieldLabel()) {
|
|
238
282
|
return (!!this.designState ? 5 : 0) + "px"; //设计期间标签最小宽度5像素,以便于鼠标点击可选中组件!!
|
|
239
283
|
}
|
|
240
284
|
|
|
@@ -286,6 +330,13 @@ export default {
|
|
|
286
330
|
this.initShowType();
|
|
287
331
|
},
|
|
288
332
|
methods: {
|
|
333
|
+
shouldHideFieldLabel() {
|
|
334
|
+
if (!!this.field.options.labelHidden) {
|
|
335
|
+
return true;
|
|
336
|
+
}
|
|
337
|
+
// 数据表格列内字段:表头已展示列名,隐藏 form-item 标签
|
|
338
|
+
return this.isSubFormItem();
|
|
339
|
+
},
|
|
289
340
|
isSubFormItem() {
|
|
290
341
|
return !!this.tableParam;
|
|
291
342
|
},
|
|
@@ -330,7 +381,10 @@ export default {
|
|
|
330
381
|
}
|
|
331
382
|
|
|
332
383
|
this.$nextTick(() => {
|
|
333
|
-
const l = getSubFormNameByFieldId(
|
|
384
|
+
const l = getSubFormNameByFieldId(
|
|
385
|
+
this.designer.widgetList,
|
|
386
|
+
selectedId
|
|
387
|
+
);
|
|
334
388
|
this.parentList.splice(this.indexOfParentList, 1);
|
|
335
389
|
//if (!!nextSelected) {
|
|
336
390
|
this.designer.setSelected(nextSelected);
|
|
@@ -341,25 +395,30 @@ export default {
|
|
|
341
395
|
});
|
|
342
396
|
}
|
|
343
397
|
},
|
|
344
|
-
getIsFormItemUnabled() {
|
|
345
|
-
return this.field.type == "vabUpload" || this.field.type == "baseAttachment";
|
|
346
|
-
},
|
|
347
398
|
getRules() {
|
|
348
|
-
if (this.getIsFormItemUnabled()) {
|
|
349
|
-
return null;
|
|
350
|
-
}
|
|
351
399
|
return this.rules;
|
|
352
400
|
},
|
|
353
401
|
getPropName() {
|
|
354
|
-
if (this.
|
|
402
|
+
if (this.formItemProp === "false") {
|
|
355
403
|
return null;
|
|
356
404
|
}
|
|
357
|
-
if (this.formItemProp) {
|
|
358
|
-
|
|
405
|
+
// if (this.formItemProp) {
|
|
406
|
+
// return this.formItemProp;
|
|
407
|
+
// }
|
|
408
|
+
if (this.tableParam && !this.tableParam.$table?.$parent?.$parent) {
|
|
409
|
+
if (this.formItemProp) {
|
|
410
|
+
return this.formItemProp;
|
|
411
|
+
}
|
|
412
|
+
return null;
|
|
413
|
+
}
|
|
414
|
+
if (this.tableParam && !!this.tableParam.$table?.$parent?.$parent) {
|
|
415
|
+
return this.getColumnProp(this.field, this.tableParam);
|
|
359
416
|
}
|
|
360
417
|
let o = this.field.options.name;
|
|
361
418
|
let propName =
|
|
362
|
-
((o =
|
|
419
|
+
((o =
|
|
420
|
+
(this.field.options.keyNameEnabled && this.field.options.keyName) ||
|
|
421
|
+
o),
|
|
363
422
|
this.subFormItemFlag && !this.designState
|
|
364
423
|
? this.subFormName + "." + this.subFormRowIndex + "." + o
|
|
365
424
|
: this.getObjectFieldFlag() && !this.designState
|
|
@@ -368,6 +427,49 @@ export default {
|
|
|
368
427
|
|
|
369
428
|
return propName;
|
|
370
429
|
},
|
|
430
|
+
getFieldKeyName(widget) {
|
|
431
|
+
let o = widget.options.name;
|
|
432
|
+
return (widget.options.keyNameEnabled && widget.options.keyName) || o;
|
|
433
|
+
},
|
|
434
|
+
isVabsearchFlagWidget(widget) {
|
|
435
|
+
let type = widget?.type;
|
|
436
|
+
return (
|
|
437
|
+
type === "vabsearch" ||
|
|
438
|
+
type === "singerSearch" ||
|
|
439
|
+
type === "multiSearch"
|
|
440
|
+
);
|
|
441
|
+
},
|
|
442
|
+
getColumnProp(rowWidget, obj) {
|
|
443
|
+
let required = rowWidget.options.required || false;
|
|
444
|
+
|
|
445
|
+
let tableRef = obj.$table.$parent.$parent;
|
|
446
|
+
let tableWidget = tableRef.widget;
|
|
447
|
+
let fieldKeyName = this.getFieldKeyName(tableWidget);
|
|
448
|
+
let property = this.getFieldKeyName(rowWidget);
|
|
449
|
+
if (
|
|
450
|
+
this.isVabsearchFlagWidget(rowWidget) &&
|
|
451
|
+
!isVabsearchMultiWidget(rowWidget)
|
|
452
|
+
) {
|
|
453
|
+
property = rowWidget.options.vabSearchName || property;
|
|
454
|
+
}
|
|
455
|
+
let rowIndex = Math.max(obj.rowIndex, 0);
|
|
456
|
+
|
|
457
|
+
let isTreeTable = tableWidget.options.isTreeTable || false;
|
|
458
|
+
if (isTreeTable) {
|
|
459
|
+
rowIndex = tableRef
|
|
460
|
+
.getValue()
|
|
461
|
+
.findIndex((item) => item._X_ROW_KEY === obj.row._X_ROW_KEY);
|
|
462
|
+
if (rowIndex < 0) {
|
|
463
|
+
return "false";
|
|
464
|
+
}
|
|
465
|
+
}
|
|
466
|
+
|
|
467
|
+
let propName = fieldKeyName + "." + rowIndex + "." + property;
|
|
468
|
+
if (!required) {
|
|
469
|
+
propName = "false";
|
|
470
|
+
}
|
|
471
|
+
return propName;
|
|
472
|
+
},
|
|
371
473
|
getI18nLabel(label, path, param) {
|
|
372
474
|
return !this.designState && label ? this.$t2(label, path, param) : label;
|
|
373
475
|
},
|
|
@@ -509,7 +611,8 @@ export default {
|
|
|
509
611
|
: [];
|
|
510
612
|
|
|
511
613
|
let flag1 = !item.serveName || item.serveName == bdService;
|
|
512
|
-
let flag2 =
|
|
614
|
+
let flag2 =
|
|
615
|
+
!companyCodes.length || companyCodes.includes(companyCode);
|
|
513
616
|
// let flag3 = !loginAccounts.length || loginAccounts.includes(loginAccount)
|
|
514
617
|
// let flag4 = this.compareToList(saleOrgCodes, saleOrgCodeList)
|
|
515
618
|
if (flag1 && flag2) {
|
|
@@ -543,13 +646,16 @@ export default {
|
|
|
543
646
|
isShowWidget() {
|
|
544
647
|
let widgetTextFlag = this.field.options.widgetTextFlag;
|
|
545
648
|
return (
|
|
546
|
-
widgetTextFlag === undefined ||
|
|
649
|
+
widgetTextFlag === undefined ||
|
|
650
|
+
widgetTextFlag === null ||
|
|
651
|
+
widgetTextFlag === 0
|
|
547
652
|
);
|
|
548
653
|
},
|
|
549
654
|
getShowValue() {
|
|
550
655
|
let widgetTextFlag = this.field.options.widgetTextFlag;
|
|
551
656
|
let fieldModel = this.$parent.fieldModel;
|
|
552
|
-
if (this.$parent.fieldModelLabel)
|
|
657
|
+
if (this.$parent.fieldModelLabel)
|
|
658
|
+
fieldModel = this.$parent.fieldModelLabel();
|
|
553
659
|
let showValue = fieldModel;
|
|
554
660
|
if (widgetTextFlag == 2) {
|
|
555
661
|
showValue = this.getProcessText(showValue, this.encryptFormula);
|
|
@@ -568,13 +674,17 @@ export default {
|
|
|
568
674
|
handleClick(event) {
|
|
569
675
|
if (this.field.options.disabled) return;
|
|
570
676
|
this.$parent.handleButtonWidgetClick(event, true);
|
|
571
|
-
if (
|
|
677
|
+
if (
|
|
678
|
+
!this.designState &&
|
|
679
|
+
this.field.options.widgetTextLinkConfig?.options.href
|
|
680
|
+
) {
|
|
572
681
|
window.open(this.field.options.widgetTextLinkConfig?.options.href);
|
|
573
682
|
}
|
|
574
683
|
},
|
|
575
684
|
getWidgetValue() {
|
|
576
685
|
let fieldModel = this.$parent.fieldModel;
|
|
577
|
-
if (this.$parent.fieldModelLabel)
|
|
686
|
+
if (this.$parent.fieldModelLabel)
|
|
687
|
+
fieldModel = this.$parent.fieldModelLabel();
|
|
578
688
|
return fieldModel;
|
|
579
689
|
},
|
|
580
690
|
},
|
|
@@ -0,0 +1,281 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<el-dialog
|
|
3
|
+
title="编辑行按钮组配置"
|
|
4
|
+
:visible.sync="dialogVisible"
|
|
5
|
+
custom-class="dialog-style list-dialog"
|
|
6
|
+
:show-close="true"
|
|
7
|
+
append-to-body
|
|
8
|
+
:close-on-click-modal="false"
|
|
9
|
+
:close-on-press-escape="false"
|
|
10
|
+
:destroy-on-close="true"
|
|
11
|
+
width="520px"
|
|
12
|
+
v-dialog-drag
|
|
13
|
+
@close="handleClose"
|
|
14
|
+
>
|
|
15
|
+
<div class="cont">
|
|
16
|
+
<el-form label-width="166px" class="edit-tree-button-group-form">
|
|
17
|
+
<el-form-item label="新增按钮唯一名称">
|
|
18
|
+
<el-input
|
|
19
|
+
v-model="row.rowAddAuthName"
|
|
20
|
+
class="all-width"
|
|
21
|
+
placeholder="留空则不校验权限"
|
|
22
|
+
clearable
|
|
23
|
+
>
|
|
24
|
+
<el-tooltip
|
|
25
|
+
slot="suffix"
|
|
26
|
+
:enterable="false"
|
|
27
|
+
effect="dark"
|
|
28
|
+
content="随机生成"
|
|
29
|
+
placement="top"
|
|
30
|
+
>
|
|
31
|
+
<i
|
|
32
|
+
class="el-input__icon el-icon-refresh-right"
|
|
33
|
+
@click="createRandomRowAddAuthName"
|
|
34
|
+
></i>
|
|
35
|
+
</el-tooltip>
|
|
36
|
+
</el-input>
|
|
37
|
+
</el-form-item>
|
|
38
|
+
<el-form-item label="新增按钮编码" v-if="rowAddAuthCode">
|
|
39
|
+
<div class="auth-code-text">
|
|
40
|
+
<el-tooltip effect="light" content="复制">
|
|
41
|
+
<a
|
|
42
|
+
class="a-link"
|
|
43
|
+
style="color: unset"
|
|
44
|
+
@click="copyAuthCode(rowAddAuthCode, $event)"
|
|
45
|
+
>
|
|
46
|
+
<span
|
|
47
|
+
><i
|
|
48
|
+
class="el-icon-copy-document"
|
|
49
|
+
style="margin-right: 2px"
|
|
50
|
+
></i
|
|
51
|
+
>{{ rowAddAuthCode }}</span
|
|
52
|
+
>
|
|
53
|
+
</a>
|
|
54
|
+
</el-tooltip>
|
|
55
|
+
</div>
|
|
56
|
+
</el-form-item>
|
|
57
|
+
<el-form-item label="编辑按钮唯一名称">
|
|
58
|
+
<el-input
|
|
59
|
+
v-model="row.rowEditAuthName"
|
|
60
|
+
class="all-width"
|
|
61
|
+
placeholder="留空则不校验权限"
|
|
62
|
+
clearable
|
|
63
|
+
>
|
|
64
|
+
<el-tooltip
|
|
65
|
+
slot="suffix"
|
|
66
|
+
:enterable="false"
|
|
67
|
+
effect="dark"
|
|
68
|
+
content="随机生成"
|
|
69
|
+
placement="top"
|
|
70
|
+
>
|
|
71
|
+
<i
|
|
72
|
+
class="el-input__icon el-icon-refresh-right"
|
|
73
|
+
@click="createRandomRowEditAuthName"
|
|
74
|
+
></i>
|
|
75
|
+
</el-tooltip>
|
|
76
|
+
</el-input>
|
|
77
|
+
</el-form-item>
|
|
78
|
+
<el-form-item label="编辑按钮编码" v-if="rowEditAuthCode">
|
|
79
|
+
<div class="auth-code-text">
|
|
80
|
+
<el-tooltip effect="light" content="复制">
|
|
81
|
+
<a
|
|
82
|
+
class="a-link"
|
|
83
|
+
style="color: unset"
|
|
84
|
+
@click="copyAuthCode(rowEditAuthCode, $event)"
|
|
85
|
+
>
|
|
86
|
+
<span
|
|
87
|
+
><i
|
|
88
|
+
class="el-icon-copy-document"
|
|
89
|
+
style="margin-right: 2px"
|
|
90
|
+
></i
|
|
91
|
+
>{{ rowEditAuthCode }}</span
|
|
92
|
+
>
|
|
93
|
+
</a>
|
|
94
|
+
</el-tooltip>
|
|
95
|
+
</div>
|
|
96
|
+
</el-form-item>
|
|
97
|
+
<el-form-item label="新增按钮显隐条件定义">
|
|
98
|
+
<a
|
|
99
|
+
href="javascript:void(0);"
|
|
100
|
+
class="a-link link-oneLind"
|
|
101
|
+
@click="editRowShowScript('rowAddShow')"
|
|
102
|
+
>
|
|
103
|
+
<span>{{ row.rowAddShow }}</span>
|
|
104
|
+
<i class="el-icon-edit"></i>
|
|
105
|
+
</a>
|
|
106
|
+
</el-form-item>
|
|
107
|
+
<el-form-item label="编辑按钮显隐条件定义">
|
|
108
|
+
<a
|
|
109
|
+
href="javascript:void(0);"
|
|
110
|
+
class="a-link link-oneLind"
|
|
111
|
+
@click="editRowShowScript('rowEditShow')"
|
|
112
|
+
>
|
|
113
|
+
<span>{{ row.rowEditShow }}</span>
|
|
114
|
+
<i class="el-icon-edit"></i>
|
|
115
|
+
</a>
|
|
116
|
+
</el-form-item>
|
|
117
|
+
</el-form>
|
|
118
|
+
</div>
|
|
119
|
+
<div slot="footer" class="dialog-footer">
|
|
120
|
+
<el-button class="button-sty" icon="el-icon-close" @click="handleClose">
|
|
121
|
+
{{ i18nt("designer.hint.cancel") }}
|
|
122
|
+
</el-button>
|
|
123
|
+
<el-button
|
|
124
|
+
type="primary"
|
|
125
|
+
class="button-sty"
|
|
126
|
+
icon="el-icon-check"
|
|
127
|
+
@click="handleConfirm"
|
|
128
|
+
>
|
|
129
|
+
{{ i18nt("designer.hint.confirm") }}
|
|
130
|
+
</el-button>
|
|
131
|
+
</div>
|
|
132
|
+
</el-dialog>
|
|
133
|
+
</template>
|
|
134
|
+
|
|
135
|
+
<script>
|
|
136
|
+
import i18n from "../../../../../../components/xform/utils/i18n";
|
|
137
|
+
import eventMixin from "../../../../../../components/xform/form-designer/setting-panel/property-editor/event-handler/eventMixin";
|
|
138
|
+
import { generateId } from "../../../../../../components/xform/utils/util";
|
|
139
|
+
import Clipboard from "clipboard";
|
|
140
|
+
|
|
141
|
+
export default {
|
|
142
|
+
name: "edit-tree-button-group-config-dialog",
|
|
143
|
+
mixins: [i18n, eventMixin],
|
|
144
|
+
props: {
|
|
145
|
+
visible: {
|
|
146
|
+
type: Boolean,
|
|
147
|
+
default: false,
|
|
148
|
+
},
|
|
149
|
+
row: {
|
|
150
|
+
type: Object,
|
|
151
|
+
required: true,
|
|
152
|
+
},
|
|
153
|
+
},
|
|
154
|
+
inject: ["getReportTemplate"],
|
|
155
|
+
data() {
|
|
156
|
+
return {
|
|
157
|
+
rowShowParams: ["dataId", "formCode", "tableParam"],
|
|
158
|
+
};
|
|
159
|
+
},
|
|
160
|
+
computed: {
|
|
161
|
+
dialogVisible: {
|
|
162
|
+
get() {
|
|
163
|
+
return this.visible;
|
|
164
|
+
},
|
|
165
|
+
set(val) {
|
|
166
|
+
this.$emit("update:visible", val);
|
|
167
|
+
},
|
|
168
|
+
},
|
|
169
|
+
reportTemplate() {
|
|
170
|
+
return this.getReportTemplate();
|
|
171
|
+
},
|
|
172
|
+
rowAddAuthName() {
|
|
173
|
+
return this.getRowAddAuthName();
|
|
174
|
+
},
|
|
175
|
+
rowEditAuthName() {
|
|
176
|
+
return this.getRowEditAuthName();
|
|
177
|
+
},
|
|
178
|
+
rowAddAuthCode() {
|
|
179
|
+
return this.getRowAuthCode(this.rowAddAuthName);
|
|
180
|
+
},
|
|
181
|
+
rowEditAuthCode() {
|
|
182
|
+
return this.getRowAuthCode(this.rowEditAuthName);
|
|
183
|
+
},
|
|
184
|
+
},
|
|
185
|
+
watch: {
|
|
186
|
+
visible(val) {
|
|
187
|
+
if (val) {
|
|
188
|
+
this.ensureRowAuthNames();
|
|
189
|
+
}
|
|
190
|
+
},
|
|
191
|
+
},
|
|
192
|
+
methods: {
|
|
193
|
+
getRowAddAuthName() {
|
|
194
|
+
return this.row.rowAddAuthName ?? this.row.treeRowAddName;
|
|
195
|
+
},
|
|
196
|
+
getRowEditAuthName() {
|
|
197
|
+
return this.row.rowEditAuthName ?? this.row.treeRowEditName;
|
|
198
|
+
},
|
|
199
|
+
getRowAuthCode(authName) {
|
|
200
|
+
if (!authName || !this.reportTemplate?.formCode) {
|
|
201
|
+
return "";
|
|
202
|
+
}
|
|
203
|
+
return this.reportTemplate.formCode + ":" + authName;
|
|
204
|
+
},
|
|
205
|
+
createRowAuthName(type) {
|
|
206
|
+
return `row${type}` + generateId();
|
|
207
|
+
},
|
|
208
|
+
ensureRowAuthNames() {
|
|
209
|
+
if (!this.getRowAddAuthName()) {
|
|
210
|
+
this.$set(this.row, "rowAddAuthName", this.createRowAuthName("Add"));
|
|
211
|
+
}
|
|
212
|
+
if (!this.getRowEditAuthName()) {
|
|
213
|
+
this.$set(this.row, "rowEditAuthName", this.createRowAuthName("Edit"));
|
|
214
|
+
}
|
|
215
|
+
},
|
|
216
|
+
createRandomRowAddAuthName() {
|
|
217
|
+
this.$set(this.row, "rowAddAuthName", this.createRowAuthName("Add"));
|
|
218
|
+
this.$message.success("生成成功");
|
|
219
|
+
},
|
|
220
|
+
createRandomRowEditAuthName() {
|
|
221
|
+
this.$set(this.row, "rowEditAuthName", this.createRowAuthName("Edit"));
|
|
222
|
+
this.$message.success("生成成功");
|
|
223
|
+
},
|
|
224
|
+
editRowShowScript(eventName) {
|
|
225
|
+
this.editEventHandler(eventName, this.rowShowParams, {
|
|
226
|
+
customCode: () => this.row[eventName] || "",
|
|
227
|
+
callback: (code) => {
|
|
228
|
+
this.$set(this.row, eventName, code);
|
|
229
|
+
},
|
|
230
|
+
});
|
|
231
|
+
},
|
|
232
|
+
copyAuthCode(content, clickEvent) {
|
|
233
|
+
const clipboard = new Clipboard(clickEvent.target, {
|
|
234
|
+
text: () => content,
|
|
235
|
+
});
|
|
236
|
+
clipboard.on("success", () => {
|
|
237
|
+
this.$message.success("复制成功");
|
|
238
|
+
clipboard.destroy();
|
|
239
|
+
});
|
|
240
|
+
clipboard.on("error", () => {
|
|
241
|
+
this.$message.error("复制失败");
|
|
242
|
+
clipboard.destroy();
|
|
243
|
+
});
|
|
244
|
+
clipboard.onClick(clickEvent);
|
|
245
|
+
},
|
|
246
|
+
handleClose() {
|
|
247
|
+
this.dialogVisible = false;
|
|
248
|
+
},
|
|
249
|
+
handleConfirm() {
|
|
250
|
+
this.$emit("confirm", this.getRowConfigSnapshot());
|
|
251
|
+
this.dialogVisible = false;
|
|
252
|
+
},
|
|
253
|
+
getRowConfigSnapshot() {
|
|
254
|
+
return {
|
|
255
|
+
rowAddAuthName: this.row.rowAddAuthName,
|
|
256
|
+
rowEditAuthName: this.row.rowEditAuthName,
|
|
257
|
+
rowAddShow: this.row.rowAddShow,
|
|
258
|
+
rowEditShow: this.row.rowEditShow,
|
|
259
|
+
};
|
|
260
|
+
},
|
|
261
|
+
},
|
|
262
|
+
};
|
|
263
|
+
</script>
|
|
264
|
+
|
|
265
|
+
<style scoped lang="scss">
|
|
266
|
+
.edit-tree-button-group-form {
|
|
267
|
+
::v-deep .el-form-item {
|
|
268
|
+
margin-bottom: 12px;
|
|
269
|
+
}
|
|
270
|
+
::v-deep .el-form-item__label {
|
|
271
|
+
line-height: 28px;
|
|
272
|
+
}
|
|
273
|
+
::v-deep .el-form-item__content {
|
|
274
|
+
line-height: 28px;
|
|
275
|
+
}
|
|
276
|
+
.auth-code-text {
|
|
277
|
+
word-break: break-all;
|
|
278
|
+
line-height: 1.5;
|
|
279
|
+
}
|
|
280
|
+
}
|
|
281
|
+
</style>
|