resolver-egretimp-plus 0.1.19 → 0.1.21
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/web/index.js +2 -2
- package/package.json +1 -1
- package/src/components/packages-web/CustomComponentNativeTabPane.vue +70 -0
- package/src/components/packages-web/CustomComponentTabPane.vue +11 -61
- package/src/components/packages-web/CustomComponentTabs.vue +14 -4
- package/src/rules/ruleUtils.js +1 -1
- package/src/utils/defaultVal.js +5 -4
- package/src/utils/valid.js +3 -3
package/package.json
CHANGED
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<TabPane v-bind="{...attrs, ...tabPaneProps, ...polyProps}">
|
|
3
|
+
<template #label v-if="labelRenderContent || slotsPageMetalist.length">
|
|
4
|
+
<component :is="labelRenderContent" v-if="labelRenderContent"></component>
|
|
5
|
+
<Renderer v-else :config="slotsPageMetalist" v-model="props.refValue.value"></Renderer>
|
|
6
|
+
</template>
|
|
7
|
+
<ElRow>
|
|
8
|
+
<Renderer :config="(props.config.pmPageMetaList || []).filter(config => !config.collapseSlot)" v-model="props.refValue.value"></Renderer>
|
|
9
|
+
</ElRow>
|
|
10
|
+
<template v-for="(_, key) in slots" :key="key" v-slot:[key]="scope">
|
|
11
|
+
<slot :name="key" v-bind="scope"></slot>
|
|
12
|
+
</template>
|
|
13
|
+
</TabPane>
|
|
14
|
+
</template>
|
|
15
|
+
<script setup>
|
|
16
|
+
import { ElTabPane, ElRow } from 'element-plus'
|
|
17
|
+
import Renderer from '../../renderer.jsx'
|
|
18
|
+
import { computed, inject, useAttrs, useSlots } from 'vue'
|
|
19
|
+
import { commonPropsType } from '../../utils/index.js'
|
|
20
|
+
import { TabPane } from '../tabs'
|
|
21
|
+
import { h } from 'vue'
|
|
22
|
+
|
|
23
|
+
const slots = useSlots()
|
|
24
|
+
const props = defineProps({
|
|
25
|
+
...commonPropsType,
|
|
26
|
+
...TabPane.props,
|
|
27
|
+
hidden: [String, Boolean, Number],
|
|
28
|
+
activeNames: String,
|
|
29
|
+
})
|
|
30
|
+
const attrs = useAttrs()
|
|
31
|
+
|
|
32
|
+
const slotsPageMetalist = computed(() => {
|
|
33
|
+
return (props.config.pmPageMetaList || []).filter(config => config.collapseSlot)
|
|
34
|
+
})
|
|
35
|
+
|
|
36
|
+
const lang = inject('lang')
|
|
37
|
+
const polyProps = computed(() => {
|
|
38
|
+
return {
|
|
39
|
+
label: lang.value.indexOf('zh') > -1 ? props.config?.metaNameZh : props.config?.metaNameEn,
|
|
40
|
+
name: props.config?.metaCode
|
|
41
|
+
}
|
|
42
|
+
})
|
|
43
|
+
const tabPaneProps = computed(() => {
|
|
44
|
+
const ret = Object.keys(TabPane.props).reduce((ret, key) => {
|
|
45
|
+
ret[key] = props[key]
|
|
46
|
+
return ret
|
|
47
|
+
}, {})
|
|
48
|
+
if (typeof ret.hidden !== 'boolean') {
|
|
49
|
+
ret.hidden = ret.hidden == '1'
|
|
50
|
+
}
|
|
51
|
+
return ret
|
|
52
|
+
})
|
|
53
|
+
|
|
54
|
+
// 自定义渲染label方法
|
|
55
|
+
const labelRenderContent = computed(() => {
|
|
56
|
+
const context = props.config?.labelRender?.(getLableRenderParams())
|
|
57
|
+
if (typeof context === 'string') {
|
|
58
|
+
return h('span', context)
|
|
59
|
+
} else {
|
|
60
|
+
return context
|
|
61
|
+
}
|
|
62
|
+
})
|
|
63
|
+
function getLableRenderParams() {
|
|
64
|
+
return {
|
|
65
|
+
config: props.config,
|
|
66
|
+
tabPaneData: props.refValue.value,
|
|
67
|
+
isActive: props.activeNames === props.config?.metaCode,
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
</script>
|
|
@@ -1,70 +1,20 @@
|
|
|
1
1
|
<template>
|
|
2
|
-
<
|
|
3
|
-
<template #label v-if="labelRenderContent || slotsPageMetalist.length">
|
|
4
|
-
<component :is="labelRenderContent" v-if="labelRenderContent"></component>
|
|
5
|
-
<Renderer v-else :config="slotsPageMetalist" v-model="props.refValue.value"></Renderer>
|
|
6
|
-
</template>
|
|
7
|
-
<ElRow>
|
|
8
|
-
<Renderer :config="(props.config.pmPageMetaList || []).filter(config => !config.collapseSlot)" v-model="props.refValue.value"></Renderer>
|
|
9
|
-
</ElRow>
|
|
10
|
-
<template v-for="(_, key) in slots" :key="key" v-slot:[key]="scope">
|
|
11
|
-
<slot :name="key" v-bind="scope"></slot>
|
|
12
|
-
</template>
|
|
13
|
-
</TabPane>
|
|
2
|
+
<component :is="comp" v-bind="attrs"></component>
|
|
14
3
|
</template>
|
|
15
4
|
<script setup>
|
|
16
|
-
import {
|
|
17
|
-
import
|
|
18
|
-
import
|
|
19
|
-
import {
|
|
20
|
-
import { TabPane } from '../tabs'
|
|
21
|
-
import { h } from 'vue'
|
|
5
|
+
import { useAttrs } from 'vue'
|
|
6
|
+
import CustomComponentCycleTabPane from './CustomComponentCycleTabPane.vue'
|
|
7
|
+
import CustomComponentNativeTabPane from './CustomComponentNativeTabPane.vue'
|
|
8
|
+
import { computed } from 'vue'
|
|
22
9
|
|
|
23
|
-
const slots = useSlots()
|
|
24
|
-
const props = defineProps({
|
|
25
|
-
...commonPropsType,
|
|
26
|
-
...TabPane.props,
|
|
27
|
-
hidden: [String, Boolean, Number],
|
|
28
|
-
activeNames: String,
|
|
29
|
-
})
|
|
30
10
|
const attrs = useAttrs()
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
const lang = inject('lang')
|
|
37
|
-
const polyProps = computed(() => {
|
|
38
|
-
return {
|
|
39
|
-
label: lang.value.indexOf('zh') > -1 ? props.config?.metaNameZh : props.config?.metaNameEn,
|
|
40
|
-
name: props.config?.metaCode
|
|
41
|
-
}
|
|
42
|
-
})
|
|
43
|
-
const tabPaneProps = computed(() => {
|
|
44
|
-
const ret = Object.keys(TabPane.props).reduce((ret, key) => {
|
|
45
|
-
ret[key] = props[key]
|
|
46
|
-
return ret
|
|
47
|
-
}, {})
|
|
48
|
-
if (typeof ret.hidden !== 'boolean') {
|
|
49
|
-
ret.hidden = ret.hidden == '1'
|
|
11
|
+
const props = defineProps({
|
|
12
|
+
isCycle: {
|
|
13
|
+
type: [String, Number],
|
|
14
|
+
default: '0'
|
|
50
15
|
}
|
|
51
|
-
return ret
|
|
52
16
|
})
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
const labelRenderContent = computed(() => {
|
|
56
|
-
const context = props.config?.labelRender?.(getLableRenderParams())
|
|
57
|
-
if (typeof context === 'string') {
|
|
58
|
-
return h('span', context)
|
|
59
|
-
} else {
|
|
60
|
-
return context
|
|
61
|
-
}
|
|
17
|
+
const comp = computed(() => {
|
|
18
|
+
return props.isCycle == '1' ? CustomComponentCycleTabPane : CustomComponentNativeTabPane
|
|
62
19
|
})
|
|
63
|
-
function getLableRenderParams() {
|
|
64
|
-
return {
|
|
65
|
-
config: props.config,
|
|
66
|
-
tabPaneData: props.refValue.value,
|
|
67
|
-
isActive: props.activeNames === props.config?.metaCode,
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
20
|
</script>
|
|
@@ -41,13 +41,23 @@ const activeNames = computed({
|
|
|
41
41
|
get() {
|
|
42
42
|
const currentTab = tabpanes.value.find(tab => tab.defaultShowFlag == '1')
|
|
43
43
|
const currentCycleTab = tabpanes.value.find(tab => tab.currentCode)
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
44
|
+
if (currentTab) {
|
|
45
|
+
return currentTab?.isCycle == '1' ? `${currentTab.metaCode}-0` : currentTab.metaCode
|
|
46
|
+
}
|
|
47
|
+
if (currentCycleTab) {
|
|
48
|
+
return currentCycleTab.currentCode
|
|
49
|
+
}
|
|
50
|
+
if (tabpanes.value[0]) {
|
|
51
|
+
if (assertMetaType(tabpanes.value[0], 'CustomComponentCycleTabPane') || tabpanes.value[0]?.isCycle == '1') {
|
|
52
|
+
return `${tabpanes.value[0].metaCode}-0`
|
|
53
|
+
} else {
|
|
54
|
+
return tabpanes.value[0].metaCode
|
|
55
|
+
}
|
|
56
|
+
}
|
|
47
57
|
},
|
|
48
58
|
set(val) {
|
|
49
59
|
tabpanes.value.forEach(tab => {
|
|
50
|
-
if (assertMetaType(tab, 'CustomComponentCycleTabPane')) {
|
|
60
|
+
if (assertMetaType(tab, 'CustomComponentCycleTabPane') || tab?.isCycle == '1') {
|
|
51
61
|
if (/^cycleTabpane-(\d+)$/.test(val)) {
|
|
52
62
|
tab.currentCode = val
|
|
53
63
|
} else {
|
package/src/rules/ruleUtils.js
CHANGED
|
@@ -47,7 +47,7 @@ export function setFormVal(pathStr, val) {
|
|
|
47
47
|
configs.forEach(cg => {
|
|
48
48
|
if (hasOwn(cg, 'refValue')) {
|
|
49
49
|
if (cg.metaType === 'ElSelect') {
|
|
50
|
-
val = formatSelectVal({config, val: val})
|
|
50
|
+
val = formatSelectVal({config: cg, val: val, isActive: true})
|
|
51
51
|
}
|
|
52
52
|
cg.refValue = val
|
|
53
53
|
} else {
|
package/src/utils/defaultVal.js
CHANGED
|
@@ -43,10 +43,11 @@ export default function defaultVal(config) {
|
|
|
43
43
|
|
|
44
44
|
export function formatSelectVal({
|
|
45
45
|
config,
|
|
46
|
-
val
|
|
46
|
+
val,
|
|
47
|
+
isActive = false
|
|
47
48
|
}) {
|
|
48
49
|
let retValue = val
|
|
49
|
-
if (!isHidden({config})) {
|
|
50
|
+
if (!isHidden({config}) || isActive) {
|
|
50
51
|
const valueType = config?.valueType
|
|
51
52
|
const separator = config?.separator
|
|
52
53
|
if (valueType == VALUE_TYPES.STRING) {
|
|
@@ -61,10 +62,10 @@ export function formatSelectVal({
|
|
|
61
62
|
if ((val && isString(val)) || isNumber(val)) {
|
|
62
63
|
retValue = `${val}`?.split(separator)
|
|
63
64
|
if (valueType == VALUE_TYPES.OBJECT) {
|
|
64
|
-
retValue =
|
|
65
|
+
retValue = retValue?.reduce((ret, item, idx) => {ret[idx] = item; return ret;}, {})
|
|
65
66
|
}
|
|
66
67
|
}
|
|
67
68
|
}
|
|
68
69
|
}
|
|
69
|
-
return
|
|
70
|
+
return retValue
|
|
70
71
|
}
|
package/src/utils/valid.js
CHANGED
|
@@ -67,14 +67,14 @@ function validFail(config, cycleIdx) {
|
|
|
67
67
|
if (tab.metaType === 'CustomComponentTabPane') {
|
|
68
68
|
tab.defaultShowFlag = '0'
|
|
69
69
|
}
|
|
70
|
-
if (tab.metaType === 'CustomComponentCycleTabPane') {
|
|
70
|
+
if (tab.metaType === 'CustomComponentCycleTabPane' || tab?.isCycle == '1') {
|
|
71
71
|
tab.currentCode = ''
|
|
72
72
|
}
|
|
73
73
|
})
|
|
74
|
-
if (type === 'CustomComponentTabPane') {
|
|
74
|
+
if (type === 'CustomComponentTabPane' && config?.isCycle != '1') {
|
|
75
75
|
config.defaultShowFlag = '1'
|
|
76
76
|
}
|
|
77
|
-
if (type === 'CustomComponentCycleTabPane') {
|
|
77
|
+
if (type === 'CustomComponentCycleTabPane' || config?.isCycle == '1') {
|
|
78
78
|
config.currentCode = `${config.metaCode}-${cycleIdx}`
|
|
79
79
|
}
|
|
80
80
|
break
|