@jari-ace/element-plus-component 0.5.7 → 0.6.0
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/components/autoComplete/JaAutoComplete.vue.d.ts +856 -1163
- package/dist/components/autoComplete/JaAutoComplete.vue.d.ts.map +1 -1
- package/dist/components/avatar/JaAvatar.vue.d.ts +3 -4
- package/dist/components/avatar/JaAvatar.vue.d.ts.map +1 -1
- package/dist/components/avatar/JaAvatar.vue.js +2 -10
- package/dist/components/avatar/JaAvatar.vue.js.map +1 -1
- package/dist/components/button/JaButton.vue.d.ts +354 -246
- package/dist/components/button/JaButton.vue.d.ts.map +1 -1
- package/dist/components/checkbox/JaCheckbox.vue.d.ts +212 -176
- package/dist/components/checkbox/JaCheckbox.vue.d.ts.map +1 -1
- package/dist/components/checkboxGroup/JaCheckboxGroup.vue.d.ts +262 -222
- package/dist/components/checkboxGroup/JaCheckboxGroup.vue.d.ts.map +1 -1
- package/dist/components/departmentPicker/src/DepartmentPicker.vue.js +2 -2
- package/dist/components/departmentPicker/src/DepartmentPicker.vue.js.map +1 -1
- package/dist/components/dropdownButton/JaDropdownButton.vue.d.ts +400 -268
- package/dist/components/dropdownButton/JaDropdownButton.vue.d.ts.map +1 -1
- package/dist/components/flowShell/FlowFormShell.vue.d.ts +339 -0
- package/dist/components/flowShell/FlowFormShell.vue.d.ts.map +1 -1
- package/dist/components/flowShell/FlowFormShell.vue.js +137 -50
- package/dist/components/flowShell/FlowFormShell.vue.js.map +1 -1
- package/dist/components/formItem/JaFormItem.vue.d.ts +228 -186
- package/dist/components/formItem/JaFormItem.vue.d.ts.map +1 -1
- package/dist/components/input/JaInput.vue.d.ts +595 -581
- package/dist/components/input/JaInput.vue.d.ts.map +1 -1
- package/dist/components/input/JaInput.vue.js +4 -2
- package/dist/components/input/JaInput.vue.js.map +1 -1
- package/dist/components/inputNumber/JaInputNumber.vue.d.ts +428 -276
- package/dist/components/inputNumber/JaInputNumber.vue.d.ts.map +1 -1
- package/dist/components/radioGroup/JaRadioGroup.vue.d.ts +246 -155
- package/dist/components/radioGroup/JaRadioGroup.vue.d.ts.map +1 -1
- package/dist/components/rolePicker/baseRolePicker.vue.d.ts +984 -12
- package/dist/components/rolePicker/baseRolePicker.vue.d.ts.map +1 -1
- package/dist/components/scrollbar/Scrollbar.vue.d.ts +332 -194
- package/dist/components/scrollbar/Scrollbar.vue.d.ts.map +1 -1
- package/dist/components/switch/JaSwitch.vue.d.ts +378 -317
- package/dist/components/switch/JaSwitch.vue.d.ts.map +1 -1
- package/dist/components/userGroupPicker/src/UserGroupPicker.vue.js +2 -2
- package/dist/components/userGroupPicker/src/UserGroupPicker.vue.js.map +1 -1
- package/dist/components/userGroupTree/src/userGroupTree.vue.d.ts +416 -324
- package/dist/components/userGroupTree/src/userGroupTree.vue.d.ts.map +1 -1
- package/lib/index.css +1 -1
- package/lib/index.js +8907 -8683
- package/lib/index.umd.cjs +34 -34
- package/package.json +2 -2
- package/packages/components/avatar/JaAvatar.vue +7 -16
- package/packages/components/departmentPicker/src/DepartmentPicker.vue +1 -1
- package/packages/components/flowShell/FlowFormShell.vue +97 -7
- package/packages/components/input/JaInput.vue +2 -1
- package/packages/components/userGroupPicker/src/UserGroupPicker.vue +1 -1
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@jari-ace/element-plus-component",
|
|
3
3
|
"private": false,
|
|
4
|
-
"version": "0.
|
|
4
|
+
"version": "0.6.0",
|
|
5
5
|
"main": "lib/index.umd.cjs",
|
|
6
6
|
"module": "lib/index.js",
|
|
7
7
|
"types": "dist/index.d.ts",
|
|
@@ -35,7 +35,7 @@
|
|
|
35
35
|
"@vitejs/plugin-vue-jsx": "^4.1.1",
|
|
36
36
|
"@vue/tsconfig": "^0.5.1",
|
|
37
37
|
"@vueuse/core": "^11.1.0",
|
|
38
|
-
"element-plus": "2.
|
|
38
|
+
"element-plus": "2.13.2",
|
|
39
39
|
"gulp": "^4.0.2",
|
|
40
40
|
"gulp-autoprefixer": "^8.0.0",
|
|
41
41
|
"gulp-clean-css": "^4.3.0",
|
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
<script setup lang="ts">
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import type { AvatarProps } from "element-plus";
|
|
2
|
+
import {getAvatarToken} from "./avatarToken";
|
|
3
|
+
import {ElAvatar, ElImage} from "element-plus";
|
|
5
4
|
import {
|
|
6
5
|
computed,
|
|
6
|
+
defineProps,
|
|
7
7
|
nextTick,
|
|
8
8
|
onMounted, onUnmounted,
|
|
9
9
|
ref,
|
|
10
10
|
watch,
|
|
11
11
|
withDefaults
|
|
12
12
|
} from "vue";
|
|
13
|
-
import {
|
|
13
|
+
import {defaultImg} from "./defaultImg";
|
|
14
14
|
|
|
15
|
-
|
|
15
|
+
const props = withDefaults(defineProps<{
|
|
16
16
|
/**
|
|
17
17
|
* 用户id
|
|
18
18
|
*/
|
|
@@ -35,9 +35,7 @@ export interface JaAvatarProps extends Partial<AvatarProps> {
|
|
|
35
35
|
hasAvatar?: boolean,
|
|
36
36
|
|
|
37
37
|
firstName?: string
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
const props = withDefaults(defineProps<JaAvatarProps>(), {
|
|
38
|
+
}>(), {
|
|
41
39
|
doNotLoadAvatar: false
|
|
42
40
|
})
|
|
43
41
|
|
|
@@ -53,7 +51,6 @@ if (!scrollbarWrappedItems) {
|
|
|
53
51
|
onMounted(async () => {
|
|
54
52
|
await nextTick();
|
|
55
53
|
if (scrollbarWrappedItems) {
|
|
56
|
-
// @ts-ignore
|
|
57
54
|
scrollbarWrappedItems.value?.push({
|
|
58
55
|
childElement: avatar.value?.$el,
|
|
59
56
|
onInView(isInView: boolean) {
|
|
@@ -96,21 +93,15 @@ function adjustFontSize(element?: HTMLElement) {
|
|
|
96
93
|
|
|
97
94
|
onUnmounted(() => {
|
|
98
95
|
if (scrollbarWrappedItems) {
|
|
99
|
-
// @ts-ignore
|
|
100
96
|
scrollbarWrappedItems.value = undefined;
|
|
101
97
|
}
|
|
102
98
|
})
|
|
103
99
|
|
|
104
100
|
watch(usernameSpan, () => adjustFontSize(usernameSpan.value))
|
|
105
|
-
|
|
106
|
-
const elementProps = computed(() => {
|
|
107
|
-
const { userId, username, realm, doNotLoadAvatar, hasAvatar, firstName, ...rest } = props
|
|
108
|
-
return rest
|
|
109
|
-
})
|
|
110
101
|
</script>
|
|
111
102
|
|
|
112
103
|
<template>
|
|
113
|
-
<el-avatar :src="lazyUrl" v-bind="
|
|
104
|
+
<el-avatar :src="lazyUrl" v-bind="$attrs" ref="avatar" class="ja-avatar">
|
|
114
105
|
<span v-if="props.firstName && props.firstName.length > 0" class="user-name-avatar"
|
|
115
106
|
ref="usernameSpan">
|
|
116
107
|
{{ firstName }}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
<template>
|
|
2
|
-
<div v-if="dialogVisible" class="flow-shell-wrapper">
|
|
3
|
-
<div class="flow-shell-container" v-loading="isLoading">
|
|
2
|
+
<div v-if="dialogVisible" class="flow-shell-wrapper" :style="wrapperStyle">
|
|
3
|
+
<div class="flow-shell-container" v-loading="isLoading" :style="containerStyle">
|
|
4
4
|
<header class="flow-shell-header">
|
|
5
5
|
<div class="header-content">
|
|
6
6
|
<div class="header-top">
|
|
@@ -62,11 +62,14 @@
|
|
|
62
62
|
</section>
|
|
63
63
|
|
|
64
64
|
<!-- 右侧辅助面板 -->
|
|
65
|
-
<aside class="side-panel">
|
|
65
|
+
<aside class="side-panel" :class="{ 'collapsed': sidePanelCollapsed }">
|
|
66
66
|
<div class="side-panel-header">
|
|
67
67
|
<h3>办理历史</h3>
|
|
68
|
+
<div class="collapse-btn" @click="sidePanelCollapsed = !sidePanelCollapsed" :title="sidePanelCollapsed ? '展开' : '收起'">
|
|
69
|
+
<el-icon><ArrowRight v-if="!sidePanelCollapsed" /><ArrowLeft v-else /></el-icon>
|
|
70
|
+
</div>
|
|
68
71
|
</div>
|
|
69
|
-
<div class="side-panel-content">
|
|
72
|
+
<div class="side-panel-content" v-show="!sidePanelCollapsed">
|
|
70
73
|
<el-timeline v-if="sortedTasks.length > 0">
|
|
71
74
|
<el-timeline-item v-for="(task, index) in sortedTasks" :key="index"
|
|
72
75
|
:timestamp="formatFriendlyTime(task.finishTime)" placement="top">
|
|
@@ -105,6 +108,7 @@
|
|
|
105
108
|
:tooltip="'保存并' + (flowFormParam?.taskInstance ? '结束当前工作步骤办理' : '发起工作')" :loading="saving"
|
|
106
109
|
:disabled="saving">{{
|
|
107
110
|
flowFormParam?.taskInstance ? "办理结束" : "发起工作" }}</ja-button>
|
|
111
|
+
<slot name="footer" :flowParam="flowFormParam"></slot>
|
|
108
112
|
</footer>
|
|
109
113
|
</div>
|
|
110
114
|
</div>
|
|
@@ -118,7 +122,7 @@ import { createAxiosWithoutCache, useLoading } from '@jari-ace/app-bolts'
|
|
|
118
122
|
import { ElMessage, ElTag, ElCard, ElButton, ElTimeline, ElTimelineItem, ElEmpty, ElIcon, ElResult } from 'element-plus'
|
|
119
123
|
import { JaButton } from '../button'
|
|
120
124
|
import { JaUserInfoTag } from '../userTag'
|
|
121
|
-
import { ArrowLeft } from '@element-plus/icons-vue'
|
|
125
|
+
import { ArrowLeft, ArrowRight } from '@element-plus/icons-vue'
|
|
122
126
|
import dayjs from 'dayjs'
|
|
123
127
|
import relativeTime from 'dayjs/plugin/relativeTime'
|
|
124
128
|
import 'dayjs/locale/zh-cn'
|
|
@@ -153,17 +157,33 @@ const props = withDefaults(defineProps<{
|
|
|
153
157
|
* 保存表单数据的方法,保存成功时发起或转交工作
|
|
154
158
|
*/
|
|
155
159
|
saveAndForward: (formData: FlowProcessRequest<T>) => Promise<any>
|
|
160
|
+
/**
|
|
161
|
+
* 对话框宽度,为空时全屏
|
|
162
|
+
*/
|
|
163
|
+
width?: string
|
|
164
|
+
/**
|
|
165
|
+
* 对话框高度,为空时全屏
|
|
166
|
+
*/
|
|
167
|
+
height?: string
|
|
168
|
+
/**
|
|
169
|
+
* 侧边栏默认是否收起
|
|
170
|
+
*/
|
|
171
|
+
defaultCollapsed?: boolean
|
|
156
172
|
}>(), {
|
|
157
173
|
appName: undefined,
|
|
158
174
|
flowKey: undefined,
|
|
159
175
|
startNodeKey: undefined,
|
|
160
|
-
taskInstanceId: undefined
|
|
176
|
+
taskInstanceId: undefined,
|
|
177
|
+
width: undefined,
|
|
178
|
+
height: undefined,
|
|
179
|
+
defaultCollapsed: false
|
|
161
180
|
})
|
|
162
181
|
|
|
163
182
|
// 内部状态
|
|
164
183
|
const dialogVisible = defineModel<boolean>({
|
|
165
184
|
default: false
|
|
166
185
|
})
|
|
186
|
+
const sidePanelCollapsed = ref(props.defaultCollapsed)
|
|
167
187
|
const axios = createAxiosWithoutCache()
|
|
168
188
|
const loading = useLoading(axios)
|
|
169
189
|
const localLoading = ref(false)
|
|
@@ -178,6 +198,38 @@ const emits = defineEmits<{
|
|
|
178
198
|
(e: 'closed'): void
|
|
179
199
|
}>();
|
|
180
200
|
|
|
201
|
+
const isModal = computed(() => !!props.width || !!props.height)
|
|
202
|
+
|
|
203
|
+
const wrapperStyle = computed(() => {
|
|
204
|
+
if (isModal.value) {
|
|
205
|
+
return {
|
|
206
|
+
justifyContent: 'center',
|
|
207
|
+
alignItems: 'center',
|
|
208
|
+
backgroundColor: 'rgba(0, 0, 0, 0.5)'
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
return {
|
|
212
|
+
backgroundColor: '#f5f7fa'
|
|
213
|
+
}
|
|
214
|
+
})
|
|
215
|
+
|
|
216
|
+
const containerStyle = computed(() => {
|
|
217
|
+
if (isModal.value) {
|
|
218
|
+
return {
|
|
219
|
+
width: props.width || '100%',
|
|
220
|
+
height: props.height || '100%',
|
|
221
|
+
backgroundColor: '#f5f7fa',
|
|
222
|
+
borderRadius: '4px',
|
|
223
|
+
boxShadow: '0 2px 12px 0 rgba(0, 0, 0, 0.1)',
|
|
224
|
+
overflow: 'hidden'
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
return {
|
|
228
|
+
width: '100%',
|
|
229
|
+
height: '100%'
|
|
230
|
+
}
|
|
231
|
+
})
|
|
232
|
+
|
|
181
233
|
const flowStateTagType = computed(() => {
|
|
182
234
|
switch (flowFormParam.value?.flowInstance?.state) {
|
|
183
235
|
case 0:
|
|
@@ -517,6 +569,11 @@ const handleForward = async () => {
|
|
|
517
569
|
display: flex;
|
|
518
570
|
flex-direction: column;
|
|
519
571
|
width: 400px;
|
|
572
|
+
transition: width 0.3s ease;
|
|
573
|
+
}
|
|
574
|
+
|
|
575
|
+
.side-panel.collapsed {
|
|
576
|
+
width: 40px;
|
|
520
577
|
}
|
|
521
578
|
|
|
522
579
|
.side-panel-header {
|
|
@@ -524,8 +581,16 @@ const handleForward = async () => {
|
|
|
524
581
|
border-bottom: 1px solid #e0e0e0;
|
|
525
582
|
display: flex;
|
|
526
583
|
align-items: center;
|
|
527
|
-
|
|
584
|
+
justify-content: space-between;
|
|
585
|
+
padding: 0 10px 0 20px;
|
|
528
586
|
background-color: #fafafa;
|
|
587
|
+
overflow: hidden;
|
|
588
|
+
white-space: nowrap;
|
|
589
|
+
}
|
|
590
|
+
|
|
591
|
+
.side-panel.collapsed .side-panel-header {
|
|
592
|
+
padding: 0;
|
|
593
|
+
justify-content: center;
|
|
529
594
|
}
|
|
530
595
|
|
|
531
596
|
.side-panel-header h3 {
|
|
@@ -533,6 +598,31 @@ const handleForward = async () => {
|
|
|
533
598
|
font-size: 16px;
|
|
534
599
|
font-weight: 600;
|
|
535
600
|
color: #303133;
|
|
601
|
+
transition: opacity 0.3s;
|
|
602
|
+
}
|
|
603
|
+
|
|
604
|
+
.side-panel.collapsed .side-panel-header h3 {
|
|
605
|
+
opacity: 0;
|
|
606
|
+
width: 0;
|
|
607
|
+
margin: 0;
|
|
608
|
+
padding: 0;
|
|
609
|
+
display: none;
|
|
610
|
+
}
|
|
611
|
+
|
|
612
|
+
.collapse-btn {
|
|
613
|
+
cursor: pointer;
|
|
614
|
+
display: flex;
|
|
615
|
+
align-items: center;
|
|
616
|
+
justify-content: center;
|
|
617
|
+
width: 24px;
|
|
618
|
+
height: 24px;
|
|
619
|
+
border-radius: 4px;
|
|
620
|
+
color: #909399;
|
|
621
|
+
}
|
|
622
|
+
|
|
623
|
+
.collapse-btn:hover {
|
|
624
|
+
background-color: #e6e6e6;
|
|
625
|
+
color: #606266;
|
|
536
626
|
}
|
|
537
627
|
|
|
538
628
|
.side-panel-content {
|
|
@@ -23,7 +23,8 @@ const props = withDefaults(defineProps<JaInputProps>(), {
|
|
|
23
23
|
autocomplete: 'off',
|
|
24
24
|
readonly: false,
|
|
25
25
|
autofocus: false,
|
|
26
|
-
validateEvent: true
|
|
26
|
+
validateEvent: true,
|
|
27
|
+
inputStyle: () => ({})
|
|
27
28
|
})
|
|
28
29
|
|
|
29
30
|
const model = inject('aceFormModel') as Record<string, any>
|