agilebuilder-ui 1.1.38 → 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.
Files changed (52) hide show
  1. package/lib/{401-d4103b15.js → 401-994c9198.js} +1 -1
  2. package/lib/{404-bbbf1615.js → 404-529e9d04.js} +1 -1
  3. package/lib/{iframe-page-eeb30592.js → iframe-page-8416d7e7.js} +1 -1
  4. package/lib/{index-93dc7bbc.js → index-f2020c47.js} +13764 -13655
  5. package/lib/super-ui.css +1 -1
  6. package/lib/super-ui.js +1 -1
  7. package/lib/super-ui.umd.cjs +82 -79
  8. package/lib/{tab-content-iframe-index-82db069a.js → tab-content-iframe-index-b9c23a8b.js} +1 -1
  9. package/lib/{tab-content-index-06291a81.js → tab-content-index-289ae3af.js} +22 -22
  10. package/lib/{tache-subprocess-history-661219ec.js → tache-subprocess-history-3ad4baa1.js} +1 -1
  11. package/package.json +1 -1
  12. package/packages/department-tree-inline/src/department-single-tree-inline.vue +3 -1
  13. package/packages/department-user-tree-inline/src/department-user-multiple-tree-inline.vue +5 -1
  14. package/packages/department-user-tree-inline/src/department-user-single-tree-inline.vue +2 -1
  15. package/packages/department-user-tree-inline/src/department-user-tree-multi-service.js +0 -1
  16. package/packages/department-user-tree-mobile/src/department-user-tree-inline-app.vue +3 -1
  17. package/packages/fs-preview/src/fs-preview.vue +44 -7
  18. package/packages/fs-upload-list/src/fs-upload-list.vue +50 -24
  19. package/packages/fs-upload-new/src/fs-button-upload.vue +12 -0
  20. package/packages/fs-upload-new/src/fs-drag-upload.vue +12 -0
  21. package/packages/fs-upload-new/src/fs-preview-new.vue +24 -5
  22. package/packages/fs-upload-new/src/fs-upload-new.vue +20 -0
  23. package/packages/organization-input/src/organization-input.vue +3 -3
  24. package/packages/super-grid/src/components/mobile-table-card.jsx +0 -1
  25. package/packages/super-grid/src/custom-formatter.js +1 -1
  26. package/packages/super-grid/src/dynamic-input.vue +16 -22
  27. package/packages/super-grid/src/normal-column-content.vue +25 -13
  28. package/packages/super-grid/src/row-operation.vue +13 -9
  29. package/packages/super-grid/src/search-form-item.vue +75 -17
  30. package/packages/super-grid/src/search-form-mobile.vue +5 -0
  31. package/packages/super-grid/src/search-form-ordinarySearch.vue +5 -0
  32. package/packages/super-grid/src/search-methods.js +3 -1
  33. package/packages/utils/organization.ts +56 -40
  34. package/packages/workflow-history-list/src/workflow-history-list.vue +41 -3
  35. package/src/api/sso-service.js +2 -1
  36. package/src/directives/permission/permission.js +7 -1
  37. package/src/i18n/langs/cn.js +10 -3
  38. package/src/i18n/langs/en.js +10 -3
  39. package/src/permission.js +2 -1
  40. package/src/store/modules/user.js +4 -1
  41. package/src/utils/common-util.js +1 -1
  42. package/src/utils/file-util.ts +12 -4
  43. package/src/utils/jump-page-utils.js +1 -0
  44. package/src/utils/permission.js +2 -2
  45. package/src/utils/permissionAuth.js +11 -7
  46. package/src/utils/util.js +19 -0
  47. package/src/views/dsc-component/Sidebar/Item.vue +18 -7
  48. package/src/views/dsc-component/Sidebar/SidebarItem.vue +10 -2
  49. package/src/views/dsc-component/Sidebar/index.vue +0 -2
  50. package/src/views/layout/components/Menubar/Item.vue +20 -3
  51. package/src/views/layout/components/Menubar/SidebarItem.vue +46 -18
  52. package/vite.config.js +1 -2
@@ -13,6 +13,7 @@
13
13
  :additional-settings="controlConfig"
14
14
  :parent="parentFormData"
15
15
  :prop="column.prop"
16
+ :custom-params="myCustomParams"
16
17
  :row="row"
17
18
  :row-index="position ? position.row : null"
18
19
  :select-options="options"
@@ -545,7 +546,8 @@ import {
545
546
  getEntityFieldValue,
546
547
  setEntityFieldValue,
547
548
  getPropValueNew,
548
- watchPageContextDynamicVariable
549
+ watchPageContextDynamicVariable,
550
+ formatCustomParams
549
551
  } from '../../../src/utils/util'
550
552
  import { getToken } from '../../../src/utils/auth'
551
553
  import apis from './apis'
@@ -662,16 +664,17 @@ export default {
662
664
  const gridData = gridParams.gridData
663
665
  const subTableData = gridParams.subTableData
664
666
  const isSubTableShowPage = gridParams.isSubTableShowPage
665
- let controlConfig = {}
666
- if (this.column.controlConfig) {
667
- controlConfig = JSON.parse(this.column.controlConfig)
668
- }
667
+
669
668
  const additionalParamMap = getAdditionalParamMap(gridParams)
670
669
  const pageContext = gridParams.options.pageContext
671
670
  const isMobile = isMobileBrowser()
672
671
 
673
672
  const componentId = this.listCode + '_' + this.column.prop
674
673
  let scanEnable = false
674
+ let controlConfig = {}
675
+ if (this.column.controlConfig) {
676
+ controlConfig = JSON.parse(this.column.controlConfig)
677
+ }
675
678
  if (controlConfig.scanEnable) {
676
679
  scanEnable = true
677
680
  }
@@ -760,7 +763,8 @@ export default {
760
763
  isShowScanIcon,
761
764
  baseURL,
762
765
  colConfigure, // v10字段配置原信息
763
- designProperty // 字段配置
766
+ designProperty, // 字段配置
767
+ myCustomParams: {}
764
768
  }
765
769
  },
766
770
  computed: {},
@@ -808,6 +812,12 @@ export default {
808
812
  },
809
813
  created() {
810
814
  const gridParams = store.get(this.listCode)
815
+ if (this.controlConfig?.customParams) {
816
+ if (!this.pageContext) {
817
+ this.pageContext = gridParams.options.pageContext
818
+ }
819
+ this.myCustomParams = formatCustomParams(this.controlConfig.customParams, this.pageContext, this.row)
820
+ }
811
821
  this.gridParams = gridParams
812
822
  this.isCreateRow = gridParams.isCreateRow
813
823
  this.setTreeType()
@@ -901,14 +911,6 @@ export default {
901
911
  const that = this
902
912
  // 选择文件结束
903
913
  eventBus.$on(this.componentId + '-pickFileDone', (data) => {
904
- console.log(
905
- 'superPage666611---pickFileDone--data.componentId=',
906
- data.componentId,
907
- 'data.listCode=',
908
- data.listCode,
909
- 'data=',
910
- data
911
- )
912
914
  if (that.$refs.fileUploadRef) {
913
915
  that.$refs.fileUploadRef.pickFileDone(data)
914
916
  }
@@ -921,14 +923,6 @@ export default {
921
923
  })
922
924
  // 扫描结束
923
925
  eventBus.$on(this.componentId + '-scanDone', (data) => {
924
- console.log(
925
- 'superPage666611---scanDone--data.componentId=',
926
- data.componentId,
927
- 'data.listCode=',
928
- data.listCode,
929
- 'data=',
930
- data
931
- )
932
926
  that.innerValue = data.result
933
927
  that.blurEvent()
934
928
  this.callCustomEvent('afterScanDone')
@@ -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
- <el-icon v-if="getMyHyperLinkSetting(row, rowIndex).icon">
239
- <component :is="(getMyHyperLinkSetting(row), rowIndex.icon)" />
240
- </el-icon>
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
- <el-icon v-if="getMyHyperLinkSetting(row, rowIndex).icon">
245
- <component :is="getMyHyperLinkSetting(row, rowIndex).icon" />
246
- </el-icon>
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
- <el-icon v-if="getMyHyperLinkSetting(row, rowIndex).icon">
320
- <component :is="getMyHyperLinkSetting(row, rowIndex).icon" />
321
- </el-icon>
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
- <el-icon v-if="getMyHyperLinkSetting(row, rowIndex).icon">
326
- <component :is="getMyHyperLinkSetting(row, rowIndex).icon" />
327
- </el-icon>
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.permission">
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: null,
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.operationSettingData.iconPosition)) return this.operationSetting.iconValue
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.operationSettingData.isTextIcon === undefined) {
161
+ if (this.operationSetting.isTextIcon === undefined) {
158
162
  return this.isSaveRow || this.isDeleteRow || this.isEditRow || this.isRestoreRow
159
163
  }
160
- return this.operationSettingData.isTextIcon
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.text) return true
179
+ if (this.operationSetting?.text) return true
176
180
  if (this.isTableBtnLink && this.elementType === 'el-button') {
177
- return [this.operationSetting.text, this.operationSetting.plain, this.operationSetting.round].every(v => v === undefined)
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
- <dynamic-source-select
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
- :allow-create="true"
158
- :base-props="{
159
- multiple: column.componentType === 'multiselect' ? true : false
160
- }"
161
- :entity="searchForm"
162
- :filterable="true"
163
- :is-join-table="isJoinTable"
164
- :list-code="code"
165
- :list-toolbar-form-data="listToolbarFormData"
166
- :options="getDynamicDataSourceOptions(column)"
167
- :table-name="tableName"
168
- :value="getFormItemValue(column.prop)"
169
- @input="setValueToModelProp(column.prop, $event)"
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 (selectNodeInfo, userData, containBranch) {
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 (user, containBranch) {
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 (searchField, selectUserInfo, separator) {
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.get(window['$vueApp'].config.globalProperties.baseAPI + '/component/organization-trees/select-users-mobile?searchField=' + searchField + '&selectUserInfo=' + selectUserInfo + '&separator=' + separator).then(users => {
64
- resolve(users)
65
- }).catch(error => {
66
- reject(error)
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 (searchField, selectUserInfo, separator) {
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).then(users => {
105
- resolve(users)
106
- }).catch(error => {
107
- reject(error)
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
- export function getUserMainDeptName (user) {
134
- let deptShowName = ''
135
- if (user && user.data) {
136
- const userData = JSON.parse(user.data)
137
- if (userData.mainDepartmentEnName && userData.mainDepartmentEnName !== '' && window['$locale'] && window['$locale'] !== 'cn') {
138
- deptShowName = userData.mainDepartmentEnName
139
- } else {
140
- if (userData.mainDepartmentName && userData.mainDepartmentName !== '') {
141
- deptShowName = userData.mainDepartmentName
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
- export function getDeptNamePath (dept) {
151
- let deptShowName = ''
152
- if (dept && dept.data) {
153
- const deptData = JSON.parse(dept.data)
154
- deptShowName = deptData.namePath
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="left" width="80px">
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="250">
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="250">
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>