resolver-egretimp-plus 0.1.18 → 0.1.19
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/dist/h5/index.js +2 -2
- package/dist/theme/element/index.css +1 -1
- package/dist/theme/element/src/components/tabs.scss +10 -1
- package/dist/web/index.js +2 -2
- package/package.json +1 -1
- package/src/bpm/bpmInstance.js +10 -0
- package/src/components/packages-web/CustomComponentCycleTabPane.vue +17 -3
- package/src/components/packages-web/CustomComponentTabPane.vue +4 -2
- package/src/components/packages-web/CustomComponentTabs.vue +21 -12
- package/src/components/tabs/src/tab-nav.jsx +7 -2
- package/src/components/tabs/src/tabs.jsx +7 -2
- package/src/index.jsx +13 -1
- package/src/rules/eventsSupplement.js +1 -2
- package/src/theme/element/components/tabs.scss +10 -1
- package/src/utils/valid.js +30 -13
package/package.json
CHANGED
package/src/bpm/bpmInstance.js
CHANGED
|
@@ -316,6 +316,16 @@ export class Bpm {
|
|
|
316
316
|
})
|
|
317
317
|
})
|
|
318
318
|
}
|
|
319
|
+
insertBtn(btns, position = 3) {
|
|
320
|
+
this.getSdkInstance().then((instance) => {
|
|
321
|
+
console.log('insert btns==:', btns, position)
|
|
322
|
+
instance?.getCustomApi()?.insertBtnForToolbar({
|
|
323
|
+
// 按钮插入位置
|
|
324
|
+
position,
|
|
325
|
+
btns,
|
|
326
|
+
})
|
|
327
|
+
})
|
|
328
|
+
}
|
|
319
329
|
destroy() {
|
|
320
330
|
window.removeEventListener("message", this.messageListener)
|
|
321
331
|
this.sdkInstance = null
|
|
@@ -1,7 +1,17 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<TabPane v-for="(pageMetaList, $index) in (multiPmPageMetaList || [])" v-bind="{...tabPaneProps}" :key="pageMetaListKeys[pageMetaList.id]" :label="`${lang.indexOf('zh') > -1 ? props.config?.metaNameZh : props.config?.metaNameEn}-${$index}`" :name="`${props.config?.metaCode}-${$index}`">
|
|
3
3
|
<template #label v-if="labelRenderContentFn || pageMetaList.filter(config => config.collapseSlot).length">
|
|
4
|
-
<component
|
|
4
|
+
<component
|
|
5
|
+
v-if="labelRenderContentFn"
|
|
6
|
+
:is="labelRenderContentFn(
|
|
7
|
+
getLableRenderParams(
|
|
8
|
+
modelValue?.[$index],
|
|
9
|
+
props.activeNames === `${props.config?.metaCode}-${$index}`,
|
|
10
|
+
multiPmPageMetaList.length,
|
|
11
|
+
$index
|
|
12
|
+
)
|
|
13
|
+
)"
|
|
14
|
+
></component>
|
|
5
15
|
<Renderer v-else :modelValue="modelValue?.[$index]" :rowScope="{row: modelValue?.[$index], $index}" @update:modelValues="onUpdateModelValue($event, $index)" :config="pageMetaList.filter(config => config.collapseSlot)"></Renderer>
|
|
6
16
|
</template>
|
|
7
17
|
<ElRow>
|
|
@@ -20,6 +30,7 @@ import { h } from 'vue'
|
|
|
20
30
|
const props = defineProps({
|
|
21
31
|
...commonPropsType,
|
|
22
32
|
...ElTabPane.props,
|
|
33
|
+
activeNames: String,
|
|
23
34
|
})
|
|
24
35
|
|
|
25
36
|
const modelValue = defineModel()
|
|
@@ -100,10 +111,13 @@ const labelRenderContentFn = computed(() => {
|
|
|
100
111
|
return null
|
|
101
112
|
}
|
|
102
113
|
})
|
|
103
|
-
function getLableRenderParams(tabPaneData) {
|
|
114
|
+
function getLableRenderParams(tabPaneData, isActive, total, idx) {
|
|
104
115
|
return {
|
|
105
116
|
config: props.config,
|
|
106
|
-
tabPaneData
|
|
117
|
+
tabPaneData,
|
|
118
|
+
isActive,
|
|
119
|
+
total,
|
|
120
|
+
currentIndex: idx
|
|
107
121
|
}
|
|
108
122
|
}
|
|
109
123
|
</script>
|
|
@@ -24,7 +24,8 @@ const slots = useSlots()
|
|
|
24
24
|
const props = defineProps({
|
|
25
25
|
...commonPropsType,
|
|
26
26
|
...TabPane.props,
|
|
27
|
-
hidden: [String, Boolean, Number]
|
|
27
|
+
hidden: [String, Boolean, Number],
|
|
28
|
+
activeNames: String,
|
|
28
29
|
})
|
|
29
30
|
const attrs = useAttrs()
|
|
30
31
|
|
|
@@ -62,7 +63,8 @@ const labelRenderContent = computed(() => {
|
|
|
62
63
|
function getLableRenderParams() {
|
|
63
64
|
return {
|
|
64
65
|
config: props.config,
|
|
65
|
-
tabPaneData: props.refValue.value
|
|
66
|
+
tabPaneData: props.refValue.value,
|
|
67
|
+
isActive: props.activeNames === props.config?.metaCode,
|
|
66
68
|
}
|
|
67
69
|
}
|
|
68
70
|
</script>
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<Tabs :class="[`tabs-level-${level}`, isHeaderAuto ? 'tabpane-auto-header' : '', fullBorder ? 'full-border' : '']" v-bind="transTabsProps" v-model="activeNames">
|
|
3
|
-
<Renderer :config="tabpanes" v-model="props.refValue.value"></Renderer>
|
|
3
|
+
<Renderer :activeNames="activeNames" :config="tabpanes" v-model="props.refValue.value"></Renderer>
|
|
4
4
|
<template v-for="(_, key) in slots" :key="key" v-slot:[key]="scope">
|
|
5
5
|
<slot :name="key" v-bind="scope"></slot>
|
|
6
6
|
</template>
|
|
@@ -19,6 +19,10 @@ const slots = useSlots()
|
|
|
19
19
|
const props = defineProps({
|
|
20
20
|
...ElTabs.props,
|
|
21
21
|
...commonPropsType,
|
|
22
|
+
showBar: {
|
|
23
|
+
type: Boolean,
|
|
24
|
+
default: true
|
|
25
|
+
},
|
|
22
26
|
})
|
|
23
27
|
const attrs = useAttrs()
|
|
24
28
|
const tabsProps = computed(() => {
|
|
@@ -39,24 +43,24 @@ const activeNames = computed({
|
|
|
39
43
|
const currentCycleTab = tabpanes.value.find(tab => tab.currentCode)
|
|
40
44
|
return (currentTab && currentTab.metaCode)
|
|
41
45
|
|| (currentCycleTab && currentCycleTab.currentCode)
|
|
42
|
-
||
|
|
46
|
+
|| tabpanes.value[0] && ((assertMetaType(tabpanes.value[0], 'CustomComponentCycleTabPane') && `${tabpanes.value[0].metaCode}-0`) || (tabpanes.value[0].metaType === 'CustomComponentTabPane' && tabpanes.value[0].metaCode))
|
|
43
47
|
},
|
|
44
48
|
set(val) {
|
|
45
49
|
tabpanes.value.forEach(tab => {
|
|
46
|
-
if (tab
|
|
50
|
+
if (assertMetaType(tab, 'CustomComponentCycleTabPane')) {
|
|
51
|
+
if (/^cycleTabpane-(\d+)$/.test(val)) {
|
|
52
|
+
tab.currentCode = val
|
|
53
|
+
} else {
|
|
54
|
+
tab.currentCode = ''
|
|
55
|
+
}
|
|
56
|
+
} else if (tab.metaType === 'CustomComponentTabPane') {
|
|
47
57
|
if (tab.metaCode === val) {
|
|
48
58
|
tab.defaultShowFlag = '1'
|
|
49
59
|
} else {
|
|
50
60
|
tab.defaultShowFlag = '0'
|
|
51
61
|
}
|
|
52
62
|
}
|
|
53
|
-
|
|
54
|
-
if (new RegExp(`^${tab.metaCode}-(\d+)$`).test(val)) {
|
|
55
|
-
tab.currentCode = val
|
|
56
|
-
} else {
|
|
57
|
-
tab.currentCode = ''
|
|
58
|
-
}
|
|
59
|
-
}
|
|
63
|
+
|
|
60
64
|
})
|
|
61
65
|
}
|
|
62
66
|
})
|
|
@@ -64,7 +68,7 @@ const isHeaderAuto = computed(() => {
|
|
|
64
68
|
return props.config.autoHeader == '1'
|
|
65
69
|
})
|
|
66
70
|
const level = computed(() => {
|
|
67
|
-
return props.config.level
|
|
71
|
+
return props.config.level ?? tabpanes.value.find(tabpane => hasOwn(tabpane, 'level'))?.level ?? 1
|
|
68
72
|
})
|
|
69
73
|
const transTabsProps = computed(() => {
|
|
70
74
|
const polyProps = level.value == 1 ? {
|
|
@@ -76,7 +80,8 @@ const transTabsProps = computed(() => {
|
|
|
76
80
|
} : {}
|
|
77
81
|
return {
|
|
78
82
|
...tabsProps.value,
|
|
79
|
-
...polyProps
|
|
83
|
+
...polyProps,
|
|
84
|
+
showBar: props.showBar,
|
|
80
85
|
}
|
|
81
86
|
})
|
|
82
87
|
/**
|
|
@@ -86,6 +91,10 @@ const fullBorder = computed(() => {
|
|
|
86
91
|
return tabpanes.value.length === 1 && level.value == 1
|
|
87
92
|
})
|
|
88
93
|
|
|
94
|
+
function assertMetaType(config, metaType) {
|
|
95
|
+
return config.renderby === metaType || config.metaType === metaType
|
|
96
|
+
}
|
|
97
|
+
|
|
89
98
|
defineExpose({
|
|
90
99
|
setActiveTab(tabMetaCode) {
|
|
91
100
|
activeNames.value = tabMetaCode
|
|
@@ -52,6 +52,10 @@ export const tabNavProps = buildProps({
|
|
|
52
52
|
values: ['card', 'border-card', ''],
|
|
53
53
|
default: '',
|
|
54
54
|
},
|
|
55
|
+
showBar: {
|
|
56
|
+
type: Boolean,
|
|
57
|
+
default: true
|
|
58
|
+
},
|
|
55
59
|
stretch: Boolean,
|
|
56
60
|
})
|
|
57
61
|
|
|
@@ -379,10 +383,11 @@ const TabNav = defineComponent({
|
|
|
379
383
|
ns.e('nav-wrap'),
|
|
380
384
|
ns.is('scrollable', !!scrollable.value),
|
|
381
385
|
ns.is(rootTabs.props.tabPosition),
|
|
386
|
+
!props.showBar ? 'hidden-bar' : ''
|
|
382
387
|
]}
|
|
383
388
|
>
|
|
384
389
|
{scrollBtn}
|
|
385
|
-
<div class={ns.e('nav-scroll')} ref={navScroll$}>
|
|
390
|
+
<div class={[ns.e('nav-scroll')]} ref={navScroll$}>
|
|
386
391
|
<div
|
|
387
392
|
class={[
|
|
388
393
|
ns.e('nav'),
|
|
@@ -399,7 +404,7 @@ const TabNav = defineComponent({
|
|
|
399
404
|
onKeydown={changeTab}
|
|
400
405
|
>
|
|
401
406
|
{...[
|
|
402
|
-
!props.type ? (
|
|
407
|
+
!props.type && props.showBar ? (
|
|
403
408
|
<TabBar ref={tabBarRef} tabs={[...props.panes]} />
|
|
404
409
|
) : null,
|
|
405
410
|
tabs,
|
|
@@ -49,6 +49,10 @@ export const tabsProps = buildProps({
|
|
|
49
49
|
type: Function,
|
|
50
50
|
default: () => true,
|
|
51
51
|
},
|
|
52
|
+
showBar: {
|
|
53
|
+
type: Boolean,
|
|
54
|
+
default: true
|
|
55
|
+
},
|
|
52
56
|
stretch: Boolean,
|
|
53
57
|
})
|
|
54
58
|
// export type TabsProps = ExtractPropTypes<typeof tabsProps>
|
|
@@ -177,6 +181,7 @@ const Tabs = defineComponent({
|
|
|
177
181
|
ref={nav$}
|
|
178
182
|
currentName={currentName.value}
|
|
179
183
|
editable={props.editable}
|
|
184
|
+
showBar={props.showBar}
|
|
180
185
|
type={props.type}
|
|
181
186
|
panes={panes.value}
|
|
182
187
|
stretch={props.stretch}
|
|
@@ -203,8 +208,8 @@ const Tabs = defineComponent({
|
|
|
203
208
|
]}
|
|
204
209
|
>
|
|
205
210
|
{...props.tabPosition !== 'bottom'
|
|
206
|
-
? [
|
|
207
|
-
: [
|
|
211
|
+
? [panels, header]
|
|
212
|
+
: [header, panels]}
|
|
208
213
|
</div>
|
|
209
214
|
)
|
|
210
215
|
}
|
package/src/index.jsx
CHANGED
|
@@ -7,7 +7,7 @@ import { MODE } from "./utils/const.js"
|
|
|
7
7
|
import { generateRequester } from "./utils/request.js"
|
|
8
8
|
import { executeLoadServices, resetConfigEventInit } from "./components/helper/resolver.js"
|
|
9
9
|
import { createEmptyCopy, deepMerge } from "./utils/index.js"
|
|
10
|
-
import { initBpm, SUBMIT_TYPE } from "./bpm/bpmInstance.js"
|
|
10
|
+
import { initBpm, SUBMIT_TYPE, bpmInstance } from "./bpm/bpmInstance.js"
|
|
11
11
|
// import { RuleExecuter } from "./rulesImp/index.js"
|
|
12
12
|
export default {
|
|
13
13
|
name: 'Resolver',
|
|
@@ -171,6 +171,14 @@ export default {
|
|
|
171
171
|
bpmConfigs: {
|
|
172
172
|
type: Object,
|
|
173
173
|
default: {}
|
|
174
|
+
},
|
|
175
|
+
bpmBtns: {
|
|
176
|
+
type: Array,
|
|
177
|
+
default: [],
|
|
178
|
+
},
|
|
179
|
+
bpmBtnPosition: {
|
|
180
|
+
type: Number,
|
|
181
|
+
default: 3
|
|
174
182
|
}
|
|
175
183
|
},
|
|
176
184
|
emits: ['update:modelValue', 'rootStoreChange'],
|
|
@@ -359,6 +367,9 @@ export default {
|
|
|
359
367
|
return props.requestTraceId
|
|
360
368
|
},
|
|
361
369
|
toExecuteLoadServices,
|
|
370
|
+
getBpmInstance() {
|
|
371
|
+
return bpmInstance
|
|
372
|
+
}
|
|
362
373
|
})
|
|
363
374
|
|
|
364
375
|
const modelValue = computed({
|
|
@@ -377,6 +388,7 @@ export default {
|
|
|
377
388
|
toExecuteLoadServices,
|
|
378
389
|
bpmSubmitBtn: props.bpmSubmitBtn
|
|
379
390
|
})
|
|
391
|
+
bpmInstance?.insertBtn?.(props.bpmBtns, props.bpmBtnPosition)
|
|
380
392
|
}
|
|
381
393
|
})
|
|
382
394
|
return () => {
|
|
@@ -90,7 +90,6 @@ const allInitEvents = {
|
|
|
90
90
|
const isReplace = /^_replace:/.test(targetObjVal)
|
|
91
91
|
if (isReplace) {
|
|
92
92
|
targetObjVal = replaceDefValue(targetObjVal?.replace(/^_replace:/, ''), {config, dynamicMapComp})
|
|
93
|
-
|
|
94
93
|
}
|
|
95
94
|
let val = ''
|
|
96
95
|
try {
|
|
@@ -563,7 +562,7 @@ export function runEvent(events, isInit, tabpanelCode, rule) {
|
|
|
563
562
|
const { eventId } = event
|
|
564
563
|
const eventCode = eventsMap[eventId]
|
|
565
564
|
// const { eventCode } = event
|
|
566
|
-
console.log('evnet===:', event)
|
|
565
|
+
console.log('evnet===:', eventCode, event)
|
|
567
566
|
return allInitEvents[eventCode] && allInitEvents[eventCode].call(this, event, isInit, tabpanelCode, rule)
|
|
568
567
|
// return {
|
|
569
568
|
// eventId,
|
|
@@ -3,7 +3,12 @@
|
|
|
3
3
|
|
|
4
4
|
.resolver-tabs {
|
|
5
5
|
// 这个是渲染器里面tabs
|
|
6
|
-
display: block;
|
|
6
|
+
// display: block;
|
|
7
|
+
}
|
|
8
|
+
.hidden-bar {
|
|
9
|
+
&::after {
|
|
10
|
+
display: none;
|
|
11
|
+
}
|
|
7
12
|
}
|
|
8
13
|
.el-tabs {
|
|
9
14
|
// display: block;
|
|
@@ -13,6 +18,10 @@
|
|
|
13
18
|
padding: var(--prmary-marign-second) var(--prmary-marign) var(--prmary-marign) var(--prmary-marign);
|
|
14
19
|
}
|
|
15
20
|
}
|
|
21
|
+
.el-tabs__item {
|
|
22
|
+
min-height: var(--el-tabs-header-height);
|
|
23
|
+
height: unset;
|
|
24
|
+
}
|
|
16
25
|
.tabs-level-1 {
|
|
17
26
|
--el-tabs-header-height: 49px;
|
|
18
27
|
&.full-border {
|
package/src/utils/valid.js
CHANGED
|
@@ -18,29 +18,47 @@ function validFailAction(errInfo, dynamicMapComp) {
|
|
|
18
18
|
let oneKey = errKyes[0]
|
|
19
19
|
const referComps = []
|
|
20
20
|
while (oneKey.indexOf('->') > -1) {
|
|
21
|
-
|
|
22
|
-
|
|
21
|
+
let idx = -1
|
|
22
|
+
let code = ''
|
|
23
|
+
const matchs = oneKey?.match(/^(.+)\[(\d+)\]$/)
|
|
24
|
+
if (matchs) {
|
|
25
|
+
idx = parseInt(matchs[2])
|
|
26
|
+
code = matchs[1]
|
|
27
|
+
} else {
|
|
28
|
+
code = oneKey
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
const compInfo = dynamicMapComp[code]
|
|
32
|
+
compInfo && referComps.unshift({
|
|
33
|
+
compInfo,
|
|
34
|
+
cycleIdx: idx
|
|
35
|
+
})
|
|
23
36
|
oneKey = oneKey?.split('->')?.slice(0, -1)?.join('->') || ''
|
|
24
|
-
// oneKey = oneKey.replace(/->[^(->)]+$/, '')
|
|
25
|
-
// oneKey = oneKey.replace(/\[\d+\]$/, '')
|
|
26
37
|
}
|
|
27
38
|
const compInfo = dynamicMapComp[oneKey]
|
|
28
|
-
compInfo && referComps.unshift(
|
|
29
|
-
|
|
30
|
-
|
|
39
|
+
compInfo && referComps.unshift({
|
|
40
|
+
compInfo,
|
|
41
|
+
cycleIdx: -1
|
|
42
|
+
})
|
|
43
|
+
referComps.forEach(({compInfo, cycleIdx}) => {
|
|
44
|
+
validFail(compInfo, cycleIdx)
|
|
31
45
|
})
|
|
32
46
|
// 组件对应的页面展示更新后才能获取到校验住的元素
|
|
33
47
|
setTimeout(() => {
|
|
34
|
-
const
|
|
35
|
-
const
|
|
36
|
-
|
|
48
|
+
const {compInfo: config} = referComps.pop()
|
|
49
|
+
const veiwEl = config?.wrapVm?.vnode?.el
|
|
50
|
+
veiwEl && veiwEl.scrollIntoView({ behavior: 'smooth' })
|
|
51
|
+
|
|
52
|
+
// const fouceErrEle = document.querySelector('.el-form-item__error')
|
|
53
|
+
// const fouceEle = fouceErrEle.parentElement
|
|
54
|
+
// fouceEle && fouceEle.scrollIntoView({ behavior: 'smooth' })
|
|
37
55
|
}, 200)
|
|
38
56
|
}
|
|
39
57
|
}
|
|
40
58
|
// 校验不通过的时候,需要进行一下组件配置的调整,
|
|
41
59
|
// 标签组件,需要进行聚焦当前页面
|
|
42
60
|
// component组件,需要打开折叠
|
|
43
|
-
function validFail(config,
|
|
61
|
+
function validFail(config, cycleIdx) {
|
|
44
62
|
const type = config.renderby || config.metaType
|
|
45
63
|
switch (type) {
|
|
46
64
|
case 'CustomComponentTabPane':
|
|
@@ -57,8 +75,7 @@ function validFail(config, nextConfig) {
|
|
|
57
75
|
config.defaultShowFlag = '1'
|
|
58
76
|
}
|
|
59
77
|
if (type === 'CustomComponentCycleTabPane') {
|
|
60
|
-
|
|
61
|
-
config.currentCode = `${config.metaCode}-${rowIdx}`
|
|
78
|
+
config.currentCode = `${config.metaCode}-${cycleIdx}`
|
|
62
79
|
}
|
|
63
80
|
break
|
|
64
81
|
case 'CustomComponentCollapse':
|