agilebuilder-ui 1.1.38-tmp1 → 1.1.39-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-d84fc7c6.js → 401-994c9198.js} +1 -1
- package/lib/{404-b47ec5c0.js → 404-529e9d04.js} +1 -1
- package/lib/{iframe-page-21dddc9b.js → iframe-page-8416d7e7.js} +1 -1
- package/lib/{index-4de073b5.js → index-f2020c47.js} +14108 -14058
- package/lib/super-ui.css +1 -1
- package/lib/super-ui.js +1 -1
- package/lib/super-ui.umd.cjs +63 -63
- package/lib/{tab-content-iframe-index-f3419de1.js → tab-content-iframe-index-b9c23a8b.js} +1 -1
- package/lib/{tab-content-index-034f8326.js → tab-content-index-289ae3af.js} +1 -1
- package/lib/{tache-subprocess-history-53fa49b9.js → tache-subprocess-history-3ad4baa1.js} +1 -1
- package/package.json +1 -1
- package/packages/department-tree-inline/src/department-single-tree-inline.vue +3 -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 +2 -1
- package/packages/department-user-tree-inline/src/department-user-tree-multi-service.js +0 -1
- package/packages/department-user-tree-mobile/src/department-user-tree-inline-app.vue +3 -1
- package/packages/fs-preview/src/fs-preview.vue +44 -7
- package/packages/fs-upload-list/src/fs-upload-list.vue +50 -24
- package/packages/fs-upload-new/src/fs-button-upload.vue +12 -0
- package/packages/fs-upload-new/src/fs-drag-upload.vue +12 -0
- package/packages/fs-upload-new/src/fs-preview-new.vue +24 -5
- package/packages/fs-upload-new/src/fs-upload-new.vue +20 -0
- package/packages/organization-input/src/organization-input.vue +3 -3
- package/packages/super-grid/src/components/mobile-table-card.jsx +0 -1
- package/packages/super-grid/src/custom-formatter.js +1 -1
- package/packages/super-grid/src/dynamic-input.vue +16 -22
- package/packages/super-grid/src/normal-column-content.vue +25 -13
- package/packages/super-grid/src/row-operation.vue +13 -9
- package/packages/super-grid/src/search-form-item.vue +75 -17
- package/packages/super-grid/src/search-form-mobile.vue +5 -0
- package/packages/super-grid/src/search-form-ordinarySearch.vue +5 -0
- package/packages/super-grid/src/search-methods.js +3 -1
- package/packages/utils/organization.ts +56 -40
- package/packages/workflow-history-list/src/workflow-history-list.vue +41 -3
- package/src/directives/permission/permission.js +7 -1
- package/src/i18n/langs/cn.js +10 -3
- package/src/i18n/langs/en.js +10 -3
- package/src/utils/file-util.ts +12 -4
- package/src/utils/jump-page-utils.js +1 -0
- package/src/utils/permission.js +2 -2
- package/src/utils/permissionAuth.js +4 -2
- package/src/utils/util.js +19 -0
- package/src/views/dsc-component/Sidebar/Item.vue +18 -7
- package/src/views/dsc-component/Sidebar/SidebarItem.vue +10 -2
- package/src/views/dsc-component/Sidebar/index.vue +0 -2
- package/src/views/layout/components/Menubar/Item.vue +20 -3
- package/src/views/layout/components/Menubar/SidebarItem.vue +46 -18
|
@@ -96,6 +96,7 @@
|
|
|
96
96
|
:grid-data="gridData"
|
|
97
97
|
:page-grid-data="pageGridData"
|
|
98
98
|
:current-page="currentPage"
|
|
99
|
+
:custom-params="controlConfig ? controlConfig.customParams : null"
|
|
99
100
|
@refresh-list="refreshList"
|
|
100
101
|
/>
|
|
101
102
|
<row-operation
|
|
@@ -106,6 +107,7 @@
|
|
|
106
107
|
:is-show="operation.isShow"
|
|
107
108
|
:label="operation.props.label ? operation.props.label : row[column.prop]"
|
|
108
109
|
:on-click="operation.onClick"
|
|
110
|
+
:operation="operation"
|
|
109
111
|
:operation-index="operationIndex"
|
|
110
112
|
:operation-setting="operation.props"
|
|
111
113
|
:event-name="operation.eventName"
|
|
@@ -133,6 +135,7 @@
|
|
|
133
135
|
:additional-param-map="additionalParamMap"
|
|
134
136
|
:additional-settings="additionalSettings"
|
|
135
137
|
:page-context="options?.pageContext"
|
|
138
|
+
:custom-params="controlConfig ? controlConfig.customParams : null"
|
|
136
139
|
/>
|
|
137
140
|
</span>
|
|
138
141
|
<!-- 自定义格式的时候 -->
|
|
@@ -170,6 +173,7 @@
|
|
|
170
173
|
:component-id="componentId"
|
|
171
174
|
:additional-settings="additionalSettings"
|
|
172
175
|
:page-context="options?.pageContext"
|
|
176
|
+
:custom-params="controlConfig ? controlConfig.customParams : null"
|
|
173
177
|
@prohibitToEdit="prohibitToEdit"
|
|
174
178
|
@refresh-list="refreshList"
|
|
175
179
|
/></span>
|
|
@@ -235,15 +239,17 @@
|
|
|
235
239
|
:title="getMyHyperLinkSetting(row, rowIndex).title"
|
|
236
240
|
:class="textOverflow === 'newline' ? 'wrap-text' : 'ellipsis cell--span'"
|
|
237
241
|
>{{ getMyHyperLinkSetting(row, rowIndex).label }}
|
|
238
|
-
<
|
|
239
|
-
|
|
240
|
-
|
|
242
|
+
<SuperIcon
|
|
243
|
+
v-if="getMyHyperLinkSetting(row, rowIndex).icon"
|
|
244
|
+
:iconValue="getMyHyperLinkSetting(row, rowIndex).icon"
|
|
245
|
+
></SuperIcon>
|
|
241
246
|
</span>
|
|
242
247
|
<span v-else :id="column.prop + 'DomData' + rowIndex" :class="isShowForm ? '' : 'cell--span'"
|
|
243
248
|
>{{ getMyHyperLinkSetting(row, rowIndex).label }}
|
|
244
|
-
<
|
|
245
|
-
|
|
246
|
-
|
|
249
|
+
<SuperIcon
|
|
250
|
+
v-if="getMyHyperLinkSetting(row, rowIndex).icon"
|
|
251
|
+
:iconValue="getMyHyperLinkSetting(row, rowIndex).icon"
|
|
252
|
+
></SuperIcon>
|
|
247
253
|
</span>
|
|
248
254
|
</el-link>
|
|
249
255
|
<span
|
|
@@ -316,15 +322,17 @@
|
|
|
316
322
|
:title="$escapeHtml(getMyHyperLinkSetting(row, rowIndex).title)"
|
|
317
323
|
:class="textOverflow === 'newline' ? 'wrap-text' : 'ellipsis cell--span'"
|
|
318
324
|
>{{ $escapeHtml(getMyHyperLinkSetting(row, rowIndex).label) }}
|
|
319
|
-
<
|
|
320
|
-
|
|
321
|
-
|
|
325
|
+
<SuperIcon
|
|
326
|
+
v-if="getMyHyperLinkSetting(row, rowIndex).icon"
|
|
327
|
+
:iconValue="getMyHyperLinkSetting(row, rowIndex).icon"
|
|
328
|
+
></SuperIcon>
|
|
322
329
|
</span>
|
|
323
330
|
<span v-else :id="column.prop + 'DomData' + rowIndex" :class="isShowForm ? '' : 'cell--span'"
|
|
324
331
|
>{{ $escapeHtml(getMyHyperLinkSetting(row, rowIndex).label) }}
|
|
325
|
-
<
|
|
326
|
-
|
|
327
|
-
|
|
332
|
+
<SuperIcon
|
|
333
|
+
v-if="getMyHyperLinkSetting(row, rowIndex).icon"
|
|
334
|
+
:iconValue="getMyHyperLinkSetting(row, rowIndex).icon"
|
|
335
|
+
></SuperIcon>
|
|
328
336
|
</span>
|
|
329
337
|
</el-link>
|
|
330
338
|
<!-- 富文本 -->
|
|
@@ -387,7 +395,7 @@ import customFormatter from './custom-formatter'
|
|
|
387
395
|
import RowOperation from './row-operation.vue'
|
|
388
396
|
import apis from './apis'
|
|
389
397
|
import { mapGetters } from 'vuex'
|
|
390
|
-
import { getEntityFieldValue, getParentObjectUtil } from '../../../src/utils/util'
|
|
398
|
+
import { getEntityFieldValue, getParentObjectUtil, formatCustomParams } from '../../../src/utils/util'
|
|
391
399
|
import ViewImageDialog from './view-image-dialog.vue'
|
|
392
400
|
import eventBus from './eventBus'
|
|
393
401
|
import FsPreview from '../../fs-preview'
|
|
@@ -700,6 +708,10 @@ export default {
|
|
|
700
708
|
this.requiredClass = this.isRequired(this.row.$editing) ? 'm-requried' : ''
|
|
701
709
|
},
|
|
702
710
|
mounted() {
|
|
711
|
+
if (this.controlConfig) {
|
|
712
|
+
const gridParams = store.get(this.listCode)
|
|
713
|
+
formatCustomParams(this.controlConfig.customParams, gridParams.pageContext, this.row)
|
|
714
|
+
}
|
|
703
715
|
// 监听取消自定义编辑事件
|
|
704
716
|
eventBus.$on('clearTableAllStartEditing', () => {
|
|
705
717
|
this.clearAllEditing()
|
|
@@ -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,
|
|
@@ -148,16 +152,16 @@ export default {
|
|
|
148
152
|
},
|
|
149
153
|
// 后置图标
|
|
150
154
|
suffixIcon() {
|
|
151
|
-
if(['right'].includes(this.
|
|
155
|
+
if(['right'].includes(this.operationSetting.iconPosition)) return this.operationSetting.iconValue
|
|
152
156
|
return undefined
|
|
153
157
|
},
|
|
154
158
|
// 是否显示文字按钮 > 图标模式
|
|
155
159
|
isTextIcon() {
|
|
156
160
|
if (this.isTableBtnLinkShow) {
|
|
157
|
-
if (this.
|
|
161
|
+
if (this.operationSetting.isTextIcon === undefined) {
|
|
158
162
|
return this.isSaveRow || this.isDeleteRow || this.isEditRow || this.isRestoreRow
|
|
159
163
|
}
|
|
160
|
-
return this.
|
|
164
|
+
return this.operationSetting.isTextIcon
|
|
161
165
|
} else {
|
|
162
166
|
return false
|
|
163
167
|
}
|
|
@@ -172,14 +176,14 @@ export default {
|
|
|
172
176
|
},
|
|
173
177
|
// 是否自动开启表格 按钮 转 文字按钮
|
|
174
178
|
isTableBtnLinkShow() {
|
|
175
|
-
if (this.operationSetting
|
|
179
|
+
if (this.operationSetting?.text) return true
|
|
176
180
|
if (this.isTableBtnLink && this.elementType === 'el-button') {
|
|
177
|
-
return [this.operationSetting
|
|
181
|
+
return [this.operationSetting?.text, this.operationSetting?.plain, this.operationSetting?.round].every(v => v === undefined)
|
|
178
182
|
}
|
|
179
183
|
return false
|
|
180
184
|
},
|
|
181
185
|
operationSettingData() {
|
|
182
|
-
const dataList = { ...this.operationSetting }
|
|
186
|
+
const dataList = { ...(this.operationSetting ?? {}) }
|
|
183
187
|
if (this.isTableBtnLinkShow) {
|
|
184
188
|
dataList.underline = false
|
|
185
189
|
delete dataList.text
|
|
@@ -148,26 +148,30 @@
|
|
|
148
148
|
>
|
|
149
149
|
<el-option v-for="item in column.valueSet" :key="item.value" :label="item.label" :value="item.value" />
|
|
150
150
|
</el-select>
|
|
151
|
-
<
|
|
151
|
+
<template
|
|
152
152
|
v-else-if="
|
|
153
153
|
column.componentType &&
|
|
154
154
|
(column.componentType === 'multiselect' || column.componentType === 'select') &&
|
|
155
155
|
isDynamicDataSourceSource(column)
|
|
156
156
|
"
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
157
|
+
>
|
|
158
|
+
<dynamic-source-select
|
|
159
|
+
v-model:value="searchForm[column.prop]"
|
|
160
|
+
:allow-create="true"
|
|
161
|
+
:base-props="{
|
|
162
|
+
multiple: column.componentType === 'multiselect' ? true : false
|
|
163
|
+
}"
|
|
164
|
+
:entity="searchForm"
|
|
165
|
+
:filterable="true"
|
|
166
|
+
:is-join-table="isJoinTable"
|
|
167
|
+
:list-code="code"
|
|
168
|
+
:list-toolbar-form-data="listToolbarFormData"
|
|
169
|
+
:options="getDynamicDataSourceOptions(column)"
|
|
170
|
+
:table-name="tableName"
|
|
171
|
+
@change="multiselectChange"
|
|
172
|
+
@input="setValueToModelProp(column.prop, $event)"
|
|
173
|
+
/>
|
|
174
|
+
</template>
|
|
171
175
|
<!--
|
|
172
176
|
<el-input-number
|
|
173
177
|
v-else-if="column.componentType && column.componentType==='inputNumber'"
|
|
@@ -209,7 +213,18 @@
|
|
|
209
213
|
:style="column.searchControlWidth"
|
|
210
214
|
@keyup.enter="submitForm('searchForm')"
|
|
211
215
|
@input="setValueToModelProp(column.prop, $event)"
|
|
212
|
-
|
|
216
|
+
@focus="showEmpty()"
|
|
217
|
+
@blur="hiddenEmpty()"
|
|
218
|
+
>
|
|
219
|
+
<template #suffix>
|
|
220
|
+
<el-tooltip
|
|
221
|
+
:content="$t('superGrid.searchEmpty')"
|
|
222
|
+
placement="bottom"
|
|
223
|
+
>
|
|
224
|
+
<el-checkbox v-if="isShowEmtpty" v-model="checkedEmpty" @change="checkEmptyChange"/>
|
|
225
|
+
</el-tooltip>
|
|
226
|
+
</template>
|
|
227
|
+
</el-input>
|
|
213
228
|
</el-form-item>
|
|
214
229
|
</template>
|
|
215
230
|
|
|
@@ -277,7 +292,9 @@ export default {
|
|
|
277
292
|
dataTwo: null,
|
|
278
293
|
moduleConfig: {},
|
|
279
294
|
dateVal: this.getFormItemValue(this.column.prop),
|
|
280
|
-
controlConfig: getControlConfig(this.column)
|
|
295
|
+
controlConfig: getControlConfig(this.column),
|
|
296
|
+
isShowEmtptyFlag: false,
|
|
297
|
+
// checkedEmpty: false,
|
|
281
298
|
}
|
|
282
299
|
},
|
|
283
300
|
computed: {
|
|
@@ -287,6 +304,23 @@ export default {
|
|
|
287
304
|
return data.listToolbarFormData
|
|
288
305
|
}
|
|
289
306
|
return null
|
|
307
|
+
},
|
|
308
|
+
isShowEmtpty() {
|
|
309
|
+
return this.isShowEmtptyFlag
|
|
310
|
+
},
|
|
311
|
+
checkedEmpty(){
|
|
312
|
+
if(this.column._emptyValue && this.column._emptyValue === '#blank#'){
|
|
313
|
+
return true
|
|
314
|
+
}
|
|
315
|
+
if(this.column._resetValue || this.column._resetValue === undefined){
|
|
316
|
+
if(this.column._resetValue){
|
|
317
|
+
this.column._resetValue = undefined
|
|
318
|
+
this.isShowEmtptyFlag = false
|
|
319
|
+
}
|
|
320
|
+
return false
|
|
321
|
+
} else {
|
|
322
|
+
return true
|
|
323
|
+
}
|
|
290
324
|
}
|
|
291
325
|
},
|
|
292
326
|
created() {
|
|
@@ -471,6 +505,30 @@ export default {
|
|
|
471
505
|
} else {
|
|
472
506
|
return ['00:00:00']
|
|
473
507
|
}
|
|
508
|
+
},
|
|
509
|
+
multiselectChange(arr, selectedItem) {
|
|
510
|
+
if (arr.indexOf('saveAll') !== -1) {
|
|
511
|
+
if (this.searchForm[this.column.prop] && typeof this.searchForm[this.column.prop] === 'string') {
|
|
512
|
+
this.searchForm[this.column.prop] = this.searchForm[this.column.prop].split(',')
|
|
513
|
+
}
|
|
514
|
+
} else {
|
|
515
|
+
this.searchForm[this.column.prop] = arr
|
|
516
|
+
}
|
|
517
|
+
},
|
|
518
|
+
showEmpty(){
|
|
519
|
+
this.isShowEmtptyFlag = true
|
|
520
|
+
},
|
|
521
|
+
hiddenEmpty(){
|
|
522
|
+
if(!this.checkedEmpty){
|
|
523
|
+
this.isShowEmtptyFlag = false
|
|
524
|
+
}
|
|
525
|
+
},
|
|
526
|
+
checkEmptyChange(newValue) {
|
|
527
|
+
if(newValue){
|
|
528
|
+
this.column._emptyValue='#blank#'
|
|
529
|
+
} else {
|
|
530
|
+
this.column._emptyValue=undefined
|
|
531
|
+
}
|
|
474
532
|
}
|
|
475
533
|
},
|
|
476
534
|
emits: ['submit-form']
|
|
@@ -157,6 +157,11 @@ export default {
|
|
|
157
157
|
}
|
|
158
158
|
this.setDefaultQueryValue(column, this.searchForm)
|
|
159
159
|
}
|
|
160
|
+
// 清空空值状态
|
|
161
|
+
if(column._emptyValue){
|
|
162
|
+
column._emptyValue=undefined
|
|
163
|
+
column._resetValue=true
|
|
164
|
+
}
|
|
160
165
|
})
|
|
161
166
|
// 取消当前选中的条件列表的信息
|
|
162
167
|
// this.$refs.searchConditionList.editConditionId = null
|
|
@@ -162,6 +162,11 @@ export default {
|
|
|
162
162
|
}
|
|
163
163
|
this.setDefaultQueryValue(column, this.searchForm)
|
|
164
164
|
}
|
|
165
|
+
// 清空空值状态
|
|
166
|
+
if(column._emptyValue){
|
|
167
|
+
column._emptyValue=undefined
|
|
168
|
+
column._resetValue=true
|
|
169
|
+
}
|
|
165
170
|
})
|
|
166
171
|
// 取消当前选中的条件列表的信息
|
|
167
172
|
// this.$refs.searchConditionList.editConditionId = null
|
|
@@ -27,6 +27,7 @@ const searchMethods = {
|
|
|
27
27
|
param.formatter = column.formatter
|
|
28
28
|
? JSON.parse(JSON.stringify(column.formatter))
|
|
29
29
|
: column.formatter
|
|
30
|
+
param.isEmptyValue= column._emptyValue && column._emptyValue === '#blank#'?true:false
|
|
30
31
|
const values = this.getFormItemValue(column.prop)
|
|
31
32
|
if (column.dataType === 'DATE' || column.dataType === 'TIME') {
|
|
32
33
|
// 日期 或 时间类型
|
|
@@ -440,10 +441,11 @@ const searchMethods = {
|
|
|
440
441
|
num++
|
|
441
442
|
})
|
|
442
443
|
} else if (
|
|
444
|
+
param.isEmptyValue || (
|
|
443
445
|
typeof value !== 'undefined' &&
|
|
444
446
|
value !== '' &&
|
|
445
447
|
value !== null &&
|
|
446
|
-
!Array.isArray(value)
|
|
448
|
+
!Array.isArray(value))
|
|
447
449
|
) {
|
|
448
450
|
// 不是数组
|
|
449
451
|
param.propValue = value
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
// 将选中的部门节点添加到结果集合中
|
|
2
|
-
export function addSelectedUserInfo
|
|
2
|
+
export function addSelectedUserInfo(selectNodeInfo, userData, containBranch) {
|
|
3
3
|
if (selectNodeInfo.userIds.indexOf(userData.id) < 0) {
|
|
4
4
|
// 表示集合中不存在该用户
|
|
5
5
|
selectNodeInfo.userIds.push(userData.id)
|
|
@@ -28,7 +28,7 @@ export function addSelectedUserInfo (selectNodeInfo, userData, containBranch) {
|
|
|
28
28
|
selectNodeInfo.userEnNames.push(userData.enName ? userData.enName : '')
|
|
29
29
|
}
|
|
30
30
|
}
|
|
31
|
-
export function packageSelectResult
|
|
31
|
+
export function packageSelectResult(user, containBranch) {
|
|
32
32
|
let name = user.name
|
|
33
33
|
if (user.enName && user.enName.trim() !== '') {
|
|
34
34
|
name = name + '(' + user.enName + ')'
|
|
@@ -47,29 +47,42 @@ export function packageSelectResult (user, containBranch) {
|
|
|
47
47
|
containBranch: containBranch,
|
|
48
48
|
user: user,
|
|
49
49
|
enName: user.enName ? user.enName : '',
|
|
50
|
-
subCompanyName: user.subCompanyName
|
|
50
|
+
subCompanyName: user.subCompanyName,
|
|
51
|
+
divisionManager: user.divisionManager,
|
|
52
|
+
divisionManagerName: user.divisionManagerName
|
|
51
53
|
}
|
|
52
54
|
// 表示是勾选单选按钮或 选中树节点
|
|
53
55
|
return selectNodeInfo
|
|
54
56
|
}
|
|
55
57
|
// 根据指定用户信息获得用户集合
|
|
56
|
-
function getSelectUsers
|
|
58
|
+
function getSelectUsers(searchField, selectUserInfo, separator) {
|
|
57
59
|
return new Promise((resolve, reject) => {
|
|
58
60
|
if (!searchField) {
|
|
59
61
|
resolve([])
|
|
60
62
|
} else if (!selectUserInfo) {
|
|
61
63
|
resolve([])
|
|
62
64
|
} else {
|
|
63
|
-
window['$vueApp'].config.globalProperties.$http
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
65
|
+
window['$vueApp'].config.globalProperties.$http
|
|
66
|
+
.get(
|
|
67
|
+
window['$vueApp'].config.globalProperties.baseAPI +
|
|
68
|
+
'/component/organization-trees/select-users-mobile?searchField=' +
|
|
69
|
+
searchField +
|
|
70
|
+
'&selectUserInfo=' +
|
|
71
|
+
selectUserInfo +
|
|
72
|
+
'&separator=' +
|
|
73
|
+
separator
|
|
74
|
+
)
|
|
75
|
+
.then((users) => {
|
|
76
|
+
resolve(users)
|
|
77
|
+
})
|
|
78
|
+
.catch((error) => {
|
|
79
|
+
reject(error)
|
|
80
|
+
})
|
|
68
81
|
}
|
|
69
82
|
})
|
|
70
83
|
}
|
|
71
84
|
// 部门人员树选中了组织结构树的根节点
|
|
72
|
-
function packageAllUser
|
|
85
|
+
function packageAllUser() {
|
|
73
86
|
// 表示集合中不存在该用户,则封装该用户
|
|
74
87
|
const tenantNodeId = -1
|
|
75
88
|
var allUser = {
|
|
@@ -79,7 +92,7 @@ function packageAllUser () {
|
|
|
79
92
|
return allUser
|
|
80
93
|
}
|
|
81
94
|
// 工作组人员树选中了组织结构树的根节点
|
|
82
|
-
function packageAllWgUser
|
|
95
|
+
function packageAllWgUser() {
|
|
83
96
|
// 表示集合中不存在该用户,则封装该用户
|
|
84
97
|
const tenantNodeId = -1
|
|
85
98
|
var allUser = {
|
|
@@ -88,7 +101,7 @@ function packageAllWgUser () {
|
|
|
88
101
|
}
|
|
89
102
|
return allUser
|
|
90
103
|
}
|
|
91
|
-
export function initSelectUsers
|
|
104
|
+
export function initSelectUsers(searchField, selectUserInfo, separator) {
|
|
92
105
|
return new Promise((resolve, reject) => {
|
|
93
106
|
const selectDepts = []
|
|
94
107
|
if (selectUserInfo) {
|
|
@@ -101,11 +114,13 @@ export function initSelectUsers (searchField, selectUserInfo, separator) {
|
|
|
101
114
|
resolve(selectDepts)
|
|
102
115
|
} else {
|
|
103
116
|
// 表示不是选择的所有用户
|
|
104
|
-
getSelectUsers(searchField, selectUserInfo, separator)
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
117
|
+
getSelectUsers(searchField, selectUserInfo, separator)
|
|
118
|
+
.then((users) => {
|
|
119
|
+
resolve(users)
|
|
120
|
+
})
|
|
121
|
+
.catch((error) => {
|
|
122
|
+
reject(error)
|
|
123
|
+
})
|
|
109
124
|
}
|
|
110
125
|
} else {
|
|
111
126
|
resolve(selectDepts)
|
|
@@ -113,9 +128,8 @@ export function initSelectUsers (searchField, selectUserInfo, separator) {
|
|
|
113
128
|
})
|
|
114
129
|
}
|
|
115
130
|
|
|
116
|
-
|
|
117
131
|
// import {getLanguageWithLocale} from '../../../src/utils/util'
|
|
118
|
-
export function resizeScrollTargetHeightUtil
|
|
132
|
+
export function resizeScrollTargetHeightUtil() {
|
|
119
133
|
const pagePadding = 16
|
|
120
134
|
let height = window.innerHeight - pagePadding
|
|
121
135
|
const header = document.querySelector('.el-page-header')
|
|
@@ -129,29 +143,31 @@ export function resizeScrollTargetHeightUtil () {
|
|
|
129
143
|
return height
|
|
130
144
|
}
|
|
131
145
|
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
146
|
+
export function getUserMainDeptName(user) {
|
|
147
|
+
let deptShowName = ''
|
|
148
|
+
if (user && user.data) {
|
|
149
|
+
const userData = JSON.parse(user.data)
|
|
150
|
+
if (
|
|
151
|
+
userData.mainDepartmentEnName &&
|
|
152
|
+
userData.mainDepartmentEnName !== '' &&
|
|
153
|
+
window['$locale'] &&
|
|
154
|
+
window['$locale'] !== 'cn'
|
|
155
|
+
) {
|
|
156
|
+
deptShowName = userData.mainDepartmentEnName
|
|
157
|
+
} else {
|
|
158
|
+
if (userData.mainDepartmentName && userData.mainDepartmentName !== '') {
|
|
159
|
+
deptShowName = userData.mainDepartmentName
|
|
160
|
+
}
|
|
142
161
|
}
|
|
143
162
|
}
|
|
144
|
-
|
|
145
|
-
return deptShowName
|
|
163
|
+
return deptShowName
|
|
146
164
|
}
|
|
147
165
|
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
deptShowName
|
|
155
|
-
}
|
|
156
|
-
return deptShowName
|
|
166
|
+
export function getDeptNamePath(dept) {
|
|
167
|
+
let deptShowName = ''
|
|
168
|
+
if (dept && dept.data) {
|
|
169
|
+
const deptData = JSON.parse(dept.data)
|
|
170
|
+
deptShowName = deptData.namePath
|
|
171
|
+
}
|
|
172
|
+
return deptShowName
|
|
157
173
|
}
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
row-key="uuid"
|
|
16
16
|
style="width: 100%"
|
|
17
17
|
>
|
|
18
|
-
<el-table-column :label="$t('workflowHistoryList.index')" align="
|
|
18
|
+
<el-table-column :label="$t('workflowHistoryList.index')" align="center" width="80">
|
|
19
19
|
<template v-slot="scope">
|
|
20
20
|
{{ scope.$index + 1 }}
|
|
21
21
|
</template>
|
|
@@ -35,13 +35,13 @@
|
|
|
35
35
|
}}</span>
|
|
36
36
|
</template>
|
|
37
37
|
</el-table-column>
|
|
38
|
-
<el-table-column :label="$t('workflowHistoryList.operator')" align="left" width="
|
|
38
|
+
<el-table-column :label="$t('workflowHistoryList.operator')" align="left" width="120">
|
|
39
39
|
<template v-slot="scope">
|
|
40
40
|
<span v-if="scope.row.historyType && scope.row.historyType === 'PROCESS_END'" />
|
|
41
41
|
<span v-else>{{ scope.row.creatorName }}</span>
|
|
42
42
|
</template>
|
|
43
43
|
</el-table-column>
|
|
44
|
-
<el-table-column :label="$t('workflowHistoryList.operatorLg')" align="left" width="
|
|
44
|
+
<el-table-column :label="$t('workflowHistoryList.operatorLg')" align="left" width="160">
|
|
45
45
|
<template v-slot="scope">
|
|
46
46
|
<span v-if="scope.row.historyType && scope.row.historyType === 'PROCESS_END'" />
|
|
47
47
|
<span v-else>{{ scope.row.creator }}</span>
|
|
@@ -59,6 +59,28 @@
|
|
|
59
59
|
<span v-else>{{ scope.row.formatCreatedTime }}</span>
|
|
60
60
|
</template>
|
|
61
61
|
</el-table-column>
|
|
62
|
+
<el-table-column :label="$t('workflowHistoryList.taskState')" align="left" width="100">
|
|
63
|
+
<template v-slot="scope">
|
|
64
|
+
<span v-if="scope.row.historyType && scope.row.historyType === 'PROCESS_END'" />
|
|
65
|
+
<el-tag v-else-if="scope.row.current" type="warning">{{$t('workflowHistoryList.taskStateDoing')}}</el-tag>
|
|
66
|
+
<el-tag v-else type="success">{{$t('workflowHistoryList.taskStateDone')}}</el-tag>
|
|
67
|
+
</template>
|
|
68
|
+
</el-table-column>
|
|
69
|
+
<el-table-column :label="$t('workflowHistoryList.processingDuration')" align="center" width="120">
|
|
70
|
+
<template v-slot="scope">
|
|
71
|
+
<span v-if="scope.row.historyType && scope.row.historyType === 'PROCESS_END'" />
|
|
72
|
+
<span v-else-if="!scope.row.copyTask">{{ scope.row.processingDuration }}</span>
|
|
73
|
+
</template>
|
|
74
|
+
</el-table-column>
|
|
75
|
+
<el-table-column :label="$t('workflowHistoryList.isOverdue')" align="center" width="100">
|
|
76
|
+
<template v-slot="scope">
|
|
77
|
+
<span v-if="scope.row.historyType && scope.row.historyType === 'PROCESS_END'" />
|
|
78
|
+
<span v-else>
|
|
79
|
+
<div v-if="scope.row.overdueDuration && scope.row.overdueDuration > 0" class="red-circle"/>
|
|
80
|
+
<div v-else class="green-circle"/>
|
|
81
|
+
</span>
|
|
82
|
+
</template>
|
|
83
|
+
</el-table-column>
|
|
62
84
|
<el-table-column :label="$t('workflowHistoryList.operation')" align="left" width="400">
|
|
63
85
|
<template v-slot="scope">
|
|
64
86
|
<span v-if="scope.row.historyType && scope.row.historyType === 'PROCESS_END'" />
|
|
@@ -286,3 +308,19 @@ export default {
|
|
|
286
308
|
}
|
|
287
309
|
}
|
|
288
310
|
</script>
|
|
311
|
+
<style scoped>
|
|
312
|
+
.red-circle {
|
|
313
|
+
width: 20px; /* 圆圈的宽度 */
|
|
314
|
+
height: 20px; /* 圆圈的高度 */
|
|
315
|
+
background-color: red; /* 背景色设置为红色 */
|
|
316
|
+
border-radius: 50%; /* 边框半径设置为50%,使元素变为圆形 */
|
|
317
|
+
display: inline-block; /* 确保元素以块级元素显示 */
|
|
318
|
+
}
|
|
319
|
+
.green-circle {
|
|
320
|
+
width: 20px; /* 圆圈的宽度 */
|
|
321
|
+
height: 20px; /* 圆圈的高度 */
|
|
322
|
+
background-color: rgb(11, 177, 121); /* 背景色设置为红色 */
|
|
323
|
+
border-radius: 50%; /* 边框半径设置为50%,使元素变为圆形 */
|
|
324
|
+
display: inline-block; /* 确保元素以块级元素显示 */
|
|
325
|
+
}
|
|
326
|
+
</style>
|
|
@@ -6,9 +6,15 @@ export default {
|
|
|
6
6
|
|
|
7
7
|
if (value) {
|
|
8
8
|
// console.log('-----v-permission---init----')
|
|
9
|
+
let permissionCodes = value
|
|
10
|
+
let systemCode
|
|
11
|
+
if(value instanceof Object) {
|
|
12
|
+
permissionCodes = value.codes
|
|
13
|
+
systemCode = value.systemCode
|
|
14
|
+
}
|
|
9
15
|
// 页面组件预览时不需要权限控制,系统中使用页面组件时需要使用权限控制,所以当是预览是资源编码传'true'
|
|
10
16
|
// 工作流按钮组件中也使用了资源编码为'true'的情况
|
|
11
|
-
if (
|
|
17
|
+
if (permissionCodes !== 'true' && !checkPermission(permissionCodes, systemCode)) {
|
|
12
18
|
el.parentNode && el.parentNode.removeChild(el)
|
|
13
19
|
}
|
|
14
20
|
} else {
|
package/src/i18n/langs/cn.js
CHANGED
|
@@ -83,7 +83,8 @@ const cn = {
|
|
|
83
83
|
forbiddenExceptionLinkUser: '如有疑问请联系',
|
|
84
84
|
uploadFileTip: '上传的文件不超过{fileSize}M',
|
|
85
85
|
asyncExportJumpMsg: '或点击我跳转到下载页面',
|
|
86
|
-
mustFill: '{label} 必须填写'
|
|
86
|
+
mustFill: '{label} 必须填写',
|
|
87
|
+
filePathNotFound: '文件UUID未找到,请检查配置',
|
|
87
88
|
},
|
|
88
89
|
// 列表组件
|
|
89
90
|
superGrid: {
|
|
@@ -134,7 +135,8 @@ const cn = {
|
|
|
134
135
|
fold: '收起',
|
|
135
136
|
prevRow: '上一行',
|
|
136
137
|
nextRow: '下一行',
|
|
137
|
-
detail: '详情'
|
|
138
|
+
detail: '详情',
|
|
139
|
+
searchEmpty:'查询空值'
|
|
138
140
|
},
|
|
139
141
|
// 部门树组件
|
|
140
142
|
departmentTree: {},
|
|
@@ -255,7 +257,12 @@ const cn = {
|
|
|
255
257
|
operationTime: '操作时间',
|
|
256
258
|
history_draw_dept_task: '{key_1}领取了部门[{key_2}]的任务',
|
|
257
259
|
history_abandon_draw_dept_task: '{key_1}放弃领取部门[{key_2}]的任务',
|
|
258
|
-
remark: '备注'
|
|
260
|
+
remark: '备注',
|
|
261
|
+
taskState: '节点状态',
|
|
262
|
+
processingDuration: '处理时长(H)',
|
|
263
|
+
isOverdue: '是否超期',
|
|
264
|
+
taskStateDoing: '进行中',
|
|
265
|
+
taskStateDone: '已完成'
|
|
259
266
|
},
|
|
260
267
|
gateway: {
|
|
261
268
|
timeout: '接口调用超时',
|
package/src/i18n/langs/en.js
CHANGED
|
@@ -84,7 +84,8 @@ const en = {
|
|
|
84
84
|
forbiddenExceptionLinkUser: 'if you have any questions,please contact',
|
|
85
85
|
uploadFileTip: 'The file size should lower {fileSize}M',
|
|
86
86
|
asyncExportJumpMsg: 'Or click me to jump to download page.',
|
|
87
|
-
mustFill: '{label} must fill'
|
|
87
|
+
mustFill: '{label} must fill',
|
|
88
|
+
filePathNotFound: 'File UUID not found, please check the configuration'
|
|
88
89
|
},
|
|
89
90
|
superGrid: {
|
|
90
91
|
editablePlaceholder: 'Please click to input',
|
|
@@ -134,7 +135,8 @@ const en = {
|
|
|
134
135
|
fold: 'Fold',
|
|
135
136
|
prevRow: 'Prev Row',
|
|
136
137
|
nextRow: 'Next Row',
|
|
137
|
-
detail: 'Detail'
|
|
138
|
+
detail: 'Detail',
|
|
139
|
+
searchEmpty:'Search Empty'
|
|
138
140
|
},
|
|
139
141
|
departmentTree: {},
|
|
140
142
|
departmentTreeInline: {
|
|
@@ -254,7 +256,12 @@ const en = {
|
|
|
254
256
|
operationTime: 'Operation Time',
|
|
255
257
|
history_draw_dept_task: '{key_1} Received tasks from department [{key_2}]',
|
|
256
258
|
history_abandon_draw_dept_task: '{key_1} Abandon the task of receiving department [{key_2}]',
|
|
257
|
-
remark: 'remark'
|
|
259
|
+
remark: 'remark',
|
|
260
|
+
taskState: 'Task State',
|
|
261
|
+
processingDuration: 'Processing Duration(H)',
|
|
262
|
+
isOverdue: 'Is Overdue',
|
|
263
|
+
taskStateDoing: 'Doing',
|
|
264
|
+
taskStateDone: 'Done'
|
|
258
265
|
},
|
|
259
266
|
gateway: {
|
|
260
267
|
timeout: 'Interface call timeout',
|