agilebuilder-ui 1.1.65-tmp22 → 1.1.65-tmp24
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/index.full.min.js +462 -281
- package/dist/style.css +181 -175
- package/es/chat-embed/src/chat-sender.vue.mjs +1 -1
- package/es/chat-embed/src/chat-sender.vue2.mjs +26 -28
- package/es/chat-embed/src/index.vue.mjs +1 -1
- package/es/chat-embed/src/index.vue2.mjs +29 -29
- package/es/department-tree-mobile/src/department-tree-inline-app.vue.mjs +68 -68
- package/es/department-tree-mobile/src/department-tree-service.mjs +20 -18
- package/es/department-tree-mobile/src/dept-result.vue.mjs +12 -11
- package/es/department-user-tree-inline/src/department-user-single-tree-inline.vue.mjs +3 -3
- package/es/department-user-tree-inline/src/department-user-tree-inline.vue.mjs +6 -6
- package/es/department-user-tree-inline/src/department-user-tree-single-service.mjs +1 -1
- package/es/fs-preview/src/fs-preview.vue.mjs +26 -18
- package/es/fs-upload-new/src/file-upload-mobile/file-upload-browser.vue.mjs +1 -1
- package/es/fs-upload-new/src/file-upload-mobile/file-upload-input.vue.mjs +1 -1
- package/es/index.mjs +7 -5
- package/es/src/components/Card/index.mjs +34 -31
- package/es/src/components/Scrollbar/index.vue.mjs +6 -6
- package/es/src/i18n/langs/cn.mjs +1 -1
- package/es/src/i18n/langs/en.mjs +1 -1
- package/es/src/utils/common-util.mjs +47 -39
- package/es/style.css +879 -873
- package/es/super-grid/src/apis.mjs +199 -173
- package/es/super-grid/src/components/mobile-table-card.mjs +53 -53
- package/es/super-grid/src/normal-column-content.vue.mjs +12 -12
- package/es/super-grid/src/normal-column.vue.mjs +4 -5
- package/es/super-grid/src/search-button.vue.mjs +4 -2
- package/es/super-grid/src/search-form-dialog.vue.mjs +22 -11
- package/es/super-grid/src/search-form-item.vue.mjs +5 -5
- package/es/super-grid/src/search-form-mobile.vue.mjs +19 -19
- package/es/super-grid/src/search-form-open.vue.mjs +5 -3
- package/es/super-grid/src/search-form-ordinarySearch.vue.mjs +3 -1
- package/es/super-grid/src/search-form.vue.mjs +19 -13
- package/es/super-grid/src/super-grid.vue.mjs +271 -209
- package/es/super-grid/src/utils.mjs +346 -300
- package/es/utils/organization.mjs +24 -11
- package/lib/chat-embed/src/chat-sender.vue.cjs +1 -1
- package/lib/chat-embed/src/chat-sender.vue2.cjs +44 -46
- package/lib/chat-embed/src/index.vue.cjs +1 -1
- package/lib/chat-embed/src/index.vue2.cjs +14 -14
- package/lib/department-tree-mobile/src/department-tree-inline-app.vue.cjs +58 -58
- package/lib/department-tree-mobile/src/department-tree-service.cjs +10 -8
- package/lib/department-tree-mobile/src/dept-result.vue.cjs +10 -10
- package/lib/department-user-tree-inline/src/department-user-single-tree-inline.vue.cjs +16 -16
- package/lib/department-user-tree-inline/src/department-user-tree-inline.vue.cjs +5 -5
- package/lib/department-user-tree-inline/src/department-user-tree-single-service.cjs +1 -1
- package/lib/fs-preview/src/fs-preview.vue.cjs +13 -5
- package/lib/fs-upload-new/src/file-upload-mobile/file-upload-browser.vue.cjs +1 -1
- package/lib/fs-upload-new/src/file-upload-mobile/file-upload-input.vue.cjs +13 -13
- package/lib/index.cjs +7 -7
- package/lib/src/components/Card/index.cjs +14 -11
- package/lib/src/components/Scrollbar/index.vue.cjs +2 -2
- package/lib/src/i18n/langs/cn.cjs +1 -1
- package/lib/src/i18n/langs/en.cjs +1 -1
- package/lib/src/utils/common-util.cjs +24 -17
- package/lib/style.css +915 -909
- package/lib/super-grid/src/apis.cjs +190 -164
- package/lib/super-grid/src/components/mobile-table-card.cjs +37 -37
- package/lib/super-grid/src/normal-column-content.vue.cjs +2 -2
- package/lib/super-grid/src/normal-column.vue.cjs +10 -11
- package/lib/super-grid/src/search-button.vue.cjs +3 -1
- package/lib/super-grid/src/search-form-dialog.vue.cjs +19 -8
- package/lib/super-grid/src/search-form-item.vue.cjs +2 -2
- package/lib/super-grid/src/search-form-mobile.vue.cjs +7 -7
- package/lib/super-grid/src/search-form-open.vue.cjs +7 -5
- package/lib/super-grid/src/search-form-ordinarySearch.vue.cjs +3 -1
- package/lib/super-grid/src/search-form.vue.cjs +15 -10
- package/lib/super-grid/src/super-grid.vue.cjs +220 -158
- package/lib/super-grid/src/utils.cjs +349 -274
- package/lib/utils/organization.cjs +35 -24
- package/package.json +1 -1
- package/src/components/Card/index.jsx +12 -2
- package/src/components/Scrollbar/index.vue +165 -154
- package/src/i18n/langs/cn.js +10 -2
- package/src/i18n/langs/en.js +10 -2
- package/src/styles/index.scss +9 -2
- package/src/styles/theme/default.scss +18 -13
- package/src/styles/theme/tiffany-blue-mobile/home.scss +44 -1
- package/src/utils/auth-api.js +1 -0
- package/src/utils/common-util.js +13 -0
- package/vite.config.js +0 -45
|
@@ -1,43 +1,54 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" }), exports.addSelectedUserInfo = function(e,
|
|
3
|
-
if (e.userIds.indexOf(
|
|
4
|
-
e.userIds.push(
|
|
5
|
-
var t =
|
|
6
|
-
|
|
2
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" }), exports.addSelectedUserInfo = function(e, a, n) {
|
|
3
|
+
if (e.userIds.indexOf(a.id) < 0) {
|
|
4
|
+
e.userIds.push(a.id), e.loginNames.push(a.loginName), a.email && "" !== a.email && e.emails.push(a.email), a.telephone && "" !== a.telephone && e.telephones.push(a.telephone), a.user ? e.users.push(a.user) : e.users.push(a);
|
|
5
|
+
var t = a.name;
|
|
6
|
+
a.enName && "" !== a.enName && (t = t + "(" + a.enName + ")"), e.userNames.push(t), e.userZhNames.push(a.name), e.userEnNames.push(a.enName ? a.enName : "");
|
|
7
7
|
}
|
|
8
8
|
}, exports.getDeptNamePath = function(e) {
|
|
9
|
-
let
|
|
9
|
+
let a = "";
|
|
10
10
|
if (e && e.data) {
|
|
11
|
-
|
|
11
|
+
a = JSON.parse(e.data).namePath;
|
|
12
|
+
}
|
|
13
|
+
return a;
|
|
14
|
+
}, exports.getShowDeptNamePath = function(e, a) {
|
|
15
|
+
let n = "";
|
|
16
|
+
if (a.namePath)
|
|
17
|
+
return e === a.namePath ? "" : a.namePath;
|
|
18
|
+
if (a && a.data) {
|
|
19
|
+
const t = JSON.parse(a.data);
|
|
20
|
+
if (e === t.namePath)
|
|
21
|
+
return "";
|
|
22
|
+
n = t.namePath;
|
|
12
23
|
}
|
|
13
24
|
return n;
|
|
14
25
|
}, exports.getUserMainDeptName = function(e) {
|
|
15
|
-
let
|
|
26
|
+
let a = "";
|
|
16
27
|
if (e && e.data) {
|
|
17
|
-
const
|
|
18
|
-
|
|
28
|
+
const n = JSON.parse(e.data);
|
|
29
|
+
n.mainDepartmentEnName && "" !== n.mainDepartmentEnName && window.$locale && "cn" !== window.$locale ? a = n.mainDepartmentEnName : n.mainDepartmentName && "" !== n.mainDepartmentName && (a = n.mainDepartmentName);
|
|
19
30
|
}
|
|
20
|
-
return
|
|
21
|
-
}, exports.initSelectUsers = function(e,
|
|
22
|
-
return new Promise((t,
|
|
23
|
-
const
|
|
24
|
-
|
|
25
|
-
return new Promise((t2,
|
|
26
|
-
e2 &&
|
|
31
|
+
return a;
|
|
32
|
+
}, exports.initSelectUsers = function(e, a, n) {
|
|
33
|
+
return new Promise((t, r) => {
|
|
34
|
+
const i = [];
|
|
35
|
+
a ? "所有用户" === a ? (i.push({ id: -1, name: "所有用户" }), t(i)) : "所有工作组人员" === a ? (i.push({ id: -1, name: "所有工作组人员" }), t(i)) : function(e2, a2, n2) {
|
|
36
|
+
return new Promise((t2, r2) => {
|
|
37
|
+
e2 && a2 ? window.$vueApp.config.globalProperties.$http.get(window.$vueApp.config.globalProperties.baseAPI + "/component/organization-trees/select-users-mobile?searchField=" + e2 + "&selectUserInfo=" + a2 + "&separator=" + n2).then((e3) => {
|
|
27
38
|
t2(e3);
|
|
28
39
|
}).catch((e3) => {
|
|
29
|
-
|
|
40
|
+
r2(e3);
|
|
30
41
|
}) : t2([]);
|
|
31
42
|
});
|
|
32
|
-
}(e,
|
|
43
|
+
}(e, a, n).then((e2) => {
|
|
33
44
|
t(e2);
|
|
34
45
|
}).catch((e2) => {
|
|
35
|
-
|
|
36
|
-
}) : t(
|
|
46
|
+
r(e2);
|
|
47
|
+
}) : t(i);
|
|
37
48
|
});
|
|
38
|
-
}, exports.packageSelectResult = function(e,
|
|
39
|
-
let
|
|
40
|
-
return e.enName && "" !== e.enName.trim() && (
|
|
49
|
+
}, exports.packageSelectResult = function(e, a) {
|
|
50
|
+
let n = e.name;
|
|
51
|
+
return e.enName && "" !== e.enName.trim() && (n = n + "(" + e.enName + ")"), { id: e.id, name: n, zhName: e.name, loginName: e.loginName, email: e.email, telephone: e.telephone, containBranch: a, user: e, enName: e.enName ? e.enName : "", subCompanyName: e.subCompanyName, divisionManager: e.divisionManager, divisionManagerName: e.divisionManagerName };
|
|
41
52
|
}, exports.resizeScrollTargetHeightUtil = function() {
|
|
42
53
|
let e = window.innerHeight - 16;
|
|
43
54
|
return document.querySelector(".el-page-header") && (e -= 50), document.querySelector(".mobile-tab") && (e -= 56), e;
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/** @jsxImportSource vue */
|
|
2
|
-
import { defineComponent, ref, computed, watch, onMounted } from 'vue'
|
|
2
|
+
import { defineComponent, ref, computed, watch, onMounted, defineEmits } from 'vue'
|
|
3
3
|
import { ElCard, ElTag, ElButton, ElIcon, ElCheckbox } from 'element-plus'
|
|
4
|
-
import { Bottom, Tickets } from '@element-plus/icons-vue'
|
|
4
|
+
import { Bottom, Tickets,Edit } from '@element-plus/icons-vue'
|
|
5
5
|
import Scrollbar from '../Scrollbar'
|
|
6
6
|
// import { $emit, $off, $on } from '@/utils/gogocodeTransfer'
|
|
7
7
|
import { useI18n } from 'vue-i18n'
|
|
@@ -54,10 +54,16 @@ export default defineComponent({
|
|
|
54
54
|
setHeight: {
|
|
55
55
|
type: [Function, undefined],
|
|
56
56
|
default: () => undefined
|
|
57
|
+
},
|
|
58
|
+
// 列表是否启用行编辑
|
|
59
|
+
isEnableEdit: {
|
|
60
|
+
type: Boolean,
|
|
61
|
+
default: () => false
|
|
57
62
|
}
|
|
58
63
|
},
|
|
59
64
|
setup(props, { attrs, emit, slots }) {
|
|
60
65
|
console.log('*card-view.jsx**********************************************=>', props, attrs, slots)
|
|
66
|
+
defineEmits(['checked', 'showSubTable', 'rowDblclick', 'rowClick']);
|
|
61
67
|
const isMore = ref(props.isShowDetailsMore)
|
|
62
68
|
const { t } = useI18n()
|
|
63
69
|
const scrollHeight = ref(undefined)
|
|
@@ -146,6 +152,10 @@ export default defineComponent({
|
|
|
146
152
|
</div>
|
|
147
153
|
<div class="yx-flex-wrap" align="center" style={{ gap: '10px' }}>
|
|
148
154
|
{getSlotHtml(slots.headerRightSlot)}
|
|
155
|
+
{ props.isEnableEdit && <ElButton text icon={<ElIcon><Edit /></ElIcon>} onClick={event => {
|
|
156
|
+
event.stopPropagation()
|
|
157
|
+
emit('rowDblclick', event)
|
|
158
|
+
}} />}
|
|
149
159
|
{props.isSubTable && (
|
|
150
160
|
<ElButton
|
|
151
161
|
text
|
|
@@ -1,213 +1,224 @@
|
|
|
1
1
|
<template>
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
2
|
+
<el-scrollbar v-bind="mergedAttrs" :class="{ 'is-dispatch': props.dispatch }" ref="scrollbarRef">
|
|
3
|
+
<slot />
|
|
4
|
+
</el-scrollbar>
|
|
5
5
|
</template>
|
|
6
6
|
|
|
7
7
|
<script setup>
|
|
8
|
-
import { ElScrollbar } from 'element-plus'
|
|
8
|
+
import { ElScrollbar } from 'element-plus'
|
|
9
9
|
// import { useStore } from 'vuex';
|
|
10
|
-
import store from '../../store'
|
|
11
|
-
import { toRefs, reactive, mergeProps, ref, onMounted, watch, useAttrs, computed, defineEmits, useSlots } from 'vue'
|
|
10
|
+
import store from '../../store'
|
|
11
|
+
import { toRefs, reactive, mergeProps, ref, onMounted, watch, useAttrs, computed, defineEmits, useSlots } from 'vue'
|
|
12
12
|
|
|
13
|
-
const slots = useSlots()
|
|
13
|
+
const slots = useSlots()
|
|
14
14
|
|
|
15
15
|
// const store = useStore();
|
|
16
16
|
|
|
17
|
-
store?.dispatch?.('startListeningToResize')
|
|
17
|
+
store?.dispatch?.('startListeningToResize')
|
|
18
18
|
|
|
19
|
-
const scrollbarRef = ref(null)
|
|
19
|
+
const scrollbarRef = ref(null)
|
|
20
20
|
|
|
21
21
|
const scrollToEmitValue = ref(undefined)
|
|
22
22
|
|
|
23
|
-
const emits = defineEmits(['scrollToTop', 'scrollToBottom'])
|
|
23
|
+
const emits = defineEmits(['scrollToTop', 'scrollToBottom'])
|
|
24
24
|
|
|
25
25
|
const resizeProps = computed(() => ({
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
}))
|
|
26
|
+
// 宽度
|
|
27
|
+
windowWidth: store.getters.windowWidth,
|
|
28
|
+
// 高度
|
|
29
|
+
windowHeight: store.getters.windowHeight,
|
|
30
|
+
// 是否移动端
|
|
31
|
+
isMobileResize: store.getters.isMobileResize
|
|
32
|
+
}))
|
|
33
33
|
|
|
34
34
|
// 定义初始化参数
|
|
35
35
|
const defaultAttrs = reactive({
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
})
|
|
36
|
+
always: false // 滚动条是否总是显示
|
|
37
|
+
// wrapStyle: 'height: 100%', // 滚动区域的样式
|
|
38
|
+
})
|
|
39
39
|
|
|
40
40
|
const props = defineProps({
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
})
|
|
41
|
+
// 是否开启滚动距离阴影
|
|
42
|
+
showScrollShadow: {
|
|
43
|
+
type: Boolean,
|
|
44
|
+
default: true
|
|
45
|
+
},
|
|
46
|
+
triggerDistance: {
|
|
47
|
+
type: Number,
|
|
48
|
+
default: 0
|
|
49
|
+
},
|
|
50
|
+
// 是否禁止滚动
|
|
51
|
+
dispatch: {
|
|
52
|
+
type: Boolean,
|
|
53
|
+
default: false
|
|
54
|
+
},
|
|
55
|
+
// 动态计算 max-height
|
|
56
|
+
setMaxHeight: {
|
|
57
|
+
type: [Function, undefined],
|
|
58
|
+
default: () => undefined
|
|
59
|
+
},
|
|
60
|
+
// 动态计算 height
|
|
61
|
+
setHeight: {
|
|
62
|
+
type: [Function, undefined],
|
|
63
|
+
default: () => undefined
|
|
64
|
+
}
|
|
65
|
+
})
|
|
66
66
|
|
|
67
|
-
const { attrs } = useAttrs()
|
|
67
|
+
const { attrs } = useAttrs()
|
|
68
68
|
|
|
69
69
|
// 统一写入
|
|
70
70
|
const setHeightFun = (fun) => {
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
71
|
+
try {
|
|
72
|
+
return fun?.(resizeProps.value)
|
|
73
|
+
} catch (error) {
|
|
74
|
+
console.error(error)
|
|
75
|
+
}
|
|
76
|
+
return
|
|
77
77
|
}
|
|
78
78
|
|
|
79
79
|
// 合并初始化参数和传入的属性
|
|
80
80
|
const mergedAttrs = computed(() => {
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
})
|
|
81
|
+
const attrsData = mergeProps(defaultAttrs, attrs)
|
|
82
|
+
return {
|
|
83
|
+
...{
|
|
84
|
+
// 绑定 setMaxHeight 事件 返回 最大高度
|
|
85
|
+
...(props.setMaxHeight ? { maxHeight: setHeightFun(props.setMaxHeight) } : {}),
|
|
86
|
+
// 绑定 setHeight 事件 返回 高度
|
|
87
|
+
...(props.setHeight ? { height: setHeightFun(props.setHeight) } : {})
|
|
88
|
+
},
|
|
89
|
+
...attrsData
|
|
90
|
+
}
|
|
91
|
+
})
|
|
92
92
|
|
|
93
93
|
// 滚动距离回调事件
|
|
94
94
|
const scrollToEmits = (scrollElement) => {
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
95
|
+
if (!scrollElement) return
|
|
96
|
+
const isAtTop = scrollElement.scrollTop <= props.triggerDistance
|
|
97
|
+
// +1 解决精度问题
|
|
98
|
+
const isAtBottom =
|
|
99
|
+
scrollElement.scrollTop + scrollElement.clientHeight + 1 >= scrollElement.scrollHeight - props.triggerDistance
|
|
100
|
+
if (isAtBottom) {
|
|
101
|
+
// scrollToEmitValue 校验确保只执行一次
|
|
102
|
+
// 底部事件
|
|
103
|
+
!['at-bottom'].includes(scrollToEmitValue.value) && emits('scrollToBottom')
|
|
104
|
+
scrollToEmitValue.value = 'at-bottom'
|
|
105
|
+
} else if (isAtTop) {
|
|
106
|
+
// 顶部事件
|
|
107
|
+
!['at-top'].includes(scrollToEmitValue.value) && emits('scrollToTop')
|
|
108
|
+
scrollToEmitValue.value = 'at-top'
|
|
109
|
+
} else {
|
|
110
|
+
scrollToEmitValue.value = undefined
|
|
111
|
+
}
|
|
110
112
|
}
|
|
111
113
|
|
|
112
114
|
// 滚动阴影事件
|
|
113
115
|
const handleScroll = () => {
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
}
|
|
132
|
-
scrollToEmits(scrollElement);
|
|
116
|
+
const scrollElement = scrollbarRef.value?.$el.querySelector('.el-scrollbar__wrap')
|
|
117
|
+
if (scrollElement) {
|
|
118
|
+
const isAtTop = scrollElement.scrollTop === 0
|
|
119
|
+
const isAtBottom = scrollElement.scrollTop + scrollElement.clientHeight === scrollElement.scrollHeight
|
|
120
|
+
if (props.showScrollShadow) {
|
|
121
|
+
if (!isAtTop) {
|
|
122
|
+
scrollbarRef.value.$el.classList.add('scroll-top-shadow')
|
|
123
|
+
} else {
|
|
124
|
+
scrollbarRef.value.$el.classList.remove('scroll-top-shadow')
|
|
125
|
+
}
|
|
126
|
+
if (!isAtBottom) {
|
|
127
|
+
scrollbarRef.value.$el.classList.add('scroll-bottom-shadow')
|
|
128
|
+
} else {
|
|
129
|
+
scrollbarRef.value.$el.classList.remove('scroll-bottom-shadow')
|
|
130
|
+
}
|
|
131
|
+
} else {
|
|
132
|
+
scrollbarRef.value.$el.classList.remove('scroll-top-shadow', 'scroll-bottom-shadow')
|
|
133
133
|
}
|
|
134
|
-
|
|
134
|
+
scrollToEmits(scrollElement)
|
|
135
|
+
}
|
|
136
|
+
}
|
|
135
137
|
|
|
136
138
|
onMounted(() => {
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
})
|
|
139
|
+
const scrollElement = scrollbarRef.value.$el.querySelector('.el-scrollbar__wrap')
|
|
140
|
+
if (scrollElement) {
|
|
141
|
+
scrollElement.addEventListener('scroll', handleScroll)
|
|
142
|
+
handleScroll()
|
|
143
|
+
scrollToEmits(scrollElement)
|
|
144
|
+
}
|
|
145
|
+
})
|
|
144
146
|
|
|
145
|
-
watch(
|
|
146
|
-
|
|
147
|
-
|
|
147
|
+
watch(
|
|
148
|
+
() => props.showScrollShadow,
|
|
149
|
+
() => {
|
|
150
|
+
handleScroll()
|
|
151
|
+
}
|
|
152
|
+
)
|
|
148
153
|
|
|
149
|
-
watch(
|
|
150
|
-
|
|
151
|
-
|
|
154
|
+
watch(
|
|
155
|
+
() => mergedAttrs?.maxHeight,
|
|
156
|
+
() => {
|
|
157
|
+
setTimeout(handleScroll, 500)
|
|
158
|
+
}
|
|
159
|
+
)
|
|
152
160
|
|
|
153
|
-
watch(
|
|
154
|
-
|
|
155
|
-
|
|
161
|
+
watch(
|
|
162
|
+
() => mergedAttrs?.height,
|
|
163
|
+
() => {
|
|
164
|
+
setTimeout(handleScroll, 500)
|
|
165
|
+
}
|
|
166
|
+
)
|
|
156
167
|
watch(
|
|
157
168
|
() => slots.default?.(),
|
|
158
169
|
(newValue, oldValue) => {
|
|
159
170
|
if (newValue !== oldValue) {
|
|
160
|
-
|
|
171
|
+
setTimeout(handleScroll, 500)
|
|
161
172
|
}
|
|
162
173
|
},
|
|
163
174
|
{ deep: true }
|
|
164
|
-
)
|
|
175
|
+
)
|
|
165
176
|
</script>
|
|
166
177
|
|
|
167
178
|
<style lang="scss" scoped>
|
|
168
179
|
.el-scrollbar ::v-deep {
|
|
169
|
-
|
|
180
|
+
position: relative;
|
|
170
181
|
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
182
|
+
&.is-dispatch {
|
|
183
|
+
& > .el-scrollbar__wrap {
|
|
184
|
+
max-height: none !important;
|
|
185
|
+
overflow: initial !important;
|
|
175
186
|
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
}
|
|
187
|
+
& ~ el-scrollbar__bar {
|
|
188
|
+
display: none;
|
|
189
|
+
}
|
|
180
190
|
}
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
&.scroll-top-shadow {
|
|
194
|
+
&::before {
|
|
195
|
+
content: ' ';
|
|
196
|
+
position: absolute;
|
|
197
|
+
top: 0;
|
|
198
|
+
left: 0;
|
|
199
|
+
right: 0;
|
|
200
|
+
height: 8px;
|
|
201
|
+
box-shadow: inset 0 8px 8px -8px rgba(0, 0, 0, 0.2);
|
|
202
|
+
z-index: 2;
|
|
193
203
|
}
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
&.scroll-bottom-shadow {
|
|
207
|
+
&::after {
|
|
208
|
+
content: ' ';
|
|
209
|
+
position: absolute;
|
|
210
|
+
bottom: 0;
|
|
211
|
+
left: 0;
|
|
212
|
+
right: 0;
|
|
213
|
+
height: 8px;
|
|
214
|
+
box-shadow: inset 0 -8px 8px -8px rgba(0, 0, 0, 0.2);
|
|
215
|
+
z-index: 2;
|
|
206
216
|
}
|
|
217
|
+
}
|
|
207
218
|
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
219
|
+
& > .el-scrollbar__wrap {
|
|
220
|
+
position: relative;
|
|
221
|
+
z-index: 1;
|
|
222
|
+
}
|
|
212
223
|
}
|
|
213
|
-
</style>
|
|
224
|
+
</style>
|
package/src/i18n/langs/cn.js
CHANGED
|
@@ -49,7 +49,9 @@ const cn = {
|
|
|
49
49
|
emptyValue: '空值',
|
|
50
50
|
expand: '展开',
|
|
51
51
|
collapse: '收起',
|
|
52
|
-
|
|
52
|
+
noData: '暂无数据',
|
|
53
|
+
confirmClosePage: '确认关闭此页面吗?未保存的数据将会丢失。',
|
|
54
|
+
noMoreData: '没有更多数据了'
|
|
53
55
|
},
|
|
54
56
|
imatrixUIMessage: {
|
|
55
57
|
whetherToConfirmDeletion: '是否确认删除',
|
|
@@ -146,7 +148,13 @@ const cn = {
|
|
|
146
148
|
searchEmpty: '查询空值',
|
|
147
149
|
canntAddTip: '不满足新建操作条件,不能执行新建操作,请检查!',
|
|
148
150
|
rowCanntDeleteTip: '不满足删除操作条件,不能执行删除操作,请检查!',
|
|
149
|
-
rowCanntEditTip: '不满足编辑操作条件,不能执行编辑操作,请检查!'
|
|
151
|
+
rowCanntEditTip: '不满足编辑操作条件,不能执行编辑操作,请检查!',
|
|
152
|
+
searchCondition: '查询条件',
|
|
153
|
+
orderField: '排序字段',
|
|
154
|
+
orderType: '排序方式',
|
|
155
|
+
orderTypeAsc: '升序',
|
|
156
|
+
orderTypeDesc: '降序',
|
|
157
|
+
close: '关闭'
|
|
150
158
|
},
|
|
151
159
|
// 部门树组件
|
|
152
160
|
departmentTree: {},
|
package/src/i18n/langs/en.js
CHANGED
|
@@ -49,7 +49,9 @@ const en = {
|
|
|
49
49
|
emptyValue: 'Empty Value',
|
|
50
50
|
expand: 'Expand',
|
|
51
51
|
collapse: 'Collapse',
|
|
52
|
-
|
|
52
|
+
noData: 'No Data',
|
|
53
|
+
confirmClosePage: 'Are you sure you want to close this page? Unsaved data will be lost.',
|
|
54
|
+
noMoreData: 'No more data'
|
|
53
55
|
},
|
|
54
56
|
imatrixUIMessage: {
|
|
55
57
|
whetherToConfirmDeletion: 'Whether To Confirm Deletion',
|
|
@@ -147,7 +149,13 @@ const en = {
|
|
|
147
149
|
canntAddTip: 'Does not meet the new operation conditions, cannot perform the new operation, please check!',
|
|
148
150
|
rowCanntDeleteTip:
|
|
149
151
|
'Does not meet the delete operation conditions, cannot perform the delete operation, please check!',
|
|
150
|
-
rowCanntEditTip: 'Does not meet the edit operation conditions, cannot perform the edit operation, please check!'
|
|
152
|
+
rowCanntEditTip: 'Does not meet the edit operation conditions, cannot perform the edit operation, please check!',
|
|
153
|
+
searchCondition: 'Search Conditon',
|
|
154
|
+
orderField: 'Order Field',
|
|
155
|
+
orderType: 'Order Type',
|
|
156
|
+
orderTypeAsc: 'Asc',
|
|
157
|
+
orderTypeDesc: 'Desc',
|
|
158
|
+
close: 'Close'
|
|
151
159
|
},
|
|
152
160
|
departmentTree: {},
|
|
153
161
|
departmentTreeInline: {
|
package/src/styles/index.scss
CHANGED
|
@@ -36,11 +36,18 @@ body {
|
|
|
36
36
|
.el-select .el-select__tags-text,
|
|
37
37
|
.el-select .el-select__selected-item,
|
|
38
38
|
.el-table .cell,
|
|
39
|
-
.el-input__inner
|
|
40
|
-
.el-textarea__inner {
|
|
39
|
+
.el-input__inner {
|
|
41
40
|
white-space: pre !important;
|
|
42
41
|
}
|
|
43
42
|
|
|
43
|
+
// textarea 自动换行样式,否则会被white-space: nowrap覆盖
|
|
44
|
+
.el-textarea__inner {
|
|
45
|
+
white-space: pre-wrap !important;
|
|
46
|
+
word-wrap: break-word !important;
|
|
47
|
+
word-break: break-all;
|
|
48
|
+
overflow-wrap: break-word;
|
|
49
|
+
}
|
|
50
|
+
|
|
44
51
|
html,
|
|
45
52
|
body {
|
|
46
53
|
margin: 0;
|
|
@@ -2,30 +2,35 @@
|
|
|
2
2
|
|
|
3
3
|
// :not(:has( > .three-column-layout, > .el-container))
|
|
4
4
|
.app-container {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
5
|
+
padding: var(--app-container-padding, 15px);
|
|
6
|
+
border-radius: 6px;
|
|
7
|
+
box-shadow: 0px 1px 8px 0px #00000019;
|
|
8
|
+
background-color: #fff;
|
|
9
9
|
}
|
|
10
10
|
|
|
11
11
|
.flex-gap-15 {
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
12
|
+
display: flex;
|
|
13
|
+
gap: var(--layout-form-flex-gap, 15px);
|
|
14
|
+
align-items: center;
|
|
15
15
|
|
|
16
|
-
|
|
17
|
-
|
|
16
|
+
& .el-button {
|
|
17
|
+
margin: 0;
|
|
18
18
|
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
}
|
|
19
|
+
&+.el-button {
|
|
20
|
+
margin: 0;
|
|
22
21
|
}
|
|
22
|
+
}
|
|
23
23
|
}
|
|
24
24
|
|
|
25
25
|
.operation-area {
|
|
26
26
|
margin-bottom: 20px;
|
|
27
27
|
}
|
|
28
28
|
|
|
29
|
+
.operation-area--right {
|
|
30
|
+
display: flex;
|
|
31
|
+
justify-content: flex-end;
|
|
32
|
+
}
|
|
33
|
+
|
|
29
34
|
.operation-area-chart {
|
|
30
35
|
padding-right: 24px;
|
|
31
36
|
padding-top: 24px;
|
|
@@ -37,4 +42,4 @@
|
|
|
37
42
|
position: fixed;
|
|
38
43
|
bottom: 0;
|
|
39
44
|
right: 4%;
|
|
40
|
-
}
|
|
45
|
+
}
|