@utogether/udp-core 2.0.0-beta.27 → 2.0.0-beta.28

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 (100) hide show
  1. package/dist/{403-gdcH0-Bo.js → 403-CyoOD-Ik.js} +1 -1
  2. package/dist/{404-Se2SF97M.js → 404-Ch_OHTw0.js} +1 -1
  3. package/dist/{500-B6j9AqLo.js → 500-Cf9am7HK.js} +1 -1
  4. package/dist/{AuthorityInfo-CQ8ydZvr.js → AuthorityInfo-BJ427cqG.js} +1 -1
  5. package/dist/{AuthorityInfo.vue_vue_type_style_index_0_lang-C4NRvS8p.js → AuthorityInfo.vue_vue_type_style_index_0_lang-D9y7AwbB.js} +11 -12
  6. package/dist/{Company-BzSVBSC4.js → Company-qo-lKPkv.js} +3 -3
  7. package/dist/{CompanyPanel-DBjZB4aJ.js → CompanyPanel-DkKWAKvY.js} +7 -7
  8. package/dist/{Department-BkgseHo8.js → Department-CHUQByKX.js} +3 -3
  9. package/dist/{DepartmentPanel-Sen93_2M.js → DepartmentPanel-C742dfOO.js} +27 -28
  10. package/dist/{DesignPanel-pqDcwaFC.js → DesignPanel-D9oE5R7m.js} +1 -1
  11. package/dist/{DesignPanel.vue_vue_type_style_index_0_lang-BjtYyEw7.js → DesignPanel.vue_vue_type_style_index_0_lang-hYldVEbo.js} +192 -108
  12. package/dist/{DictView-CJLG4LlE.js → DictView-CrFXprP9.js} +1 -1
  13. package/dist/{InvOrganization-D0Jq1IAa.js → InvOrganization-Cz8SzIgs.js} +6 -7
  14. package/dist/{Org-CO_1WT39.js → Org-Bzt6yKox.js} +9 -10
  15. package/dist/{Preview-DLI4Bwel.js → Preview-jonigfMQ.js} +1 -1
  16. package/dist/{ReportDefine-Cw46OnJ_.js → ReportDefine-BpiM5Ovq.js} +1 -1
  17. package/dist/{ReportDesign-D4sHTXT7.js → ReportDesign-fp09cXJ7.js} +24 -25
  18. package/dist/{ReportQuery-DtOCvQSN.js → ReportQuery-52ZP1PYP.js} +1 -1
  19. package/dist/{ReportQueryFrom-QjL-ETPq.js → ReportQueryFrom-DSYavJb1.js} +1 -1
  20. package/dist/{ReportQueryFrom.vue_vue_type_style_index_0_lang-Dj9ne87n.js → ReportQueryFrom.vue_vue_type_style_index_0_lang-DBGYEp0u.js} +4 -4
  21. package/dist/{ReportTemplate-BxAgc_Aj.js → ReportTemplate-CA_UW0eD.js} +3 -3
  22. package/dist/{Role-Df77BBD-.js → Role-DqOt8Bk0.js} +3 -3
  23. package/dist/{RoleAssign-BrunouML.js → RoleAssign-BdxhefhQ.js} +3 -3
  24. package/dist/{RolePanel-HLA7XBlN.js → RolePanel-2gZ3H0ET.js} +1 -1
  25. package/dist/{RolePanel-DSVwqhiD.js → RolePanel-BsNd0svJ.js} +1 -1
  26. package/dist/{RolePanel.vue_vue_type_script_setup_true_lang-CN0rUxKz.js → RolePanel.vue_vue_type_script_setup_true_lang-DLOwgF99.js} +9 -9
  27. package/dist/{RolePanel.vue_vue_type_script_setup_true_lang-CKlbqRa5.js → RolePanel.vue_vue_type_script_setup_true_lang-DmzD9kab.js} +26 -27
  28. package/dist/{ScrollPanel.vue_vue_type_style_index_0_lang-D_FeSXKv.js → ScrollPanel.vue_vue_type_style_index_0_lang-B9ptUMeI.js} +7 -7
  29. package/dist/{Staff-BeL1xcRf.js → Staff-D3L8fEoY.js} +3 -3
  30. package/dist/{StaffInfo-CIfnltyX.js → StaffInfo-DYRw6ZYJ.js} +1 -1
  31. package/dist/{StaffInfo.vue_vue_type_script_setup_true_lang-DbLFwWfG.js → StaffInfo.vue_vue_type_script_setup_true_lang-xqEOQnMs.js} +1 -1
  32. package/dist/{StaffPanel-BV2CHWac.js → StaffPanel-DkrNH6Px.js} +1 -1
  33. package/dist/{StaffPanel.vue_vue_type_script_setup_true_lang-CvT-Vp2G.js → StaffPanel.vue_vue_type_script_setup_true_lang-BPBMnliy.js} +8 -9
  34. package/dist/{SysUser-DPfNvthk.js → SysUser-Bl1-cIpJ.js} +2 -2
  35. package/dist/{SysUserPanel-CoLKYlQE.js → SysUserPanel-yxNLaBwt.js} +1 -1
  36. package/dist/{SysUserPanel.vue_vue_type_script_setup_true_lang-lcO3Cjbq.js → SysUserPanel.vue_vue_type_script_setup_true_lang-BDcsgSl5.js} +11 -12
  37. package/dist/{SystemMenu-sdj1dRDA.js → SystemMenu-C4_Arn12.js} +9 -10
  38. package/dist/{UserInfo-CTX4hhFl.js → UserInfo-QcNwJCUR.js} +1 -1
  39. package/dist/{UserInfo.vue_vue_type_style_index_0_lang-ClhCd_8z.js → UserInfo.vue_vue_type_style_index_0_lang-DLIeUphX.js} +5 -6
  40. package/dist/{childView-BDmWwJO5.js → childView-B23DEO2u.js} +1 -1
  41. package/dist/{childView-Dx3ACtHa.js → childView-saDZQv9x.js} +1 -1
  42. package/dist/{childView.vue_vue_type_style_index_0_lang-CfKq_0FN.js → childView.vue_vue_type_style_index_0_lang-RsKR6CAC.js} +14 -15
  43. package/dist/{childView.vue_vue_type_style_index_0_lang-DxZNtkhd.js → childView.vue_vue_type_style_index_0_lang-ZFEfavUY.js} +11 -12
  44. package/dist/{code-rule-cvN4gYC_.js → code-rule-2_Ihx_by.js} +12 -13
  45. package/dist/core.es.js +21 -19
  46. package/dist/{cron-task-B0TkxFdp.js → cron-task-BFOPJQIk.js} +3 -4
  47. package/dist/{frameView-5cy5BSgS.js → frameView-f7Ya0Knj.js} +1 -1
  48. package/dist/img/minicolors.png +0 -0
  49. package/dist/{index-C5WRTwvI.js → index-BpdTDaTk.js} +811 -604
  50. package/dist/{layout-home-DrARg-3o.js → layout-home-v3DPJ7rB.js} +12 -13
  51. package/dist/{layoutView-25v_ngk5.js → layoutView-DZHoQDH1.js} +186 -187
  52. package/dist/{log-in-Bmz5Uhbt.js → log-in-BPAMJTwH.js} +4 -5
  53. package/dist/{log-out-B-8m3oNj.js → log-out-DZACF0jg.js} +8 -9
  54. package/dist/{login-Cmp2RvvW.js → login-B8cwozax.js} +22 -23
  55. package/dist/{lov-view-BATtzw2X.js → lov-view-Ba7Y7xy0.js} +4 -5
  56. package/dist/{menuInfo-BIvrE7nm.js → menuInfo-BpRKFYK8.js} +1 -1
  57. package/dist/{menuInfo.vue_vue_type_style_index_0_lang-B6USomit.js → menuInfo.vue_vue_type_style_index_0_lang-DJ5sUC6m.js} +17 -18
  58. package/dist/{pda-app-CzHVyeEa.js → pda-app-C0jJecrL.js} +7 -8
  59. package/dist/{resource-Y5lGB38n.js → resource-BG22Cw4P.js} +4 -4
  60. package/dist/su-welcome-DaxhbrC6.js +879 -0
  61. package/dist/{sys-config-CqO03LeC.js → sys-config-CG2fMtak.js} +22 -23
  62. package/dist/udp-core.css +1 -1
  63. package/dist/{useNav-C-rCgubt.js → useNav-_u2UAQWk.js} +24 -24
  64. package/index.ts +54 -51
  65. package/package.json +21 -21
  66. package/src/api/http.ts +10 -4
  67. package/src/api/index.ts +51 -51
  68. package/src/api/user.ts +64 -64
  69. package/src/components/udp/content/index.vue +93 -93
  70. package/src/components/udp/form-upload/form-upload.vue +496 -496
  71. package/src/components/udp/grid/index.vue +643 -544
  72. package/src/components/udp/index.ts +2 -1
  73. package/src/components/udp/modal-form/index.vue +326 -0
  74. package/src/components/udp/utils.ts +420 -420
  75. package/src/layout/components/lay-navbar/index.vue +240 -240
  76. package/src/layout/components/lay-search/components/SearchModal.vue +185 -185
  77. package/src/layout/components/lay-sidebar/mixNav.vue +261 -261
  78. package/src/layout/components/lay-sidebar/sidebarItem.vue +199 -195
  79. package/src/layout/components/lay-sidebar/vertical.vue +92 -92
  80. package/src/layout/layoutView.vue +1 -0
  81. package/src/main.ts +111 -111
  82. package/src/plugins/i18n/zh.ts +5 -1
  83. package/src/plugins/vxe-table/index.ts +116 -116
  84. package/src/router/index.ts +158 -156
  85. package/src/router/utils.ts +434 -430
  86. package/src/store/modules/permission.ts +1 -1
  87. package/src/store/modules/system.ts +193 -193
  88. package/src/style/print-lock.css +380 -375
  89. package/src/style/suprint.css +990 -985
  90. package/src/utils/authority/index.ts +46 -46
  91. package/src/utils/dataFormat/index.ts +309 -222
  92. package/src/utils/udp/http/index.ts +19 -11
  93. package/src/views/uhome/components/home-todo.vue +15 -3
  94. package/src/views/uhome/dynamic-card.vue +31 -31
  95. package/src/views/uhome/su-welcome.vue +310 -310
  96. package/src/views/ulogin/login.vue +292 -292
  97. package/src/views/urpt/design/DesignPanel.vue +538 -507
  98. package/src/views/urpt/design/print-data.ts +39 -59
  99. package/dist/await-to-js.es5-Bv3Eu4mi.js +0 -10
  100. package/dist/su-welcome-CXA6OzBw.js +0 -878
@@ -1,185 +1,185 @@
1
- <template>
2
- <el-dialog
3
- v-model="show"
4
- class="udp-search-dialog"
5
- top="5vh"
6
- append-to-body
7
- :show-close="false"
8
- :width="device === 'mobile' ? '80vw' : '40vw'"
9
- :style="{
10
- borderRadius: '6px'
11
- }"
12
- :title="$t('message.udp.menuQuery')"
13
- :before-close="handleClose"
14
- @opened="inputRef.focus()"
15
- @closed="inputRef.blur()"
16
- >
17
- <el-input
18
- ref="inputRef"
19
- v-model="keyword"
20
- :placeholder="$t('message.udp.menuQuery')"
21
- size="large"
22
- clearable
23
- @input="handleSearch"
24
- >
25
- <template #prefix>
26
- <IconifyIconOffline :icon="Search" class="text-primary w-[24px] h-[24px]" />
27
- </template>
28
- </el-input>
29
- <div class="search-result-container">
30
- <el-scrollbar ref="scrollbarRef" max-height="calc(90vh - 140px)">
31
- <el-empty v-if="resultOptions.length === 0" :description="$t('message.emptyData')" />
32
- <SearchResult v-else ref="resultRef" v-model:value="activePath" :options="resultOptions" @click="handleEnter" />
33
- </el-scrollbar>
34
- </div>
35
- <template #footer>
36
- <SearchFooter :total="resultOptions.length" />
37
- </template>
38
- </el-dialog>
39
- </template>
40
- <script lang="ts" setup>
41
- import { ref, watch, computed, nextTick, shallowRef } from 'vue';
42
- import { useDebounceFn, onKeyStroke } from '@vueuse/core';
43
- import { useRouter } from 'vue-router';
44
- import { clone } from 'xe-utils';
45
- import SearchResult from './SearchResult.vue';
46
- import SearchFooter from './SearchFooter.vue';
47
- import { useNav } from '../../../hooks/useNav';
48
- import { transformI18n } from '../../../../plugins/i18n';
49
- import { usePermissionStoreHook } from '../../../../store/modules/permission';
50
- import Search from '@iconify-icons/ri/search-line';
51
-
52
- interface Props {
53
- /** 弹窗显隐 */
54
- value: boolean;
55
- }
56
-
57
- interface Emits {
58
- (e: 'update:value', val: boolean): void;
59
- }
60
-
61
- const { device } = useNav();
62
- const emit = defineEmits<Emits>();
63
- const props = withDefaults(defineProps<Props>(), {});
64
- const router = useRouter();
65
-
66
- const keyword = ref('');
67
- const activePath = ref('');
68
- const scrollbarRef = ref();
69
- const resultRef = ref();
70
- const inputRef = ref<HTMLInputElement | null>(null);
71
- const resultOptions = shallowRef([]);
72
- const handleSearch = useDebounceFn(search, 300);
73
-
74
- /** 菜单树形结构 */
75
- const menusData = computed(() => {
76
- return clone(usePermissionStoreHook().wholeMenus);
77
- });
78
-
79
- const show = computed({
80
- get() {
81
- return props.value;
82
- },
83
- set(val: boolean) {
84
- emit('update:value', val);
85
- }
86
- });
87
-
88
- watch(show, async val => {
89
- if (val) {
90
- /** 自动聚焦 */
91
- await nextTick();
92
- inputRef.value?.focus();
93
- }
94
- });
95
-
96
- /** 将菜单树形结构扁平化为一维数组,用于菜单查询 */
97
- function flatTree(arr) {
98
- const res = [];
99
- function deep(arr, parentIcon?) {
100
- arr.forEach(item => {
101
- if (!item.children || item.children.length === 0) {
102
- const menuItem = !item.meta?.icon && parentIcon ? { ...item, meta: { ...item.meta, icon: parentIcon } } : item;
103
- res.push(menuItem);
104
- } else {
105
- deep(item.children, item.meta?.icon);
106
- }
107
- });
108
- }
109
- deep(arr);
110
- return res;
111
- }
112
-
113
- /** 查询 */
114
- function search() {
115
- const flatMenusData = flatTree(menusData.value);
116
- resultOptions.value = flatMenusData.filter(
117
- menu =>
118
- keyword.value &&
119
- transformI18n(menu.meta?.title).toLocaleLowerCase().includes(keyword.value.toLocaleLowerCase().trim())
120
- );
121
- if (resultOptions.value?.length > 0) {
122
- activePath.value = resultOptions.value[0].path;
123
- } else {
124
- activePath.value = '';
125
- }
126
- }
127
-
128
- function handleClose() {
129
- show.value = false;
130
- /** 延时处理防止用户看到某些操作 */
131
- setTimeout(() => {
132
- resultOptions.value = [];
133
- keyword.value = '';
134
- }, 200);
135
- }
136
-
137
- function scrollTo(index) {
138
- const scrollTop = resultRef.value.handleScroll(index);
139
- scrollbarRef.value.setScrollTop(scrollTop);
140
- }
141
-
142
- /** key up */
143
- function handleUp() {
144
- const { length } = resultOptions.value;
145
- if (length === 0) return;
146
- const index = resultOptions.value.findIndex(item => item.path === activePath.value);
147
- if (index === 0) {
148
- activePath.value = resultOptions.value[length - 1].path;
149
- scrollTo(resultOptions.value.length - 1);
150
- } else {
151
- activePath.value = resultOptions.value[index - 1].path;
152
- scrollTo(index - 1);
153
- }
154
- }
155
-
156
- /** key down */
157
- function handleDown() {
158
- const { length } = resultOptions.value;
159
- if (length === 0) return;
160
- const index = resultOptions.value.findIndex(item => item.path === activePath.value);
161
- if (index + 1 === length) {
162
- activePath.value = resultOptions.value[0].path;
163
- } else {
164
- activePath.value = resultOptions.value[index + 1].path;
165
- }
166
- }
167
-
168
- /** key enter */
169
- function handleEnter() {
170
- const { length } = resultOptions.value;
171
- if (length === 0 || activePath.value === '') return;
172
- router.push(activePath.value);
173
- handleClose();
174
- }
175
-
176
- onKeyStroke('Enter', handleEnter);
177
- onKeyStroke('ArrowUp', handleUp);
178
- onKeyStroke('ArrowDown', handleDown);
179
- </script>
180
-
181
- <style lang="scss" scoped>
182
- .search-result-container {
183
- margin-top: 12px;
184
- }
185
- </style>
1
+ <template>
2
+ <el-dialog
3
+ v-model="show"
4
+ class="udp-search-dialog"
5
+ top="5vh"
6
+ append-to-body
7
+ :show-close="false"
8
+ :width="device === 'mobile' ? '80vw' : '40vw'"
9
+ :style="{
10
+ borderRadius: '6px'
11
+ }"
12
+ :title="$t('message.udp.menuQuery')"
13
+ :before-close="handleClose"
14
+ @opened="inputRef.focus()"
15
+ @closed="inputRef.blur()"
16
+ >
17
+ <el-input
18
+ ref="inputRef"
19
+ v-model="keyword"
20
+ :placeholder="$t('message.udp.menuQuery')"
21
+ size="large"
22
+ clearable
23
+ @input="handleSearch"
24
+ >
25
+ <template #prefix>
26
+ <IconifyIconOffline :icon="Search" class="text-primary w-[24px] h-[24px]" />
27
+ </template>
28
+ </el-input>
29
+ <div class="search-result-container">
30
+ <el-scrollbar ref="scrollbarRef" max-height="calc(90vh - 140px)">
31
+ <el-empty v-if="resultOptions.length === 0" :description="$t('message.emptyData')" />
32
+ <SearchResult v-else ref="resultRef" v-model:value="activePath" :options="resultOptions" @click="handleEnter" />
33
+ </el-scrollbar>
34
+ </div>
35
+ <template #footer>
36
+ <SearchFooter :total="resultOptions.length" />
37
+ </template>
38
+ </el-dialog>
39
+ </template>
40
+ <script lang="ts" setup>
41
+ import { ref, watch, computed, nextTick, shallowRef } from 'vue';
42
+ import { useDebounceFn, onKeyStroke } from '@vueuse/core';
43
+ import { useRouter } from 'vue-router';
44
+ import { clone } from 'xe-utils';
45
+ import SearchResult from './SearchResult.vue';
46
+ import SearchFooter from './SearchFooter.vue';
47
+ import { useNav } from '../../../hooks/useNav';
48
+ import { transformI18n } from '../../../../plugins/i18n';
49
+ import { usePermissionStoreHook } from '../../../../store/modules/permission';
50
+ import Search from '@iconify-icons/ri/search-line';
51
+
52
+ interface Props {
53
+ /** 弹窗显隐 */
54
+ value: boolean;
55
+ }
56
+
57
+ interface Emits {
58
+ (e: 'update:value', val: boolean): void;
59
+ }
60
+
61
+ const { device } = useNav();
62
+ const emit = defineEmits<Emits>();
63
+ const props = withDefaults(defineProps<Props>(), {});
64
+ const router = useRouter();
65
+
66
+ const keyword = ref('');
67
+ const activePath = ref('');
68
+ const scrollbarRef = ref();
69
+ const resultRef = ref();
70
+ const inputRef = ref<HTMLInputElement | null>(null);
71
+ const resultOptions = shallowRef([]);
72
+ const handleSearch = useDebounceFn(search, 300);
73
+
74
+ /** 菜单树形结构 */
75
+ const menusData = computed(() => {
76
+ return clone(usePermissionStoreHook().wholeMenus);
77
+ });
78
+
79
+ const show = computed({
80
+ get() {
81
+ return props.value;
82
+ },
83
+ set(val: boolean) {
84
+ emit('update:value', val);
85
+ }
86
+ });
87
+
88
+ watch(show, async val => {
89
+ if (val) {
90
+ /** 自动聚焦 */
91
+ await nextTick();
92
+ inputRef.value?.focus();
93
+ }
94
+ });
95
+
96
+ /** 将菜单树形结构扁平化为一维数组,用于菜单查询 */
97
+ function flatTree(arr) {
98
+ const res = [];
99
+ function deep(arr, parentIcon?) {
100
+ arr.forEach(item => {
101
+ if (!item.children || item.children.length === 0) {
102
+ const menuItem = !item.meta?.icon && parentIcon ? { ...item, meta: { ...item.meta, icon: parentIcon } } : item;
103
+ res.push(menuItem);
104
+ } else {
105
+ deep(item.children, item.meta?.icon);
106
+ }
107
+ });
108
+ }
109
+ deep(arr);
110
+ return res;
111
+ }
112
+
113
+ /** 查询 */
114
+ function search() {
115
+ const flatMenusData = flatTree(menusData.value);
116
+ resultOptions.value = flatMenusData.filter(
117
+ menu =>
118
+ keyword.value &&
119
+ transformI18n(menu.meta?.title).toLocaleLowerCase().includes(keyword.value.toLocaleLowerCase().trim())
120
+ );
121
+ if (resultOptions.value?.length > 0) {
122
+ activePath.value = resultOptions.value[0].path;
123
+ } else {
124
+ activePath.value = '';
125
+ }
126
+ }
127
+
128
+ function handleClose() {
129
+ show.value = false;
130
+ /** 延时处理防止用户看到某些操作 */
131
+ setTimeout(() => {
132
+ resultOptions.value = [];
133
+ keyword.value = '';
134
+ }, 200);
135
+ }
136
+
137
+ function scrollTo(index) {
138
+ const scrollTop = resultRef.value.handleScroll(index);
139
+ scrollbarRef.value.setScrollTop(scrollTop);
140
+ }
141
+
142
+ /** key up */
143
+ function handleUp() {
144
+ const { length } = resultOptions.value;
145
+ if (length === 0) return;
146
+ const index = resultOptions.value.findIndex(item => item.path === activePath.value);
147
+ if (index === 0) {
148
+ activePath.value = resultOptions.value[length - 1].path;
149
+ scrollTo(resultOptions.value.length - 1);
150
+ } else {
151
+ activePath.value = resultOptions.value[index - 1].path;
152
+ scrollTo(index - 1);
153
+ }
154
+ }
155
+
156
+ /** key down */
157
+ function handleDown() {
158
+ const { length } = resultOptions.value;
159
+ if (length === 0) return;
160
+ const index = resultOptions.value.findIndex(item => item.path === activePath.value);
161
+ if (index + 1 === length) {
162
+ activePath.value = resultOptions.value[0].path;
163
+ } else {
164
+ activePath.value = resultOptions.value[index + 1].path;
165
+ }
166
+ }
167
+
168
+ /** key enter */
169
+ function handleEnter() {
170
+ const { length } = resultOptions.value;
171
+ if (length === 0 || activePath.value === '') return;
172
+ router.push(activePath.value);
173
+ handleClose();
174
+ }
175
+
176
+ onKeyStroke('Enter', handleEnter);
177
+ onKeyStroke('ArrowUp', handleUp);
178
+ onKeyStroke('ArrowDown', handleDown);
179
+ </script>
180
+
181
+ <style lang="scss" scoped>
182
+ .search-result-container {
183
+ margin-top: 12px;
184
+ }
185
+ </style>