agilebuilder-ui 1.1.33 → 1.1.35-sit1
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/lib/{401-7193e896.js → 401-02854e97.js} +1 -1
- package/lib/{404-2852bd20.js → 404-7fc14953.js} +1 -1
- package/lib/{iframe-page-bcc25b1c.js → iframe-page-f229d784.js} +1 -1
- package/lib/index-73d07db3.js +73221 -0
- package/lib/super-ui.css +1 -1
- package/lib/super-ui.js +1 -1
- package/lib/super-ui.umd.cjs +89 -89
- package/lib/{tab-content-iframe-index-48b3b846.js → tab-content-iframe-index-f6bcacf3.js} +1 -1
- package/lib/{tab-content-index-d25e4873.js → tab-content-index-4a0d7f2d.js} +1 -1
- package/lib/{tache-subprocess-history-a72dd967.js → tache-subprocess-history-dcb3009a.js} +1 -1
- package/package.json +1 -1
- package/packages/department-user-tree-inline/src/department-user-multiple-tree-inline.vue +5 -1
- package/packages/department-user-tree-inline/src/department-user-single-tree-inline.vue +343 -368
- package/packages/fs-upload-new/src/file-upload-mobile/file-upload-browser.vue +113 -42
- package/packages/organization-input/src/organization-input.vue +11 -0
- package/packages/super-grid/src/apis.js +13 -13
- package/packages/super-grid/src/dynamic-input.vue +11 -1
- package/packages/super-grid/src/formatter.js +55 -56
- package/packages/super-grid/src/normal-column-content.vue +149 -56
- package/packages/super-grid/src/row-operation.vue +35 -18
- package/packages/super-grid/src/super-grid.vue +135 -97
- package/packages/super-icon/src/index.vue +35 -18
- package/src/styles/display-layout.scss +1 -1
- package/src/styles/index.scss +7 -1
- package/src/utils/auth-api.js +4 -0
- package/src/utils/common-util.js +3 -0
- package/src/utils/dingtalk-util.ts +23 -17
- package/src/utils/util.js +721 -715
- package/src/views/dsc-component/Sidebar/Item.vue +76 -60
- package/src/views/layout/components/Menubar/Item.vue +94 -74
- package/lib/index-d502d8fe.js +0 -72779
|
@@ -35,9 +35,21 @@
|
|
|
35
35
|
@open-page="openPageEvent"
|
|
36
36
|
/>
|
|
37
37
|
<div v-else class="column-text-main">
|
|
38
|
-
<div
|
|
38
|
+
<div
|
|
39
|
+
v-if="
|
|
40
|
+
lineEdit.editable &&
|
|
41
|
+
(options?.configureObj?.props?.base?.columnEditable ?? false) &&
|
|
42
|
+
isEditable &&
|
|
43
|
+
!isHideEdit &&
|
|
44
|
+
!isContentViewText
|
|
45
|
+
"
|
|
46
|
+
class="column-text-edit-main"
|
|
47
|
+
@click="onEditing"
|
|
48
|
+
>
|
|
39
49
|
<el-icon :size="14" color="#409eff"><Edit /></el-icon>
|
|
40
|
-
<span v-if="[undefined, null, ''].includes(row[column.prop])" table-column-placeholder>{{
|
|
50
|
+
<span v-if="[undefined, null, ''].includes(row[column.prop])" table-column-placeholder>{{
|
|
51
|
+
$t('superGrid.editablePlaceholder')
|
|
52
|
+
}}</span>
|
|
41
53
|
</div>
|
|
42
54
|
<span v-if="column.operations" class="grid-operation-buttons" data-v="20250527">
|
|
43
55
|
<span
|
|
@@ -64,29 +76,27 @@
|
|
|
64
76
|
:command="beforeHandleCommand(buttonChild.props.code, row, rowIndex)"
|
|
65
77
|
:disabled="preventReclick"
|
|
66
78
|
>
|
|
67
|
-
{{
|
|
68
|
-
$escapeHtml(buttonChild.props.label)
|
|
69
|
-
}}
|
|
79
|
+
{{ $escapeHtml(buttonChild.props.label) }}
|
|
70
80
|
</el-dropdown-item>
|
|
71
81
|
</span>
|
|
72
82
|
</el-dropdown-menu>
|
|
73
83
|
</template>
|
|
74
84
|
</el-dropdown>
|
|
75
85
|
<component
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
86
|
+
:is="operation.props.customControl"
|
|
87
|
+
v-else-if="operation.props.customControl"
|
|
88
|
+
v-permission="operation.props.permission"
|
|
89
|
+
:key="column.prop + '_' + rowIndex + '_' + currentPage"
|
|
90
|
+
:disabled="true"
|
|
91
|
+
:row="pageGridData[rowIndex]"
|
|
92
|
+
:entity="pageGridData[rowIndex]"
|
|
93
|
+
:prop="column.prop"
|
|
94
|
+
:parent="parentFormData"
|
|
95
|
+
:row-index="rowIndex"
|
|
96
|
+
:grid-data="gridData"
|
|
97
|
+
:page-grid-data="pageGridData"
|
|
98
|
+
:current-page="currentPage"
|
|
99
|
+
@refresh-list="refreshList"
|
|
90
100
|
/>
|
|
91
101
|
<row-operation
|
|
92
102
|
v-else
|
|
@@ -96,6 +106,7 @@
|
|
|
96
106
|
:is-show="operation.isShow"
|
|
97
107
|
:label="operation.props.label ? operation.props.label : row[column.prop]"
|
|
98
108
|
:on-click="operation.onClick"
|
|
109
|
+
:operation="operation"
|
|
99
110
|
:operation-index="operationIndex"
|
|
100
111
|
:operation-setting="operation.props"
|
|
101
112
|
:row-index="rowIndex"
|
|
@@ -185,9 +196,9 @@
|
|
|
185
196
|
<span v-if="column.formatter && column.formatter.type === 'files'" type="primary">
|
|
186
197
|
<span
|
|
187
198
|
:id="column.prop + 'DomData' + rowIndex"
|
|
188
|
-
:style="
|
|
199
|
+
:style="textOverflow === 'newline' ? {} : { width: cellWidth + 'px' }"
|
|
189
200
|
:title="isShowOverflowTooltip ? $escapeHtml(getLabel(row)) : ''"
|
|
190
|
-
:class="
|
|
201
|
+
:class="textOverflow === 'newline' ? 'wrap-text' : 'ellipsis cell--span'"
|
|
191
202
|
>
|
|
192
203
|
<FsPreview
|
|
193
204
|
:entity="row"
|
|
@@ -220,9 +231,9 @@
|
|
|
220
231
|
<span
|
|
221
232
|
v-if="isShowOverflowTooltip"
|
|
222
233
|
:id="column.prop + 'DomData' + rowIndex"
|
|
223
|
-
:style="
|
|
234
|
+
:style="textOverflow === 'newline' ? {} : { width: cellWidth + 'px' }"
|
|
224
235
|
:title="getMyHyperLinkSetting(row, rowIndex).title"
|
|
225
|
-
:class="
|
|
236
|
+
:class="textOverflow === 'newline' ? 'wrap-text' : 'ellipsis cell--span'"
|
|
226
237
|
>{{ getMyHyperLinkSetting(row, rowIndex).label }}
|
|
227
238
|
<el-icon v-if="getMyHyperLinkSetting(row, rowIndex).icon">
|
|
228
239
|
<component :is="(getMyHyperLinkSetting(row), rowIndex.icon)" />
|
|
@@ -238,9 +249,9 @@
|
|
|
238
249
|
<span
|
|
239
250
|
v-else-if="isShowOverflowTooltip"
|
|
240
251
|
:id="column.prop + 'DomData' + rowIndex"
|
|
241
|
-
:style="
|
|
252
|
+
:style="textOverflow === 'newline' ? {} : { width: cellWidth + 'px' }"
|
|
242
253
|
:title="$escapeHtml(getLabel(row))"
|
|
243
|
-
:class="
|
|
254
|
+
:class="textOverflow === 'newline' ? 'wrap-text' : 'ellipsis cell--span'"
|
|
244
255
|
>{{ $escapeHtml(getLabel(row, rowIndex)) }}</span
|
|
245
256
|
>
|
|
246
257
|
<span v-else :id="column.prop + 'DomData' + rowIndex" :class="isShowForm ? '' : 'cell--span'">{{
|
|
@@ -252,9 +263,9 @@
|
|
|
252
263
|
<span
|
|
253
264
|
v-if="isShowOverflowTooltip"
|
|
254
265
|
:id="column.prop + 'DomData' + rowIndex"
|
|
255
|
-
:style="
|
|
266
|
+
:style="textOverflow === 'newline' ? {} : { width: cellWidth + 'px' }"
|
|
256
267
|
:title="$escapeHtml(getLabel(row))"
|
|
257
|
-
:class="
|
|
268
|
+
:class="textOverflow === 'newline' ? 'wrap-text' : 'ellipsis cell--span'"
|
|
258
269
|
>
|
|
259
270
|
<FsPreview
|
|
260
271
|
:entity="row"
|
|
@@ -275,9 +286,9 @@
|
|
|
275
286
|
<span v-else-if="column.formatter && column.formatter.type === 'files'">
|
|
276
287
|
<span
|
|
277
288
|
:id="column.prop + 'DomData' + rowIndex"
|
|
278
|
-
:style="
|
|
289
|
+
:style="textOverflow === 'newline' ? {} : { width: cellWidth + 'px' }"
|
|
279
290
|
:title="isShowOverflowTooltip ? $escapeHtml(getLabel(row)) : ''"
|
|
280
|
-
:class="
|
|
291
|
+
:class="textOverflow === 'newline' ? 'wrap-text' : 'ellipsis cell--span'"
|
|
281
292
|
>
|
|
282
293
|
<FsPreview
|
|
283
294
|
:entity="row"
|
|
@@ -301,9 +312,9 @@
|
|
|
301
312
|
<span
|
|
302
313
|
v-if="isShowOverflowTooltip"
|
|
303
314
|
:id="column.prop + 'DomData' + rowIndex"
|
|
304
|
-
:style="
|
|
315
|
+
:style="textOverflow === 'newline' ? {} : { width: cellWidth + 'px' }"
|
|
305
316
|
:title="$escapeHtml(getMyHyperLinkSetting(row, rowIndex).title)"
|
|
306
|
-
:class="
|
|
317
|
+
:class="textOverflow === 'newline' ? 'wrap-text' : 'ellipsis cell--span'"
|
|
307
318
|
>{{ $escapeHtml(getMyHyperLinkSetting(row, rowIndex).label) }}
|
|
308
319
|
<el-icon v-if="getMyHyperLinkSetting(row, rowIndex).icon">
|
|
309
320
|
<component :is="getMyHyperLinkSetting(row, rowIndex).icon" />
|
|
@@ -334,10 +345,9 @@
|
|
|
334
345
|
<span
|
|
335
346
|
v-else-if="isShowOverflowTooltip"
|
|
336
347
|
:id="column.prop + 'DomData' + rowIndex"
|
|
337
|
-
:style="
|
|
348
|
+
:style="textOverflow === 'newline' ? {} : { width: cellWidth + 'px' }"
|
|
338
349
|
:title="getLabel(row)"
|
|
339
|
-
:class="
|
|
340
|
-
style="white-space: pre"
|
|
350
|
+
:class="textOverflow === 'newline' ? 'wrap-text' : 'ellipsis cell--span'"
|
|
341
351
|
v-html="$escapeHtml(getLabel(row, rowIndex))"
|
|
342
352
|
/>
|
|
343
353
|
<span v-else :id="column.prop + 'DomData' + rowIndex" :class="isShowForm ? '' : 'cell--span'">{{
|
|
@@ -367,7 +377,8 @@ import {
|
|
|
367
377
|
isRequiredEdit,
|
|
368
378
|
getAdditionalParamMap,
|
|
369
379
|
getContentAlign,
|
|
370
|
-
getHeaderAlign
|
|
380
|
+
getHeaderAlign,
|
|
381
|
+
isEditOptionFunction
|
|
371
382
|
} from './utils'
|
|
372
383
|
import DynamicInput from './dynamic-input.vue'
|
|
373
384
|
import store from './store'
|
|
@@ -383,7 +394,9 @@ import FsPreview from '../../fs-preview'
|
|
|
383
394
|
import RichEditorViewer from '../../rich-editor/viewer.vue'
|
|
384
395
|
import GridIcon from './components/grid-icon.vue'
|
|
385
396
|
import { formatScanRuleSets } from './scan-util.ts'
|
|
386
|
-
import storeVuex from '../../../src/store'
|
|
397
|
+
import storeVuex from '../../../src/store'
|
|
398
|
+
import { isPromise } from '../../../src/utils/common-util'
|
|
399
|
+
import { ElMessage } from 'element-plus'
|
|
387
400
|
|
|
388
401
|
export default {
|
|
389
402
|
components: {
|
|
@@ -493,6 +506,13 @@ export default {
|
|
|
493
506
|
if (gridParams.lineEdit !== null && gridParams.lineEdit !== undefined) {
|
|
494
507
|
lineEdit = gridParams.lineEdit
|
|
495
508
|
}
|
|
509
|
+
let textOverflow = 'hidden'
|
|
510
|
+
if (gridParams.basicInfo && gridParams.basicInfo.textOverflow) {
|
|
511
|
+
textOverflow = gridParams.basicInfo.textOverflow
|
|
512
|
+
}
|
|
513
|
+
if (this.isShowForm) {
|
|
514
|
+
textOverflow = 'newline'
|
|
515
|
+
}
|
|
496
516
|
return {
|
|
497
517
|
selectRow: null,
|
|
498
518
|
that: this,
|
|
@@ -524,7 +544,8 @@ export default {
|
|
|
524
544
|
rowLinkConfigMapping: {},
|
|
525
545
|
requiredClass: '',
|
|
526
546
|
lineEdit,
|
|
527
|
-
options
|
|
547
|
+
options,
|
|
548
|
+
textOverflow
|
|
528
549
|
}
|
|
529
550
|
},
|
|
530
551
|
computed: {
|
|
@@ -544,6 +565,10 @@ export default {
|
|
|
544
565
|
// 手动触发编辑状态
|
|
545
566
|
isEditing() {
|
|
546
567
|
try {
|
|
568
|
+
// 是否符合编辑条件
|
|
569
|
+
if (!this.validateEditConditions()) {
|
|
570
|
+
return false
|
|
571
|
+
}
|
|
547
572
|
// 没权限
|
|
548
573
|
if (!this.hasEditPermission) return
|
|
549
574
|
// 检测到单选修改模式
|
|
@@ -556,7 +581,7 @@ export default {
|
|
|
556
581
|
return true
|
|
557
582
|
}
|
|
558
583
|
}
|
|
559
|
-
return this.row.$editing
|
|
584
|
+
return this.row.$editing
|
|
560
585
|
} catch (error) {
|
|
561
586
|
return false
|
|
562
587
|
}
|
|
@@ -585,7 +610,7 @@ export default {
|
|
|
585
610
|
'row.$editing': {
|
|
586
611
|
deep: true,
|
|
587
612
|
handler(newValue) {
|
|
588
|
-
if([false].includes(newValue)) {
|
|
613
|
+
if ([false].includes(newValue)) {
|
|
589
614
|
this.clearAllEditing()
|
|
590
615
|
}
|
|
591
616
|
}
|
|
@@ -779,8 +804,14 @@ export default {
|
|
|
779
804
|
}
|
|
780
805
|
},
|
|
781
806
|
// 手动编辑触发
|
|
782
|
-
onEditing(event) {
|
|
807
|
+
async onEditing(event) {
|
|
783
808
|
if (this.hasEditPermission && !this.isEditing) {
|
|
809
|
+
let canEdit = true
|
|
810
|
+
// 触发编辑前事件
|
|
811
|
+
if (isEditOptionFunction('beforeEdit', this.listCode)) {
|
|
812
|
+
canEdit = await this.triggerCustomEvent('beforeEdit')
|
|
813
|
+
}
|
|
814
|
+
if (!canEdit) return
|
|
784
815
|
event.stopPropagation()
|
|
785
816
|
|
|
786
817
|
const onEditing = () => {
|
|
@@ -792,13 +823,13 @@ export default {
|
|
|
792
823
|
setTimeout(this.focusBottomInput, 400)
|
|
793
824
|
}
|
|
794
825
|
|
|
795
|
-
if(!this.isFormSubTable) {
|
|
826
|
+
if (!this.isFormSubTable) {
|
|
796
827
|
// 非子表
|
|
797
828
|
if (storeVuex.getters.isConfigEditing) {
|
|
798
829
|
if (storeVuex.getters.isRowEditing(this.$rowGuId)) {
|
|
799
830
|
onEditing()
|
|
800
831
|
} else {
|
|
801
|
-
const isNext =
|
|
832
|
+
const isNext = this.isLastEditRowSaveMessage(this.listCode)
|
|
802
833
|
if (!isNext) return
|
|
803
834
|
}
|
|
804
835
|
// else {
|
|
@@ -806,10 +837,10 @@ export default {
|
|
|
806
837
|
// // this.confirmBeforeSwitchingRow(this.listCode, () => { })
|
|
807
838
|
// }
|
|
808
839
|
} else {
|
|
809
|
-
const isNext =
|
|
840
|
+
const isNext = this.isLastEditRowSaveMessage(this.listCode)
|
|
810
841
|
if (!isNext) return
|
|
811
842
|
// 如果不是子表 则 开启 编辑模式
|
|
812
|
-
this.editRow(this.rowIndex, this.listCode, true)
|
|
843
|
+
this.editRow(this.rowIndex, this.listCode, true, true)
|
|
813
844
|
onEditing()
|
|
814
845
|
}
|
|
815
846
|
} else {
|
|
@@ -825,26 +856,27 @@ export default {
|
|
|
825
856
|
this.$nextTick(() => {
|
|
826
857
|
try {
|
|
827
858
|
const getOffsetParent = (selectorAll) => {
|
|
828
|
-
return selectorAll
|
|
859
|
+
return selectorAll
|
|
860
|
+
? Array.from(this.$refs.dynamicRef.$el.querySelectorAll(selectorAll)).filter(
|
|
861
|
+
(control) => !!control.offsetParent
|
|
862
|
+
)
|
|
863
|
+
: []
|
|
829
864
|
}
|
|
830
865
|
|
|
831
|
-
let visibleFormControls = getOffsetParent('.el-select, .el-date-picker, .el-upload')
|
|
866
|
+
let visibleFormControls = getOffsetParent('.el-select, .el-date-picker, .el-upload')
|
|
832
867
|
if (visibleFormControls.length) {
|
|
833
868
|
visibleFormControls[0].click()
|
|
834
869
|
} else {
|
|
835
|
-
visibleFormControls = getOffsetParent('input, textarea')
|
|
870
|
+
visibleFormControls = getOffsetParent('input, textarea')
|
|
836
871
|
if (visibleFormControls.length > 0) {
|
|
837
872
|
const bottomControl = visibleFormControls.reduce((prev, current) => {
|
|
838
|
-
return current.getBoundingClientRect().bottom > prev.getBoundingClientRect().bottom
|
|
839
|
-
|
|
840
|
-
: prev;
|
|
841
|
-
});
|
|
873
|
+
return current.getBoundingClientRect().bottom > prev.getBoundingClientRect().bottom ? current : prev
|
|
874
|
+
})
|
|
842
875
|
if (['INPUT', 'TEXTAREA'].includes(bottomControl.tagName)) {
|
|
843
|
-
bottomControl.focus()
|
|
844
|
-
bottomControl.select()
|
|
876
|
+
bottomControl.focus()
|
|
877
|
+
bottomControl.select()
|
|
845
878
|
}
|
|
846
879
|
}
|
|
847
|
-
|
|
848
880
|
}
|
|
849
881
|
} catch (error) {
|
|
850
882
|
console.error(error)
|
|
@@ -1115,7 +1147,14 @@ export default {
|
|
|
1115
1147
|
}
|
|
1116
1148
|
},
|
|
1117
1149
|
isRequired(editing) {
|
|
1118
|
-
if (
|
|
1150
|
+
if (
|
|
1151
|
+
!this.isFormSubTable &&
|
|
1152
|
+
this.lineEdit &&
|
|
1153
|
+
this.lineEdit.editable &&
|
|
1154
|
+
this.isEditable &&
|
|
1155
|
+
editing &&
|
|
1156
|
+
this.column.validations
|
|
1157
|
+
) {
|
|
1119
1158
|
if (this.column.validations.indexOf('"required":true') > 0) {
|
|
1120
1159
|
return true
|
|
1121
1160
|
}
|
|
@@ -1170,11 +1209,65 @@ export default {
|
|
|
1170
1209
|
}
|
|
1171
1210
|
},
|
|
1172
1211
|
changeRequired(required) {
|
|
1173
|
-
this.requiredClass = required? 'm-requried' : ''
|
|
1212
|
+
this.requiredClass = required ? 'm-requried' : ''
|
|
1174
1213
|
},
|
|
1175
1214
|
openPageEvent(openPageParams) {
|
|
1176
1215
|
console.log('normalColumnContent----openPageEvent----', openPageParams)
|
|
1177
1216
|
this.$emit('open-page', openPageParams)
|
|
1217
|
+
},
|
|
1218
|
+
triggerCustomEvent(type) {
|
|
1219
|
+
return new Promise((resolve) => {
|
|
1220
|
+
const gridParams = store.get(this.listCode)
|
|
1221
|
+
const isSubTableShowPage = gridParams.isSubTableShowPage
|
|
1222
|
+
// 每页显示多少条
|
|
1223
|
+
const pageSize = gridParams.pagination && gridParams.pagination.pageSize
|
|
1224
|
+
let canEdit = gridParams.options.lineEditOptions[type].call(this, {
|
|
1225
|
+
gridData: isSubTableShowPage ? gridParams.subTableData : gridParams.gridData,
|
|
1226
|
+
listCode: this.listCode,
|
|
1227
|
+
entity: gridParams.gridData[this.rowIndex],
|
|
1228
|
+
row: gridParams.gridData[this.rowIndex],
|
|
1229
|
+
rowIndex: this.rowIndex,
|
|
1230
|
+
columns: gridParams.columns,
|
|
1231
|
+
isMobile: false,
|
|
1232
|
+
pageGridData: isSubTableShowPage ? gridParams.gridData : null,
|
|
1233
|
+
pageSize,
|
|
1234
|
+
additionalParamMap: getAdditionalParamMap(gridParams),
|
|
1235
|
+
pageContext: gridParams.pageContext,
|
|
1236
|
+
configureObj: gridParams.configureObj
|
|
1237
|
+
})
|
|
1238
|
+
if (isPromise(canEdit)) {
|
|
1239
|
+
canEdit.then((result) => {
|
|
1240
|
+
if (result === undefined || result === true) {
|
|
1241
|
+
resolve(true)
|
|
1242
|
+
} else {
|
|
1243
|
+
resolve(false)
|
|
1244
|
+
}
|
|
1245
|
+
})
|
|
1246
|
+
} else {
|
|
1247
|
+
if (canEdit === undefined || canEdit === true) {
|
|
1248
|
+
resolve(true)
|
|
1249
|
+
}
|
|
1250
|
+
resolve(false)
|
|
1251
|
+
}
|
|
1252
|
+
})
|
|
1253
|
+
},
|
|
1254
|
+
validateEditConditions() {
|
|
1255
|
+
if (this.controlConfig && this.controlConfig.editConditions?.length > 0) {
|
|
1256
|
+
const gridParams = store.get(this.listCode)
|
|
1257
|
+
const options = gridParams.options
|
|
1258
|
+
// 非流程表单时才验证编辑条件
|
|
1259
|
+
if (!options.isWorkflowEntity && options.validateEitConditions) {
|
|
1260
|
+
const canEdit = options.validateEitConditions({
|
|
1261
|
+
row: this.row,
|
|
1262
|
+
editConditions: this.controlConfig.editConditions,
|
|
1263
|
+
listCode: this.listCode
|
|
1264
|
+
})
|
|
1265
|
+
if (!canEdit) {
|
|
1266
|
+
return false
|
|
1267
|
+
}
|
|
1268
|
+
}
|
|
1269
|
+
}
|
|
1270
|
+
return true
|
|
1178
1271
|
}
|
|
1179
1272
|
},
|
|
1180
1273
|
emits: ['refresData', 'refresPortData', 'refresPortsData', 'refresMainTableFields', 'prohibitToEdit']
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<!--将@click改为@mousedown.native是因为操作列保存按钮时事件和input等组件的@blur冲突,导致保存需要保存两次,因为
|
|
3
3
|
@blur先于@click执行的,所以只会执行@blur,@click就失效了,@mousedown是先于@blur执行的-->
|
|
4
|
-
<span :style="myStyle">
|
|
4
|
+
<span class="table-operation-row-btn" :style="myStyle">
|
|
5
5
|
<template v-if="isShowButton()">
|
|
6
6
|
<el-tooltip :disabled="tooltipDisabled" :content="label" placement="top">
|
|
7
|
-
<template v-if="operationSettingData
|
|
7
|
+
<template v-if="operationSettingData?.permission">
|
|
8
8
|
<component
|
|
9
9
|
v-bind="operationSettingData"
|
|
10
10
|
:is="isElementType"
|
|
@@ -77,9 +77,13 @@ export default {
|
|
|
77
77
|
type: String,
|
|
78
78
|
default: null,
|
|
79
79
|
},
|
|
80
|
+
operation: {
|
|
81
|
+
type: Object,
|
|
82
|
+
default: () => ({}),
|
|
83
|
+
},
|
|
80
84
|
operationSetting: {
|
|
81
85
|
type: Object,
|
|
82
|
-
default:
|
|
86
|
+
default: () => ({}),
|
|
83
87
|
},
|
|
84
88
|
operationIndex: {
|
|
85
89
|
type: Number,
|
|
@@ -104,45 +108,58 @@ export default {
|
|
|
104
108
|
...mapGetters(['preventReclick']),
|
|
105
109
|
// 是否是保存按钮
|
|
106
110
|
isSaveRow() {
|
|
107
|
-
return
|
|
111
|
+
return ['lineEditSave', 'saveRow'].includes(this.operation?.eventName)
|
|
112
|
+
// return /^\s*function\s+saveRow*\s*\(/.test((this.onClick ?? ''))
|
|
108
113
|
},
|
|
109
114
|
// 是否是删除按钮
|
|
110
115
|
isDeleteRow() {
|
|
111
|
-
return
|
|
116
|
+
return ['lineEditDelete', 'deleteRow'].includes(this.operation?.eventName)
|
|
117
|
+
// return /^\s*function\s+deleteRow*\s*\(/.test((this.onClick ?? ''))
|
|
112
118
|
},
|
|
113
119
|
// 是否是修改按钮
|
|
114
120
|
isEditRow() {
|
|
115
|
-
return
|
|
121
|
+
return ['lineEditUpdate', 'editRow'].includes(this.operation?.eventName)
|
|
122
|
+
// return /^\s*function\s+editRow*\s*\(/.test((this.onClick ?? ''))
|
|
116
123
|
},
|
|
117
124
|
// 是否是取消按钮
|
|
118
125
|
isRestoreRow() {
|
|
119
|
-
return
|
|
126
|
+
return ['restoreEdit', 'restoreRow'].includes(this.operation?.eventName)
|
|
127
|
+
// return /^\s*function\s+restoreRow*\s*\(/.test((this.onClick ?? ''))
|
|
120
128
|
},
|
|
121
129
|
// 前置图标
|
|
122
130
|
prefixIcon() {
|
|
123
131
|
if (this.suffixIcon) return undefined
|
|
124
|
-
if(['left', true].includes(this.operationSettingData.iconPosition) || this.operationSetting.iconValue)
|
|
132
|
+
if(['left', true, ''].includes(this.operationSettingData.iconPosition) || this.operationSetting.iconValue) {
|
|
133
|
+
if(this.operationSetting.iconValue){
|
|
134
|
+
// 兼容非彩色图标默认按钮样式
|
|
135
|
+
if(this.isSaveRow && this.operationSetting.iconValue === 'amb-icon-save') return 'amb-color-icon-save'
|
|
136
|
+
if(this.isDeleteRow && this.operationSetting.iconValue === 'amb-icon-del') return 'amb-color-icon-del'
|
|
137
|
+
if(this.isEditRow && this.operationSetting.iconValue === 'amb-icon-edit') return 'amb-color-icon-edit'
|
|
138
|
+
if(this.isRestoreRow && this.operationSetting.iconValue === 'amb-icon-no-edit') return 'amb-color-icon-no-edit'
|
|
139
|
+
}
|
|
140
|
+
return this.operationSetting.iconValue
|
|
141
|
+
}
|
|
125
142
|
if (this.isTextIcon) {
|
|
126
143
|
// 当没有初始图标,根据事件类型 绑定图标
|
|
127
|
-
if(this.isSaveRow) return 'amb-icon-save'
|
|
128
|
-
if(this.isDeleteRow) return 'amb-icon-del'
|
|
129
|
-
if(this.isEditRow) return 'amb-icon-edit'
|
|
130
|
-
if(this.isRestoreRow) return 'amb-icon-no-edit'
|
|
144
|
+
if(this.isSaveRow) return 'amb-color-icon-save'
|
|
145
|
+
if(this.isDeleteRow) return 'amb-color-icon-del'
|
|
146
|
+
if(this.isEditRow) return 'amb-color-icon-edit'
|
|
147
|
+
if(this.isRestoreRow) return 'amb-color-icon-no-edit'
|
|
131
148
|
}
|
|
132
149
|
return undefined
|
|
133
150
|
},
|
|
134
151
|
// 后置图标
|
|
135
152
|
suffixIcon() {
|
|
136
|
-
if(['right'].includes(this.
|
|
153
|
+
if(['right'].includes(this.operationSetting.iconPosition)) return this.operationSetting.iconValue
|
|
137
154
|
return undefined
|
|
138
155
|
},
|
|
139
156
|
// 是否显示文字按钮 > 图标模式
|
|
140
157
|
isTextIcon() {
|
|
141
158
|
if (this.isTableBtnLinkShow) {
|
|
142
|
-
if (this.
|
|
159
|
+
if (this.operationSetting.isTextIcon === undefined) {
|
|
143
160
|
return this.isSaveRow || this.isDeleteRow || this.isEditRow || this.isRestoreRow
|
|
144
161
|
}
|
|
145
|
-
return this.
|
|
162
|
+
return this.operationSetting.isTextIcon
|
|
146
163
|
} else {
|
|
147
164
|
return false
|
|
148
165
|
}
|
|
@@ -157,14 +174,14 @@ export default {
|
|
|
157
174
|
},
|
|
158
175
|
// 是否自动开启表格 按钮 转 文字按钮
|
|
159
176
|
isTableBtnLinkShow() {
|
|
160
|
-
if (this.operationSetting
|
|
177
|
+
if (this.operationSetting?.text) return true
|
|
161
178
|
if (this.isTableBtnLink && this.elementType === 'el-button') {
|
|
162
|
-
return [this.operationSetting
|
|
179
|
+
return [this.operationSetting?.text, this.operationSetting?.plain, this.operationSetting?.round].every(v => v === undefined)
|
|
163
180
|
}
|
|
164
181
|
return false
|
|
165
182
|
},
|
|
166
183
|
operationSettingData() {
|
|
167
|
-
const dataList = { ...this.operationSetting }
|
|
184
|
+
const dataList = { ...(this.operationSetting ?? {}) }
|
|
168
185
|
if (this.isTableBtnLinkShow) {
|
|
169
186
|
dataList.underline = false
|
|
170
187
|
delete dataList.text
|