resolver-egretimp-plus 0.0.279 → 0.0.280
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/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "resolver-egretimp-plus",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.280",
|
|
4
4
|
"description": "交付体验渲染",
|
|
5
5
|
"main": "./dist/web/index.js",
|
|
6
6
|
"module": "./dist/web/index.js",
|
|
@@ -11,6 +11,11 @@
|
|
|
11
11
|
"./const": "./dist/const/index.js",
|
|
12
12
|
"./*": "./*"
|
|
13
13
|
},
|
|
14
|
+
"scripts": {
|
|
15
|
+
"build:package": "webpack --config scripts/webpack.config.js",
|
|
16
|
+
"build:theme": "gulp -f scripts/gulpfile.mjs",
|
|
17
|
+
"build": "npm run build:package && npm run build:theme"
|
|
18
|
+
},
|
|
14
19
|
"author": "caowb",
|
|
15
20
|
"license": "ISC",
|
|
16
21
|
"devDependencies": {
|
|
@@ -49,10 +54,5 @@
|
|
|
49
54
|
"vue3-sfc-loader": "^0.9.5",
|
|
50
55
|
"webpack": "^5.90.0",
|
|
51
56
|
"webpack-cli": "^5.1.4"
|
|
52
|
-
},
|
|
53
|
-
"scripts": {
|
|
54
|
-
"build:package": "webpack --config scripts/webpack.config.js",
|
|
55
|
-
"build:theme": "gulp -f scripts/gulpfile.mjs",
|
|
56
|
-
"build": "npm run build:package && npm run build:theme"
|
|
57
57
|
}
|
|
58
|
-
}
|
|
58
|
+
}
|
|
@@ -91,9 +91,13 @@ export default {
|
|
|
91
91
|
return normalColumnConfig(config)
|
|
92
92
|
})
|
|
93
93
|
})
|
|
94
|
+
let pageSize = 5
|
|
95
|
+
if (props.config?.pageSize) {
|
|
96
|
+
pageSize = parseInt(props.config.pageSize) || 5
|
|
97
|
+
}
|
|
94
98
|
const page = reactive({
|
|
95
99
|
pageNum: 1,
|
|
96
|
-
pageSize
|
|
100
|
+
pageSize,
|
|
97
101
|
total: 0,
|
|
98
102
|
})
|
|
99
103
|
const isFrontPage = computed(() => {
|
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<ElSelect class="custom-self-select" v-bind="{...attrs, ...selectProps }" v-model="value" @clear="clear">
|
|
3
|
+
<ElOption v-for="option in options"
|
|
4
|
+
:key="option.columnValue"
|
|
5
|
+
:label="lang.indexOf('zh') > -1 ? option.columnDesc_zh : option.columnDesc"
|
|
6
|
+
:value="option.columnValue"
|
|
7
|
+
:disabled="option.columnStatus == '0' || option.columnStatus == '2'"
|
|
8
|
+
>
|
|
9
|
+
<template v-for="(_, key) in optionsSlots" :key="key" v-slot:[key]="scope">
|
|
10
|
+
<slot :name="key" v-bind="scope"></slot>
|
|
11
|
+
</template>
|
|
12
|
+
</ElOption>
|
|
13
|
+
<template v-for="(_, key) in slots" :key="key" v-slot:[key]="scope">
|
|
14
|
+
<slot :name="key" v-bind="scope"></slot>
|
|
15
|
+
</template>
|
|
16
|
+
</ElSelect>
|
|
17
|
+
</template>
|
|
18
|
+
<script setup>
|
|
19
|
+
import { ElSelect, ElOption } from 'element-plus'
|
|
20
|
+
import { computed, defineProps, inject, useAttrs, useSlots } from 'vue'
|
|
21
|
+
import { commonPropsType, getComponentSolt } from '../../utils/index.js'
|
|
22
|
+
|
|
23
|
+
const VALUE_TYPES = {
|
|
24
|
+
LIST: 'list',
|
|
25
|
+
OBJECT: 'object',
|
|
26
|
+
STRING: 'string',
|
|
27
|
+
}
|
|
28
|
+
const slots = useSlots()
|
|
29
|
+
const optionsSlots = computed(() => {
|
|
30
|
+
return getComponentSolt({
|
|
31
|
+
config: props.config,
|
|
32
|
+
slotKey: 'optionsSlots'
|
|
33
|
+
}) || {}
|
|
34
|
+
})
|
|
35
|
+
const modelValue = defineModel()
|
|
36
|
+
const props = defineProps({
|
|
37
|
+
...ElSelect.props,
|
|
38
|
+
...commonPropsType,
|
|
39
|
+
multiple: [String, Boolean],
|
|
40
|
+
filterable: [String, Boolean],
|
|
41
|
+
multipleLimit: [String, Number],
|
|
42
|
+
rangeOptions: Array,
|
|
43
|
+
excludeOptions: Array,
|
|
44
|
+
// 多选的分割符号
|
|
45
|
+
separator: {
|
|
46
|
+
type: [String],
|
|
47
|
+
default: ','
|
|
48
|
+
}
|
|
49
|
+
})
|
|
50
|
+
const attrs = useAttrs()
|
|
51
|
+
const separator = computed(() => {
|
|
52
|
+
return props.separator
|
|
53
|
+
})
|
|
54
|
+
const valueTypes = computed(() => {
|
|
55
|
+
return props.config?.valueType
|
|
56
|
+
})
|
|
57
|
+
// 值是list 还是,连起来的string
|
|
58
|
+
const isStrVal = computed(() => {
|
|
59
|
+
// valueType 值为 list 或者 string
|
|
60
|
+
return valueTypes.value !== VALUE_TYPES.LIST && valueTypes.value !== VALUE_TYPES.OBJECT
|
|
61
|
+
})
|
|
62
|
+
const isObject = computed(() => {
|
|
63
|
+
return valueTypes.value === VALUE_TYPES.OBJECT
|
|
64
|
+
})
|
|
65
|
+
|
|
66
|
+
// 是否为多选
|
|
67
|
+
const isMutiple = computed(() => {
|
|
68
|
+
return props.multiple == '1'
|
|
69
|
+
})
|
|
70
|
+
|
|
71
|
+
const options = computed(() => {
|
|
72
|
+
let list = props.options
|
|
73
|
+
if (props.rangeOptions && props.rangeOptions.length) {
|
|
74
|
+
list = list?.filter?.(item => props.rangeOptions?.some(subValue => subValue == item.columnValue))
|
|
75
|
+
}
|
|
76
|
+
if (props.excludeOptions && props.excludeOptions.length) {
|
|
77
|
+
list = list?.filter?.(item => !(props.excludeOptions?.some(subValue => subValue == item.columnValue)))
|
|
78
|
+
}
|
|
79
|
+
return list
|
|
80
|
+
})
|
|
81
|
+
|
|
82
|
+
const value = computed({
|
|
83
|
+
get() {
|
|
84
|
+
if (isMutiple.value) {
|
|
85
|
+
const val = modelValue.value || ''
|
|
86
|
+
return val ?
|
|
87
|
+
(
|
|
88
|
+
isStrVal.value ?
|
|
89
|
+
val.split(separator.value) :
|
|
90
|
+
(
|
|
91
|
+
isObject.value ?
|
|
92
|
+
Object.values(val || {}) :
|
|
93
|
+
val
|
|
94
|
+
)
|
|
95
|
+
) :
|
|
96
|
+
[]
|
|
97
|
+
} else {
|
|
98
|
+
if (modelValue.value !== null && modelValue.value !== undefined) {
|
|
99
|
+
if (options.value?.some(item => item.columnValue == modelValue.value)) {
|
|
100
|
+
props.config.isMatch = true
|
|
101
|
+
return `${modelValue.value}`
|
|
102
|
+
} else {
|
|
103
|
+
props.config.isMatch = false
|
|
104
|
+
return ''
|
|
105
|
+
}
|
|
106
|
+
} else {
|
|
107
|
+
return ''
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
},
|
|
111
|
+
set(val) {
|
|
112
|
+
if (isMutiple.value) {
|
|
113
|
+
modelValue.value = isStrVal.value ?
|
|
114
|
+
val.join(separator.value) :
|
|
115
|
+
(
|
|
116
|
+
isObject.value ?
|
|
117
|
+
val?.reduce((ret, item, idx) => {ret[idx] = item; return ret;}, {}) :
|
|
118
|
+
val
|
|
119
|
+
)
|
|
120
|
+
} else {
|
|
121
|
+
modelValue.value = val
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
})
|
|
125
|
+
|
|
126
|
+
const selectProps = computed(() => {
|
|
127
|
+
const attrs = Object.keys(ElSelect.props).reduce((ret, key) => {
|
|
128
|
+
ret[key] = props[key]
|
|
129
|
+
return ret
|
|
130
|
+
}, {})
|
|
131
|
+
if (attrs.placeholder === null || attrs.placeholder === undefined) {
|
|
132
|
+
attrs.placeholder = ''
|
|
133
|
+
}
|
|
134
|
+
if (typeof attrs.filterable === 'string') {
|
|
135
|
+
attrs.filterable = attrs.filterable == '1'
|
|
136
|
+
}
|
|
137
|
+
if (typeof attrs.multiple === 'string') {
|
|
138
|
+
attrs.multiple = attrs.multiple == '1'
|
|
139
|
+
}
|
|
140
|
+
if (!attrs['suffix-icon'] && !attrs.suffixIcon) {
|
|
141
|
+
delete attrs.suffixIcon
|
|
142
|
+
delete attrs['suffix-icon']
|
|
143
|
+
}
|
|
144
|
+
attrs.multipleLimit = Number(parseInt(attrs.multipleLimit || 0))
|
|
145
|
+
return attrs
|
|
146
|
+
})
|
|
147
|
+
const lang = inject('lang')
|
|
148
|
+
const clear = () => {
|
|
149
|
+
modelValue.value = ''
|
|
150
|
+
}
|
|
151
|
+
</script>
|
|
152
|
+
<style lang="scss">
|
|
153
|
+
.custom-self-select {
|
|
154
|
+
}
|
|
155
|
+
</style>
|