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.
Files changed (81) hide show
  1. package/dist/index.full.min.js +462 -281
  2. package/dist/style.css +181 -175
  3. package/es/chat-embed/src/chat-sender.vue.mjs +1 -1
  4. package/es/chat-embed/src/chat-sender.vue2.mjs +26 -28
  5. package/es/chat-embed/src/index.vue.mjs +1 -1
  6. package/es/chat-embed/src/index.vue2.mjs +29 -29
  7. package/es/department-tree-mobile/src/department-tree-inline-app.vue.mjs +68 -68
  8. package/es/department-tree-mobile/src/department-tree-service.mjs +20 -18
  9. package/es/department-tree-mobile/src/dept-result.vue.mjs +12 -11
  10. package/es/department-user-tree-inline/src/department-user-single-tree-inline.vue.mjs +3 -3
  11. package/es/department-user-tree-inline/src/department-user-tree-inline.vue.mjs +6 -6
  12. package/es/department-user-tree-inline/src/department-user-tree-single-service.mjs +1 -1
  13. package/es/fs-preview/src/fs-preview.vue.mjs +26 -18
  14. package/es/fs-upload-new/src/file-upload-mobile/file-upload-browser.vue.mjs +1 -1
  15. package/es/fs-upload-new/src/file-upload-mobile/file-upload-input.vue.mjs +1 -1
  16. package/es/index.mjs +7 -5
  17. package/es/src/components/Card/index.mjs +34 -31
  18. package/es/src/components/Scrollbar/index.vue.mjs +6 -6
  19. package/es/src/i18n/langs/cn.mjs +1 -1
  20. package/es/src/i18n/langs/en.mjs +1 -1
  21. package/es/src/utils/common-util.mjs +47 -39
  22. package/es/style.css +879 -873
  23. package/es/super-grid/src/apis.mjs +199 -173
  24. package/es/super-grid/src/components/mobile-table-card.mjs +53 -53
  25. package/es/super-grid/src/normal-column-content.vue.mjs +12 -12
  26. package/es/super-grid/src/normal-column.vue.mjs +4 -5
  27. package/es/super-grid/src/search-button.vue.mjs +4 -2
  28. package/es/super-grid/src/search-form-dialog.vue.mjs +22 -11
  29. package/es/super-grid/src/search-form-item.vue.mjs +5 -5
  30. package/es/super-grid/src/search-form-mobile.vue.mjs +19 -19
  31. package/es/super-grid/src/search-form-open.vue.mjs +5 -3
  32. package/es/super-grid/src/search-form-ordinarySearch.vue.mjs +3 -1
  33. package/es/super-grid/src/search-form.vue.mjs +19 -13
  34. package/es/super-grid/src/super-grid.vue.mjs +271 -209
  35. package/es/super-grid/src/utils.mjs +346 -300
  36. package/es/utils/organization.mjs +24 -11
  37. package/lib/chat-embed/src/chat-sender.vue.cjs +1 -1
  38. package/lib/chat-embed/src/chat-sender.vue2.cjs +44 -46
  39. package/lib/chat-embed/src/index.vue.cjs +1 -1
  40. package/lib/chat-embed/src/index.vue2.cjs +14 -14
  41. package/lib/department-tree-mobile/src/department-tree-inline-app.vue.cjs +58 -58
  42. package/lib/department-tree-mobile/src/department-tree-service.cjs +10 -8
  43. package/lib/department-tree-mobile/src/dept-result.vue.cjs +10 -10
  44. package/lib/department-user-tree-inline/src/department-user-single-tree-inline.vue.cjs +16 -16
  45. package/lib/department-user-tree-inline/src/department-user-tree-inline.vue.cjs +5 -5
  46. package/lib/department-user-tree-inline/src/department-user-tree-single-service.cjs +1 -1
  47. package/lib/fs-preview/src/fs-preview.vue.cjs +13 -5
  48. package/lib/fs-upload-new/src/file-upload-mobile/file-upload-browser.vue.cjs +1 -1
  49. package/lib/fs-upload-new/src/file-upload-mobile/file-upload-input.vue.cjs +13 -13
  50. package/lib/index.cjs +7 -7
  51. package/lib/src/components/Card/index.cjs +14 -11
  52. package/lib/src/components/Scrollbar/index.vue.cjs +2 -2
  53. package/lib/src/i18n/langs/cn.cjs +1 -1
  54. package/lib/src/i18n/langs/en.cjs +1 -1
  55. package/lib/src/utils/common-util.cjs +24 -17
  56. package/lib/style.css +915 -909
  57. package/lib/super-grid/src/apis.cjs +190 -164
  58. package/lib/super-grid/src/components/mobile-table-card.cjs +37 -37
  59. package/lib/super-grid/src/normal-column-content.vue.cjs +2 -2
  60. package/lib/super-grid/src/normal-column.vue.cjs +10 -11
  61. package/lib/super-grid/src/search-button.vue.cjs +3 -1
  62. package/lib/super-grid/src/search-form-dialog.vue.cjs +19 -8
  63. package/lib/super-grid/src/search-form-item.vue.cjs +2 -2
  64. package/lib/super-grid/src/search-form-mobile.vue.cjs +7 -7
  65. package/lib/super-grid/src/search-form-open.vue.cjs +7 -5
  66. package/lib/super-grid/src/search-form-ordinarySearch.vue.cjs +3 -1
  67. package/lib/super-grid/src/search-form.vue.cjs +15 -10
  68. package/lib/super-grid/src/super-grid.vue.cjs +220 -158
  69. package/lib/super-grid/src/utils.cjs +349 -274
  70. package/lib/utils/organization.cjs +35 -24
  71. package/package.json +1 -1
  72. package/src/components/Card/index.jsx +12 -2
  73. package/src/components/Scrollbar/index.vue +165 -154
  74. package/src/i18n/langs/cn.js +10 -2
  75. package/src/i18n/langs/en.js +10 -2
  76. package/src/styles/index.scss +9 -2
  77. package/src/styles/theme/default.scss +18 -13
  78. package/src/styles/theme/tiffany-blue-mobile/home.scss +44 -1
  79. package/src/utils/auth-api.js +1 -0
  80. package/src/utils/common-util.js +13 -0
  81. 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, n, a) {
3
- if (e.userIds.indexOf(n.id) < 0) {
4
- e.userIds.push(n.id), e.loginNames.push(n.loginName), n.email && "" !== n.email && e.emails.push(n.email), n.telephone && "" !== n.telephone && e.telephones.push(n.telephone), n.user ? e.users.push(n.user) : e.users.push(n);
5
- var t = n.name;
6
- n.enName && "" !== n.enName && (t = t + "(" + n.enName + ")"), e.userNames.push(t), e.userZhNames.push(n.name), e.userEnNames.push(n.enName ? n.enName : "");
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 n = "";
9
+ let a = "";
10
10
  if (e && e.data) {
11
- n = JSON.parse(e.data).namePath;
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 n = "";
26
+ let a = "";
16
27
  if (e && e.data) {
17
- const a = JSON.parse(e.data);
18
- a.mainDepartmentEnName && "" !== a.mainDepartmentEnName && window.$locale && "cn" !== window.$locale ? n = a.mainDepartmentEnName : a.mainDepartmentName && "" !== a.mainDepartmentName && (n = a.mainDepartmentName);
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 n;
21
- }, exports.initSelectUsers = function(e, n, a) {
22
- return new Promise((t, i) => {
23
- const r = [];
24
- n ? "所有用户" === n ? (r.push({ id: -1, name: "所有用户" }), t(r)) : "所有工作组人员" === n ? (r.push({ id: -1, name: "所有工作组人员" }), t(r)) : function(e2, n2, a2) {
25
- return new Promise((t2, i2) => {
26
- e2 && n2 ? window.$vueApp.config.globalProperties.$http.get(window.$vueApp.config.globalProperties.baseAPI + "/component/organization-trees/select-users-mobile?searchField=" + e2 + "&selectUserInfo=" + n2 + "&separator=" + a2).then((e3) => {
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
- i2(e3);
40
+ r2(e3);
30
41
  }) : t2([]);
31
42
  });
32
- }(e, n, a).then((e2) => {
43
+ }(e, a, n).then((e2) => {
33
44
  t(e2);
34
45
  }).catch((e2) => {
35
- i(e2);
36
- }) : t(r);
46
+ r(e2);
47
+ }) : t(i);
37
48
  });
38
- }, exports.packageSelectResult = function(e, n) {
39
- let a = e.name;
40
- return e.enName && "" !== e.enName.trim() && (a = a + "(" + e.enName + ")"), { id: e.id, name: a, zhName: e.name, loginName: e.loginName, email: e.email, telephone: e.telephone, containBranch: n, user: e, enName: e.enName ? e.enName : "", subCompanyName: e.subCompanyName, divisionManager: e.divisionManager, divisionManagerName: e.divisionManagerName };
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,6 +1,6 @@
1
1
  {
2
2
  "name": "agilebuilder-ui",
3
- "version": "1.1.65-tmp22",
3
+ "version": "1.1.65-tmp24",
4
4
  "type": "module",
5
5
  "private": false,
6
6
  "main": "./lib/index.cjs",
@@ -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
- <el-scrollbar v-bind="mergedAttrs" :class="{ 'is-dispatch': props.dispatch }" ref="scrollbarRef">
3
- <slot />
4
- </el-scrollbar>
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
- windowWidth: store.getters.windowWidth,
28
- // 高度
29
- windowHeight: store.getters.windowHeight,
30
- // 是否移动端
31
- isMobileResize: store.getters.isMobileResize,
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
- always: false, // 滚动条是否总是显示
37
- // wrapStyle: 'height: 100%', // 滚动区域的样式
38
- });
36
+ always: false // 滚动条是否总是显示
37
+ // wrapStyle: 'height: 100%', // 滚动区域的样式
38
+ })
39
39
 
40
40
  const props = defineProps({
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
- });
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
- try {
72
- return fun?.(resizeProps.value)
73
- } catch (error) {
74
- console.error(error)
75
- }
76
- return
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
- 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
- });
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
- if (!scrollElement) return
96
- const isAtTop = scrollElement.scrollTop <= props.triggerDistance;
97
- const isAtBottom = scrollElement.scrollTop + scrollElement.clientHeight >= (scrollElement.scrollHeight - props.triggerDistance);
98
- if (isAtBottom) {
99
- // scrollToEmitValue 校验确保只执行一次
100
- // 底部事件
101
- !['at-bottom'].includes(scrollToEmitValue.value) && emits('scrollToBottom');
102
- scrollToEmitValue.value = 'at-bottom'
103
- } else if (isAtTop) {
104
- // 顶部事件
105
- !['at-top'].includes(scrollToEmitValue.value) && emits('scrollToTop');
106
- scrollToEmitValue.value = 'at-top'
107
- } else {
108
- scrollToEmitValue.value = undefined
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
- const scrollElement = scrollbarRef.value?.$el.querySelector('.el-scrollbar__wrap');
115
- if (scrollElement) {
116
- const isAtTop = scrollElement.scrollTop === 0;
117
- const isAtBottom = scrollElement.scrollTop + scrollElement.clientHeight === scrollElement.scrollHeight;
118
- if (props.showScrollShadow) {
119
- if (!isAtTop) {
120
- scrollbarRef.value.$el.classList.add('scroll-top-shadow');
121
- } else {
122
- scrollbarRef.value.$el.classList.remove('scroll-top-shadow');
123
- }
124
- if (!isAtBottom) {
125
- scrollbarRef.value.$el.classList.add('scroll-bottom-shadow');
126
- } else {
127
- scrollbarRef.value.$el.classList.remove('scroll-bottom-shadow');
128
- }
129
- } else {
130
- scrollbarRef.value.$el.classList.remove('scroll-top-shadow', 'scroll-bottom-shadow');
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
- const scrollElement = scrollbarRef.value.$el.querySelector('.el-scrollbar__wrap');
138
- if (scrollElement) {
139
- scrollElement.addEventListener('scroll', handleScroll);
140
- handleScroll();
141
- scrollToEmits(scrollElement);
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(() => props.showScrollShadow, () => {
146
- handleScroll();
147
- });
147
+ watch(
148
+ () => props.showScrollShadow,
149
+ () => {
150
+ handleScroll()
151
+ }
152
+ )
148
153
 
149
- watch(() => mergedAttrs?.maxHeight, () => {
150
- setTimeout(handleScroll, 500);
151
- });
154
+ watch(
155
+ () => mergedAttrs?.maxHeight,
156
+ () => {
157
+ setTimeout(handleScroll, 500)
158
+ }
159
+ )
152
160
 
153
- watch(() => mergedAttrs?.height, () => {
154
- setTimeout(handleScroll, 500);
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
- setTimeout(handleScroll, 500);
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
- position: relative;
180
+ position: relative;
170
181
 
171
- &.is-dispatch {
172
- & > .el-scrollbar__wrap {
173
- max-height: none !important;
174
- overflow: initial !important;
182
+ &.is-dispatch {
183
+ & > .el-scrollbar__wrap {
184
+ max-height: none !important;
185
+ overflow: initial !important;
175
186
 
176
- & ~ el-scrollbar__bar {
177
- display: none;
178
- }
179
- }
187
+ & ~ el-scrollbar__bar {
188
+ display: none;
189
+ }
180
190
  }
181
-
182
- &.scroll-top-shadow {
183
- &::before {
184
- content: ' ';
185
- position: absolute;
186
- top: 0;
187
- left: 0;
188
- right: 0;
189
- height: 8px;
190
- box-shadow: inset 0 8px 8px -8px rgba(0, 0, 0, 0.2);
191
- z-index: 2;
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
- &.scroll-bottom-shadow {
196
- &::after {
197
- content: ' ';
198
- position: absolute;
199
- bottom: 0;
200
- left: 0;
201
- right: 0;
202
- height: 8px;
203
- box-shadow: inset 0 -8px 8px -8px rgba(0, 0, 0, 0.2);
204
- z-index: 2;
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
- &>.el-scrollbar__wrap {
209
- position: relative;
210
- z-index: 1;
211
- }
219
+ & > .el-scrollbar__wrap {
220
+ position: relative;
221
+ z-index: 1;
222
+ }
212
223
  }
213
- </style>
224
+ </style>
@@ -49,7 +49,9 @@ const cn = {
49
49
  emptyValue: '空值',
50
50
  expand: '展开',
51
51
  collapse: '收起',
52
- confirmClosePage: '确认关闭此页面吗?未保存的数据将会丢失。'
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: {},
@@ -49,7 +49,9 @@ const en = {
49
49
  emptyValue: 'Empty Value',
50
50
  expand: 'Expand',
51
51
  collapse: 'Collapse',
52
- confirmClosePage: 'Are you sure you want to close this page? Unsaved data will be lost.'
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: {
@@ -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
- padding: var(--app-container-padding, 15px);
6
- border-radius: 6px;
7
- box-shadow: 0px 1px 8px 0px #00000019;
8
- background-color: #fff;
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
- display: flex;
13
- gap: var(--layout-form-flex-gap, 15px);
14
- align-items: center;
12
+ display: flex;
13
+ gap: var(--layout-form-flex-gap, 15px);
14
+ align-items: center;
15
15
 
16
- & .el-button {
17
- margin: 0;
16
+ & .el-button {
17
+ margin: 0;
18
18
 
19
- &+.el-button {
20
- margin: 0;
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
+ }