agilebuilder-ui 1.1.13-tmp4 → 1.1.13-tmp5

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.
@@ -1,5 +1,5 @@
1
1
  import { openBlock as r, createElementBlock as t, createCommentVNode as o } from "vue";
2
- import { _ as s } from "./index-1a87600f.js";
2
+ import { _ as s } from "./index-e8b65d1a.js";
3
3
  const u = ["src"], f = s({ data: () => ({ src: null }), watch: { $route(n, c) {
4
4
  this.src = this.$route.query.src;
5
5
  } }, mounted() {
@@ -1,4 +1,4 @@
1
- import { _ as v, c as $, g as x, b as P, s as h, m as M, M as O, i as I } from "./index-1a87600f.js";
1
+ import { _ as v, c as $, g as x, b as P, s as h, m as M, M as O, i as I } from "./index-e8b65d1a.js";
2
2
  import { resolveComponent as m, openBlock as l, createBlock as b, withCtx as g, createVNode as w, TransitionGroup as L, createElementBlock as p, Fragment as T, renderList as C, createElementVNode as u, toDisplayString as y, createCommentVNode as f, normalizeClass as S } from "vue";
3
3
  const A = { class: "no-redirect" }, k = v({ name: "Breadcrumb", data: () => ({ levelList: null }), computed: { levelListWithTitle() {
4
4
  return this.levelList.filter((e) => e.meta.title !== void 0 && e.meta.title !== null);
@@ -1,5 +1,5 @@
1
1
  import { resolveComponent as t, openBlock as a, createElementBlock as s, createElementVNode as y, createVNode as l, withCtx as r, createTextVNode as n, toDisplayString as p, createCommentVNode as c, createBlock as h } from "vue";
2
- import { _ as I } from "./index-1a87600f.js";
2
+ import { _ as I } from "./index-e8b65d1a.js";
3
3
  const g = { style: { "padding-bottom": "10px" } }, k = { key: 0, class: "graphDiv" }, N = I({ name: "TacheSubprocessHistory", data: () => ({ type: "graph", workflowId: null }), created() {
4
4
  const o = this.$route.query.workflowId;
5
5
  o && (this.workflowId = parseInt(o));
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "agilebuilder-ui",
3
- "version": "1.1.13-tmp4",
3
+ "version": "1.1.13-tmp5",
4
4
  "type": "module",
5
5
  "private": false,
6
6
  "main": "./lib/super-ui.js",
@@ -21,6 +21,8 @@ import {
21
21
  import eventBus from './eventBus'
22
22
  import { isPromise } from '../../../src/utils/common-util'
23
23
  import { updateWithPageValue } from '../../../src/utils/jump-page-utils'
24
+ import { getGuId } from '../../../src/utils/guid.js';
25
+
24
26
  const apis = {
25
27
  // 列表工具栏控件刷新列表数据。添加该方法解决工具栏值清空后,列表内容没有还原问题
26
28
  toolbarRefresh(parentRowIds, isLineEdit, toolbarFieldParam, isDeleteSubTableData) {
@@ -133,12 +135,13 @@ const apis = {
133
135
  // 新建行
134
136
  createRow(listCode, row, options) {
135
137
  return new Promise((resolve, reject) => {
138
+ debugger;
136
139
  if (!listCode) {
137
140
  listCode = store.get('_list_code')
138
141
  }
139
142
  const gridParams = store.get(listCode)
140
143
  const gridData = gridParams.gridData
141
- gridParams.superGrid.clearSort()
144
+ gridParams.superGrid?.clearSort?.()
142
145
  // console.log('创建行记录的条件1', gridParams.lineEdit)
143
146
  // console.log('创建行记录的条件2', gridParams.lineEdit.editable)
144
147
  // console.log('创建行记录的条件3', gridParams.loaded)
@@ -364,7 +367,10 @@ const apis = {
364
367
  }
365
368
  }
366
369
  }
367
- return row
370
+ return {
371
+ $rowDataGuId: getGuId(),
372
+ ...row,
373
+ }
368
374
  },
369
375
  // 设置默认值null
370
376
  setColumnsDefaultValue(allColumns, row, gridParams, getDefaultValueFunc) {
@@ -1005,7 +1011,7 @@ const apis = {
1005
1011
  }
1006
1012
  }
1007
1013
  if (gridParams.isMulitiSelect) {
1008
- gridParams.superGrid.clearSelection()
1014
+ gridParams.superGrid?.clearSelection?.()
1009
1015
  }
1010
1016
  gridParams.isCreateRow = false
1011
1017
  if (isRestore === undefined || !isRestore) {
@@ -1382,3 +1388,40 @@ const apis = {
1382
1388
  }
1383
1389
  }
1384
1390
  export default apis
1391
+
1392
+ export const apisMixin = {
1393
+ data() {
1394
+ return {
1395
+ toolbarFieldParam: null,
1396
+ showSearch: false,
1397
+ isMobile: false,
1398
+ baseURL: '',
1399
+ currentPage: 1,
1400
+ pageSize: 10,
1401
+ code: '',
1402
+ pageCode: '',
1403
+ jumpPageSetting: null,
1404
+ isShowPageDialog: false,
1405
+ gridData: [],
1406
+ subTableData: [],
1407
+ searchForm: [],
1408
+ options: {},
1409
+ lineEdit: null,
1410
+ loaded: false,
1411
+ configureObj: {},
1412
+ additionalParamMap: {},
1413
+ basicInfo: {},
1414
+ dynamicColumnInfo: {},
1415
+ $dataTypeMap: {},
1416
+ mainDefaultValueColumns: [],
1417
+ dynamicServiceName: '',
1418
+ isHasDynamic: false,
1419
+ isMulitiSelect: false,
1420
+ sql: false,
1421
+ restoreCurrentRowTimer: null
1422
+ };
1423
+ },
1424
+ methods: {
1425
+ ...apis
1426
+ }
1427
+ }
@@ -5,8 +5,9 @@ import NormalColumnContent from '../normal-column-content.vue';
5
5
  import CardView from '../../../../src/components/Card';
6
6
  import Scrollbar from '../../../../src/components/Scrollbar';
7
7
  import store from '../store';
8
+ import { apisMixin } from '../apis'
8
9
 
9
- import { ArrowLeft, Bottom, Loading, Tickets } from '@element-plus/icons-vue';
10
+ import { ArrowLeft, Bottom, CirclePlus, Loading, Tickets } from '@element-plus/icons-vue';
10
11
  // import { $emit, $off, $on } from '@/utils/gogocodeTransfer'
11
12
 
12
13
  export default defineComponent({
@@ -16,6 +17,7 @@ export default defineComponent({
16
17
  CardView,
17
18
  Scrollbar
18
19
  },
20
+ mixins: [apisMixin],
19
21
  props: {
20
22
  // 展示字段限制
21
23
  showFieldCount: {
@@ -61,8 +63,9 @@ export default defineComponent({
61
63
  setup(props, setupData) {
62
64
  const $emits = defineEmits(['currentChange', 'update:current-page', 'select']);
63
65
 
64
- const { attrs, emit } = setupData
65
- console.log('*mobile-table-card.JSX**********************************************=>', props, attrs, setupData)
66
+ const { attrs, emit, expose } = setupData
67
+
68
+ console.log('*mobile-table-card.JSX**********************************************=>', props, attrs, setupData, expose)
66
69
 
67
70
  // 分页加载状态
68
71
  const isPaginationLoading = ref(false)
@@ -92,6 +95,15 @@ export default defineComponent({
92
95
 
93
96
  setPaginationList(props.data)
94
97
 
98
+ const addColumnBtn = computed(() => {
99
+ const gridParams = store.get(attrs.listCode)
100
+ const showOperationButton = gridParams?.options?.showOperationButton ?? false
101
+ const isFormSubTable = gridParams?.options?.isFormSubTable ?? false
102
+ const subTableCanAdd = gridParams?.options?.subTableCanAdd ?? false
103
+ const isOperation = componentDatas.value?.some(({ prop }) => ['operation'].includes(prop))
104
+ return showOperationButton && isFormSubTable && subTableCanAdd && isOperation
105
+ })
106
+
95
107
  // 列表数据
96
108
  const dataList = computed(() => {
97
109
  if (props.isStackingPaginatedData) {
@@ -303,124 +315,135 @@ export default defineComponent({
303
315
  }
304
316
  }
305
317
 
306
- return () => (
307
- <Scrollbar onScrollToBottom={scrollLoad} set-max-height={data => {
308
- if (data?.windowHeight) {
309
- const height = data?.windowHeight - 160
310
- return height > 400 ? height : 400
311
- }
312
- }}>
313
- {(<ElDrawer v-model={isChildrenDrawer.value} modal-class='yx-drawer yx-scrollbar-body' with-header={true} direction="btt" append-to-body size='90vh' v-slots={{
314
- header: () => (<div class="yx-flex-wrap" style={{gap: '10px'}}>
315
- {layoutData.value.header[0] && `${layoutData.value.header[0].label}: `}
316
- <ElBreadcrumb separator-icon={<ArrowRight></ArrowRight>}>
317
- {childrenBreadcrumbData.value.map((columnFormData, i) => {
318
- const label = columnViewDom(layoutData.value.header[0], columnFormData, undefined, true)
319
- return (
320
- <ElBreadcrumbItem>
321
- {
322
- childrenBreadcrumbData.value.length - 1 === i ? label : <ElLink onClick={() => childrenBreadcrumbData.value = childrenBreadcrumbData.value.slice(0, i + 1)}>{ label }</ElLink>
323
- }
324
- </ElBreadcrumbItem>
325
- )
326
-
327
- })}
328
- </ElBreadcrumb>
329
- </div>)
330
- }}
331
- onClosed={() => childrenBreadcrumbData.value = []}
332
- >
333
-
334
- <Scrollbar scrollable-main max-height='100%' style={{ 'flex': '1 1 auto'}}>
335
- <div class="yx-flex-wrap" vertical style={{ gap: '15px'}}>
336
- { childrenList.value.map((columnFormData, columnIndex) => {
337
- // 开启编辑后禁止选中
338
- const onChecked = () => !columnFormData.$editing && setCheckedList(columnFormData.$rowDataGuId)
339
-
340
- // 是否选中
341
- const isChecked = checkedList.value.includes(columnFormData.$rowDataGuId)
342
-
343
- // 是否有子表
344
- const isSubTable = !!((columnFormData?.children?.length ?? 0) > 0)
345
-
346
- const clickPropertyData = layoutData.value.content?.find(({ property }) => property) ?? layoutData.value.content[0]
347
-
348
- return (<CardView
349
- form={columnFormData}
350
- no={ isIndex ? columnIndex + 1 : undefined}
351
- isChecked={isChecked}
352
- isSubTable={isSubTable}
353
- isCheck={isCheck.value}
354
- isShowDetailsMore={isShowDetailsMore.value && !columnFormData.$editing}
355
- onChecked={onChecked}
356
- onShowSubTable={() => {
357
- childrenBreadcrumbData.value =[...childrenBreadcrumbData.value, columnFormData];
358
- }}
359
- onRowClick={(event) => emit('rowClick', columnFormData, clickPropertyData, event)}
360
- onRowDblclick={(event) => emit('rowDblclick', columnFormData, clickPropertyData, event)}
361
- v-slots={{
362
- titleSlot: layoutData.value.header && layoutData.value.header?.map((columnCol) => columnViewDom(columnCol, columnFormData, columnIndex, true)),
363
- children: ({ isMore }) => getElDescriptions(layoutData.value.content, columnFormData, columnIndex, !isMore ? undefined : props.showFieldCount),
364
- footerSlot: isShowFooter.value && (<div class="yx-flex-wrap" wrap style={{gap: '15px'}}>
365
- {layoutData.value.footer?.map((columnCol) => columnViewDom(columnCol, columnFormData, columnIndex))}
366
- </div>)
367
- }}
368
- />)
369
- }) }
370
- </div>
371
- </Scrollbar>
372
- </ElDrawer>)}
373
- <div
374
- class="yx-flex-wrap"
375
- vertical
376
- style="overflow: auto; gap: 15px;"
377
- >
378
- {dataList.value.length === 0 && <ElEmpty />}
318
+ const getAddBtn = (Fun) => addColumnBtn.value && <ElButton type="primary" plain icon={<CirclePlus />} onClick={() => Fun?.(attrs.listCode)}>Add</ElButton>
319
+
320
+ return {
321
+ getAddBtn,
322
+ renderDom: (AddBtn) => (
323
+ <Scrollbar onScrollToBottom={scrollLoad} set-max-height={data => {
324
+ if (data?.windowHeight) {
325
+ const height = data?.windowHeight - 160
326
+ return height > 400 ? height : 400
327
+ }
328
+ }}>
329
+ {(<ElDrawer v-model={isChildrenDrawer.value} modal-class='yx-drawer yx-scrollbar-body' with-header={true} direction="btt" append-to-body size='90vh' v-slots={{
330
+ header: () => (<div class="yx-flex-wrap" style={{gap: '10px'}}>
331
+ {layoutData.value.header[0] && `${layoutData.value.header[0].label}: `}
332
+ <ElBreadcrumb separator-icon={<ArrowRight></ArrowRight>}>
333
+ {childrenBreadcrumbData.value.map((columnFormData, i) => {
334
+ const label = columnViewDom(layoutData.value.header[0], columnFormData, undefined, true)
335
+ return (
336
+ <ElBreadcrumbItem>
337
+ {
338
+ childrenBreadcrumbData.value.length - 1 === i ? label : <ElLink onClick={() => childrenBreadcrumbData.value = childrenBreadcrumbData.value.slice(0, i + 1)}>{ label }</ElLink>
339
+ }
340
+ </ElBreadcrumbItem>
341
+ )
342
+
343
+ })}
344
+ </ElBreadcrumb>
345
+ </div>)
346
+ }}
347
+ onClosed={() => childrenBreadcrumbData.value = []}
348
+ >
379
349
 
380
- {dataList.value.map((columnFormData, columnIndex) => {
381
-
382
- // 开启编辑后禁止选中
383
- const onChecked = () => !columnFormData.$editing && setCheckedList(columnFormData.$rowDataGuId)
384
-
385
- // 是否选中
386
- const isChecked = checkedList.value.includes(columnFormData.$rowDataGuId)
387
-
388
- // 是否有子表
389
- const isSubTable = !!(columnFormData?.children?.length ?? false)
390
-
391
- const clickPropertyData = layoutData.value.content?.find(({ property }) => property) ?? layoutData.value.content[0]
392
-
393
- return (<CardView
394
- form={columnFormData}
395
- no={ isIndex ? columnIndex + 1 : undefined}
396
- isChecked={isChecked}
397
- isSubTable={isSubTable}
398
- isCheck={isCheck.value}
399
- isShowDetailsMore={isShowDetailsMore.value && !columnFormData.$editing}
400
- onChecked={onChecked}
401
- onShowSubTable={() => {
402
- childrenBreadcrumbData.value =[columnFormData];
403
- isChildrenDrawer.value = true
404
- }}
405
- onRowClick={(event) => emit('rowClick', columnFormData, clickPropertyData, event)}
406
- onRowDblclick={(event) => emit('rowDblclick', columnFormData, clickPropertyData, event)}
407
- v-slots={{
408
- titleSlot: layoutData.value.header && layoutData.value.header?.map((columnCol) => columnViewDom(columnCol, columnFormData, columnIndex, true)),
409
- children: ({ isMore }) => getElDescriptions(layoutData.value.content, columnFormData, columnIndex, !isMore ? undefined : props.showFieldCount),
410
- footerSlot: isShowFooter.value && (<div class="yx-flex-wrap" wrap style={{gap: '15px'}}>
411
- {layoutData.value.footer?.map((columnCol) => columnViewDom(columnCol, columnFormData, columnIndex))}
412
- </div>)
413
- }}
414
- />)
415
- })}
416
-
417
- {
418
- dataList.value.length > 0 && pagesNumber.value > 1 && (<ElDivider>
419
- { (pagesNumber.value > props.currentPage || isPaginationLoading.value) ? (<ElIcon loading-rotate size={25} color="#409eff" style={{ margin: '15px auto' }}><Loading></Loading></ElIcon>) : (pagesNumber.value <= props.currentPage && isLoadPaginationData.value) && 'END' }
420
- </ElDivider>)
421
- }
422
- </div>
423
- </Scrollbar>
424
- );
350
+ <Scrollbar scrollable-main max-height='100%' style={{ 'flex': '1 1 auto'}}>
351
+ <div class="yx-flex-wrap" vertical style={{ gap: '15px'}}>
352
+ { childrenList.value.map((columnFormData, columnIndex) => {
353
+ // 开启编辑后禁止选中
354
+ const onChecked = () => !columnFormData.$editing && setCheckedList(columnFormData.$rowDataGuId)
355
+
356
+ // 是否选中
357
+ const isChecked = checkedList.value.includes(columnFormData.$rowDataGuId)
358
+
359
+ // 是否有子表
360
+ const isSubTable = !!((columnFormData?.children?.length ?? 0) > 0)
361
+
362
+ const clickPropertyData = layoutData.value.content?.find(({ property }) => property) ?? layoutData.value.content[0]
363
+
364
+ return (<CardView
365
+ form={columnFormData}
366
+ no={ isIndex ? columnIndex + 1 : undefined}
367
+ isChecked={isChecked}
368
+ isSubTable={isSubTable}
369
+ isCheck={isCheck.value}
370
+ isShowDetailsMore={isShowDetailsMore.value && !columnFormData.$editing}
371
+ onChecked={onChecked}
372
+ onShowSubTable={() => {
373
+ childrenBreadcrumbData.value =[...childrenBreadcrumbData.value, columnFormData];
374
+ }}
375
+ onRowClick={(event) => emit('rowClick', columnFormData, clickPropertyData, event)}
376
+ onRowDblclick={(event) => emit('rowDblclick', columnFormData, clickPropertyData, event)}
377
+ v-slots={{
378
+ titleSlot: layoutData.value.header && layoutData.value.header?.map((columnCol) => columnViewDom(columnCol, columnFormData, columnIndex, true)),
379
+ children: ({ isMore }) => getElDescriptions(layoutData.value.content, columnFormData, columnIndex, !isMore ? undefined : props.showFieldCount),
380
+ footerSlot: isShowFooter.value && (<div class="yx-flex-wrap" wrap style={{gap: '15px'}}>
381
+ {layoutData.value.footer?.map((columnCol) => columnViewDom(columnCol, columnFormData, columnIndex))}
382
+ </div>)
383
+ }}
384
+ />)
385
+ }) }
386
+ </div>
387
+ </Scrollbar>
388
+ </ElDrawer>)}
389
+ <div
390
+ class="yx-flex-wrap"
391
+ vertical
392
+ style="overflow: auto; gap: 15px;"
393
+ >
394
+ {dataList.value.length === 0 && <ElEmpty>{AddBtn}</ElEmpty>}
395
+
396
+ {dataList.value.map((columnFormData, columnIndex) => {
397
+
398
+ // 开启编辑后禁止选中
399
+ const onChecked = () => !columnFormData.$editing && setCheckedList(columnFormData.$rowDataGuId)
400
+
401
+ // 是否选中
402
+ const isChecked = checkedList.value.includes(columnFormData.$rowDataGuId)
403
+
404
+ // 是否有子表
405
+ const isSubTable = !!(columnFormData?.children?.length ?? false)
406
+
407
+ const clickPropertyData = layoutData.value.content?.find(({ property }) => property) ?? layoutData.value.content[0]
408
+
409
+ return (<CardView
410
+ form={columnFormData}
411
+ no={ isIndex ? columnIndex + 1 : undefined}
412
+ isChecked={isChecked}
413
+ isSubTable={isSubTable}
414
+ isCheck={isCheck.value}
415
+ isShowDetailsMore={isShowDetailsMore.value && !columnFormData.$editing}
416
+ onChecked={onChecked}
417
+ onShowSubTable={() => {
418
+ childrenBreadcrumbData.value =[columnFormData];
419
+ isChildrenDrawer.value = true
420
+ }}
421
+ onRowClick={(event) => emit('rowClick', columnFormData, clickPropertyData, event)}
422
+ onRowDblclick={(event) => emit('rowDblclick', columnFormData, clickPropertyData, event)}
423
+ v-slots={{
424
+ titleSlot: layoutData.value.header && layoutData.value.header?.map((columnCol) => columnViewDom(columnCol, columnFormData, columnIndex, true)),
425
+ children: ({ isMore }) => getElDescriptions(layoutData.value.content, columnFormData, columnIndex, !isMore ? undefined : props.showFieldCount),
426
+ footerSlot: isShowFooter.value && (<div class="yx-flex-wrap" wrap style={{gap: '15px'}}>
427
+ {layoutData.value.footer?.map((columnCol) => columnViewDom(columnCol, columnFormData, columnIndex))}
428
+ </div>)
429
+ }}
430
+ />)
431
+ })}
432
+
433
+ {dataList.value.length > 0 && AddBtn}
434
+
435
+ {
436
+ dataList.value.length > 0 && pagesNumber.value > 1 && (<ElDivider>
437
+ { (pagesNumber.value > props.currentPage || isPaginationLoading.value) ? (<ElIcon loading-rotate size={25} color="#409eff" style={{ margin: '15px auto' }}><Loading></Loading></ElIcon>) : (pagesNumber.value <= props.currentPage && isLoadPaginationData.value) && 'END' }
438
+ </ElDivider>)
439
+ }
440
+ </div>
441
+ </Scrollbar>
442
+ )
443
+ };
444
+ },
445
+ render() {
446
+ // 为了 能兼容 使用 mixins 参数
447
+ return this.renderDom(this.getAddBtn(this.createRow))
425
448
  }
426
449
  });
@@ -39,6 +39,7 @@
39
39
  v-if="isShowCard"
40
40
  :selection="selectionTableData"
41
41
  :columns="visibleColumns"
42
+ :listCode="code"
42
43
  :getColumnComponentData="getColumnComponentData"
43
44
  :data="tableDatas"
44
45
  v-model:current-page="currentPage"
@@ -70,7 +71,7 @@
70
71
  :highlight-current-row="true"
71
72
  :span-method="rowSpan"
72
73
  :max-height="maxHeight"
73
- :height="maxHeight && maxHeight >= tableHeight ? maxHeight : tableHeight"
74
+ :height="maxHeight && maxHeight <= tableHeight ? maxHeight : tableHeight"
74
75
  :class="tableClass"
75
76
  :tree-props="getTreeProps(parentProp, isSql, isLazy, dataSourceType)"
76
77
  @sort-change="handleSortChange"
@@ -564,7 +564,7 @@ export function getTableHeight(superGrid, listCode, pageHeight) {
564
564
  if (superGrid) {
565
565
  rect = superGrid.$el.getBoundingClientRect()
566
566
  }
567
- const totalHeight = window.innerHeight - rect.y - 110
567
+ const totalHeight = window.innerHeight - (rect?.y ?? 0) - 110
568
568
  console.log('rect=', rect, 'window.innerHeight=', window.innerHeight, 'totalHeight=', totalHeight)
569
569
  return totalHeight
570
570