@utogether/udp-core 2.0.0-beta.1 → 2.0.0-beta.3

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 (182) hide show
  1. package/dist/{403-CTJDBjz7.js → 403-CxOqlq0f.js} +3 -3
  2. package/dist/403-WCboRvzZ-ZAPgYStl.js +65 -0
  3. package/dist/404-2V0Qi-d7-DkNwQggp.js +65 -0
  4. package/dist/{404-BFYkWIkQ.js → 404-xdB6lFeQ.js} +1 -1
  5. package/dist/500-BYfzvixf-CGpEieyQ.js +67 -0
  6. package/dist/{500-DGG3qadg.js → 500-C94bRK2S.js} +2 -2
  7. package/dist/AuthorityInfo-DBovfUjB-DpQwT9Q5.js +4 -0
  8. package/dist/{AuthorityInfo-ozZIo1Te.js → AuthorityInfo-Dy3b_nFN.js} +1 -1
  9. package/dist/{AuthorityInfo.vue_vue_type_style_index_0_lang-DujerENw.js → AuthorityInfo.vue_vue_type_style_index_0_lang-Bh7IbcdY.js} +2 -2
  10. package/dist/AuthorityInfo.vue_vue_type_style_index_0_lang-D-l_Az3s-Cw7WmFxz.js +100 -0
  11. package/dist/AuthorityPanel-CRlAwbaI-G7pZXKdE.js +4 -0
  12. package/dist/AuthorityPanel.vue_vue_type_style_index_0_lang-DxhZjp1S-CJvk3pW8.js +114 -0
  13. package/dist/Company-B4vsXy2I-CkNCOqjJ.js +25 -0
  14. package/dist/{Company-6VJtwh23.js → Company-gKkfnhLt.js} +3 -3
  15. package/dist/{CompanyPanel-B2P488mq.js → CompanyPanel-BF5Pc35s.js} +7 -7
  16. package/dist/CompanyPanel-Czcx8Gyw-CvndXwB_.js +206 -0
  17. package/dist/DataSet-DT-rGICv-DaUfgbxk.js +147 -0
  18. package/dist/{Department-BnwoLEOC.js → Department-D0I3QVZe.js} +3 -3
  19. package/dist/Department-D0dVUrGC-C6HJcYI1.js +25 -0
  20. package/dist/{DepartmentPanel-CRrrmxtv.js → DepartmentPanel-2LHODgc7.js} +22 -22
  21. package/dist/DepartmentPanel-e91Lxr1j-BS_A-ILd.js +254 -0
  22. package/dist/{DesignPanel-CvbccgX2.js → DesignPanel-CtF3cAAQ.js} +1 -1
  23. package/dist/DesignPanel-DdFl_ohi-uCwFxcl1.js +4 -0
  24. package/dist/DesignPanel.vue_vue_type_style_index_0_lang-BACPrfUI-cC7yL0uY.js +1013 -0
  25. package/dist/{DesignPanel.vue_vue_type_style_index_0_lang-Dz2tUszs.js → DesignPanel.vue_vue_type_style_index_0_lang-BCYgwoVt.js} +3 -3
  26. package/dist/DictView-BzQLOf_P-DDicwdmM.js +111 -0
  27. package/dist/{DictView-Ce1LoVHh.js → DictView-H3V5hxg3.js} +1 -1
  28. package/dist/{InvOrganization-BwCFZO1X.js → InvOrganization-BiGLnbqe.js} +2 -2
  29. package/dist/InvOrganization-atbhw0CI-BABbVt9V.js +74 -0
  30. package/dist/Org-BW1YHG-Q-Cow7JWlD.js +39 -0
  31. package/dist/{Org-0hzs6b0R.js → Org-DQTCQHNY.js} +2 -2
  32. package/dist/Preview-DJtVsoq1-CCGidQjJ.js +48 -0
  33. package/dist/{Preview--DnEAhwh.js → Preview-DXaiis29.js} +1 -1
  34. package/dist/{ReportDefine-Cu983bTN.js → ReportDefine-BLh4CiER.js} +1 -1
  35. package/dist/ReportDefine-CNx_ob99-6NQAHK-Q.js +10 -0
  36. package/dist/ReportDesign-FbQ6yTJS-C1pPAUSp.js +165 -0
  37. package/dist/{ReportDesign-QsWXXgvo.js → ReportDesign-Ni1YxrLC.js} +7 -7
  38. package/dist/ReportQuery-C5gz8Lgd-Eu2cQmda.js +75 -0
  39. package/dist/{ReportQuery-BjKIIhPu.js → ReportQuery-C8G88_qF.js} +1 -1
  40. package/dist/ReportQueryFrom-C7scua5v-uHXWq8Gy.js +4 -0
  41. package/dist/{ReportQueryFrom-DIjBO6Fx.js → ReportQueryFrom-CuZKPtB4.js} +1 -1
  42. package/dist/{ReportQueryFrom.vue_vue_type_style_index_0_lang-0T62cUMK.js → ReportQueryFrom.vue_vue_type_style_index_0_lang-BAn_siFW.js} +7 -7
  43. package/dist/ReportQueryFrom.vue_vue_type_style_index_0_lang-DCbz67Wa-vK6r2uCl.js +178 -0
  44. package/dist/ReportTemplate-BDANdIWv-D_IGjR1w.js +161 -0
  45. package/dist/{ReportTemplate-2uk9tJcy.js → ReportTemplate-DFnDXWmx.js} +8 -8
  46. package/dist/{Role-_QP8QEaI.js → Role-BQ7hsfPn.js} +3 -3
  47. package/dist/Role-ByB0WbxW-5E8Mb148.js +25 -0
  48. package/dist/RoleAssign-DW6iC_0v-Bis61auk.js +26 -0
  49. package/dist/{RoleAssign-C2gkcmEQ.js → RoleAssign-UPCg2d4G.js} +3 -3
  50. package/dist/RolePanel-BM2MaQPU-CgcsbfaX.js +4 -0
  51. package/dist/{RolePanel-vnl_lXNY.js → RolePanel-C-mQ5XRq.js} +1 -1
  52. package/dist/RolePanel-ClQy8DBL-DARL4O-o.js +4 -0
  53. package/dist/{RolePanel-B8FPNGaA.js → RolePanel-CoSXOCZN.js} +1 -1
  54. package/dist/RolePanel.vue_vue_type_script_setup_true_lang-Bc_Ao_PU-DMmxr2iI.js +132 -0
  55. package/dist/{RolePanel.vue_vue_type_script_setup_true_lang-bxHXrBYl.js → RolePanel.vue_vue_type_script_setup_true_lang-Bg-t2UhF.js} +7 -7
  56. package/dist/{RolePanel.vue_vue_type_script_setup_true_lang-BuQbYEEI.js → RolePanel.vue_vue_type_script_setup_true_lang-D-o7HYZ8.js} +8 -8
  57. package/dist/RolePanel.vue_vue_type_script_setup_true_lang-fthF1zkp-JsbQJoDy.js +154 -0
  58. package/dist/ScrollPanel.vue_vue_type_style_index_0_lang-ByWIwajm-BsBf2Vs3.js +100 -0
  59. package/dist/{ScrollPanel.vue_vue_type_style_index_0_lang-C6yZXBqB.js → ScrollPanel.vue_vue_type_style_index_0_lang-CCsoxDfk.js} +1 -1
  60. package/dist/Staff-CuxzvhD9-D0KTcyRh.js +25 -0
  61. package/dist/{Staff-CHWrMIEb.js → Staff-D-CmvG1R.js} +3 -3
  62. package/dist/StaffInfo-CY7gUICu-EZUhUwIp.js +4 -0
  63. package/dist/{StaffInfo-Cpq2eayz.js → StaffInfo-Idhvuc6e.js} +1 -1
  64. package/dist/StaffInfo.vue_vue_type_script_setup_true_lang-Dd8gtQz8-Dlkt-eCn.js +108 -0
  65. package/dist/{StaffInfo.vue_vue_type_script_setup_true_lang-BVCjF2i1.js → StaffInfo.vue_vue_type_script_setup_true_lang-MUGKjnHU.js} +1 -1
  66. package/dist/{StaffPanel-D2BMXt5p.js → StaffPanel-CDDmAYE5.js} +1 -1
  67. package/dist/StaffPanel-CwqG0_xr-CrvzLJoc.js +4 -0
  68. package/dist/{StaffPanel.vue_vue_type_script_setup_true_lang-B6jAGo-g.js → StaffPanel.vue_vue_type_script_setup_true_lang-Bdilqbee.js} +42 -42
  69. package/dist/StaffPanel.vue_vue_type_script_setup_true_lang-DCdBy8Hu-BXrueqi0.js +143 -0
  70. package/dist/SysUser-9Q2UJWhi-DprWXFlR.js +15 -0
  71. package/dist/{SysUser-om6H1BeC.js → SysUser-a-j5bppr.js} +2 -2
  72. package/dist/{SysUserPanel-CH0HPP7h.js → SysUserPanel-6V232wwB.js} +1 -1
  73. package/dist/SysUserPanel-bJy69O7x-BJtBgFEs.js +4 -0
  74. package/dist/{SysUserPanel.vue_vue_type_script_setup_true_lang-Dpl13ee0.js → SysUserPanel.vue_vue_type_script_setup_true_lang-BOtHuMVy.js} +2 -2
  75. package/dist/SysUserPanel.vue_vue_type_script_setup_true_lang-DUPFqgz3-BSqRCMen.js +356 -0
  76. package/dist/{SystemMenu-BkG_DKxA.js → SystemMenu-BnVeOSOQ.js} +7 -7
  77. package/dist/SystemMenu-DGOAolc1-CJSLHP8i.js +156 -0
  78. package/dist/UserInfo-CKoOHkAM-DDWp0I_U.js +4 -0
  79. package/dist/{UserInfo-D9croxUe.js → UserInfo-Cax9b2nw.js} +1 -1
  80. package/dist/UserInfo.vue_vue_type_style_index_0_lang-BaT53SSu-DsNaAomO.js +160 -0
  81. package/dist/{UserInfo.vue_vue_type_style_index_0_lang-DLIP8xpN.js → UserInfo.vue_vue_type_style_index_0_lang-D-cw11i9.js} +2 -2
  82. package/dist/await-to-js.es5-Bv3Eu4mi-UCggJjes.js +10 -0
  83. package/dist/await-to-js.es5-Bv3Eu4mi.js +10 -0
  84. package/dist/childView-0YZQ6GBn-CEqg7k5d.js +4 -0
  85. package/dist/{childView-BY_Ip-l1.js → childView-DKG3eZo8.js} +1 -1
  86. package/dist/childView-DKkgi3yo-D47ft-vi.js +4 -0
  87. package/dist/{childView-CHp_TueS.js → childView-siumuBz0.js} +1 -1
  88. package/dist/childView.vue_vue_type_style_index_0_lang-ABMrGInv-ClOdE_sa.js +143 -0
  89. package/dist/{childView.vue_vue_type_style_index_0_lang-BNHbDRjt.js → childView.vue_vue_type_style_index_0_lang-CUfXDS1q.js} +8 -8
  90. package/dist/{childView.vue_vue_type_style_index_0_lang-CbjGf7Z7.js → childView.vue_vue_type_style_index_0_lang-CW3EbAmW.js} +8 -8
  91. package/dist/childView.vue_vue_type_style_index_0_lang-CaW106ve-CClTM8PK.js +180 -0
  92. package/dist/{code-rule-Ce6yWqCq.js → code-rule-Dtoree6F.js} +2 -2
  93. package/dist/code-rule-wQyfgpNL-C4evD4Co.js +148 -0
  94. package/dist/core.es.js +10 -10
  95. package/dist/cron-task-C-kryDtd-C0NuGZCe.js +135 -0
  96. package/dist/{cron-task-DziaH0rI.js → cron-task-GSRgA7S5.js} +2 -2
  97. package/dist/flow-task-B07st2aD-CgQvagSQ.js +10 -0
  98. package/dist/frameView-BOGA3ezf-QoSxzmSQ.js +44 -0
  99. package/dist/{frameView-DNeCVQaY.js → frameView-Cy6wxW0K.js} +1 -1
  100. package/dist/{index-BabfUVv_.js → index-Dc7xWMiC.js} +1057 -1033
  101. package/dist/layout-home-3Dy4onl4.js +228 -0
  102. package/dist/layout-home-CYHksXN_-Basy-3IH.js +228 -0
  103. package/dist/layoutView-BaRvAbIa-xVgfqspc.js +3302 -0
  104. package/dist/{layoutView-12Mlp9A2.js → layoutView-DMjNscJ-.js} +8 -8
  105. package/dist/log-in-Cx1dGik8-BVeEHeZ8.js +117 -0
  106. package/dist/{log-in-1NGaA5OM.js → log-in-VAG6Cvcx.js} +8 -8
  107. package/dist/log-out-COYdxrNC-ftopGZdE.js +130 -0
  108. package/dist/{log-out-B8_atGcQ.js → log-out-DZGaMCjC.js} +4 -4
  109. package/dist/{login-5dydO6GR.js → login-CqVMdNHs.js} +16 -16
  110. package/dist/login-Dg9ofNS8-Bocp1XMA.js +241 -0
  111. package/dist/login-log-DJBGJVV0-AoOyj0jD.js +70 -0
  112. package/dist/lov-view-C0T5prk8-B2DBmn55.js +97 -0
  113. package/dist/{lov-view-DPvGUu3h.js → lov-view-Cc68_28B.js} +7 -7
  114. package/dist/{menuInfo-DVADYfEK.js → menuInfo-BIrIaJlH.js} +1 -1
  115. package/dist/menuInfo-BZJ_q7bz-Drho-_QC.js +4 -0
  116. package/dist/menuInfo.vue_vue_type_style_index_0_lang-BA8xjUo3-BCZ1wipf.js +363 -0
  117. package/dist/{menuInfo.vue_vue_type_style_index_0_lang-DgsifDrm.js → menuInfo.vue_vue_type_style_index_0_lang-DlE4w35X.js} +2 -2
  118. package/dist/{pda-app-BZXs-2BQ.js → pda-app-DnjphrRS.js} +9 -9
  119. package/dist/pda-app-m9hsppHo-B4xyja1o.js +710 -0
  120. package/dist/redirect-BqegffKC-CBCIuqmz.js +15 -0
  121. package/dist/resource-C6KEIXu--B_ddyecm.js +97 -0
  122. package/dist/{resource-BZA9NFKc.js → resource-DISgPDM7.js} +4 -4
  123. package/dist/su-welcome-BjbuSrBZ.js +49424 -0
  124. package/dist/su-welcome-CYYy-dzr-D3RKPoB0.js +42089 -0
  125. package/dist/sys-config-DCjJGtht-DARDjlrt.js +370 -0
  126. package/dist/{sys-config-DQmNjWH4.js → sys-config-Yc9vh1t1.js} +13 -13
  127. package/dist/udp-core.css +1 -1
  128. package/dist/utogether-MlnyYtNS-CGgjFNPS.js +4 -0
  129. package/package.json +5 -2
  130. package/src/App.vue +71 -71
  131. package/src/components/udp/content/index.vue +88 -88
  132. package/src/components/udp/form-upload/form-upload.vue +492 -492
  133. package/src/components/udp/grid/index.vue +524 -524
  134. package/src/components/udp/index.ts +6 -6
  135. package/src/components/udp/ut-stamp-badge/index.vue +271 -271
  136. package/src/components/udp/utils.ts +408 -408
  137. package/src/layout/components/lay-content/index.vue +136 -136
  138. package/src/layout/components/lay-search/components/SearchModal.vue +181 -189
  139. package/src/layout/components/lay-setting/index.vue +503 -503
  140. package/src/layout/components/lay-sidebar/sidebar-logo.vue +101 -101
  141. package/src/layout/components/lay-tag/index.vue +598 -598
  142. package/src/layout/hooks/useNav.ts +176 -176
  143. package/src/layout/hooks/useTag.ts +227 -227
  144. package/src/layout/layoutView.vue +216 -216
  145. package/src/layout/types.ts +93 -93
  146. package/src/main.ts +111 -112
  147. package/src/plugins/i18n/zh.ts +1 -0
  148. package/src/plugins/vxe-table/index.ts +116 -116
  149. package/src/plugins/vxe-table/render.tsx +968 -968
  150. package/src/router/index.ts +187 -187
  151. package/src/router/modules/home.ts +32 -32
  152. package/src/router/utils.ts +420 -420
  153. package/src/store/modules/epTheme.ts +48 -48
  154. package/src/style/vxetable.scss +364 -356
  155. package/src/utils/dataFormat/index.ts +222 -222
  156. package/src/utils/lifecycle.ts +39 -39
  157. package/src/views/organization/department/DepartmentPanel.vue +303 -303
  158. package/src/views/organization/staff/StaffInfo.vue +127 -127
  159. package/src/views/organization/staff/StaffPanel.vue +3 -3
  160. package/src/views/system/layout/layout-home.vue +45 -7
  161. package/src/views/system/menu/AuthorityPanel.vue +141 -141
  162. package/src/views/system/menu/SystemMenu.vue +194 -194
  163. package/src/views/system/menu/menuInfo.vue +1 -1
  164. package/src/views/system/sysUser/SysUserPanel.vue +363 -363
  165. package/src/views/udev/coderule/code-rule.vue +132 -132
  166. package/src/views/udev/dict/DictView.vue +118 -118
  167. package/src/views/udev/dict/childView.vue +184 -184
  168. package/src/views/udev/lov/childView.vue +174 -174
  169. package/src/views/uhome/components/common-menu.vue +118 -0
  170. package/src/views/uhome/components/dynamic-component.vue +66 -0
  171. package/src/views/uhome/components/home-todo.vue +170 -0
  172. package/src/views/uhome/components/menu-favorite.vue +315 -315
  173. package/src/views/uhome/dynamic-card.vue +18 -19
  174. package/src/views/uhome/su-welcome.vue +46 -116
  175. package/src/views/ulogin/login.vue +336 -336
  176. package/src/views/upms/interface/log-in.vue +100 -100
  177. package/src/views/upms/interface/log-out.vue +104 -104
  178. package/src/views/upms/user/login-log.vue +54 -54
  179. package/types/global.d.ts +232 -232
  180. package/dist/await-to-js.es5-BtRbN2QH.js +0 -10
  181. package/dist/layout-home-Cis1KlEr.js +0 -195
  182. package/dist/su-welcome-BXe6Cdp3.js +0 -580
@@ -1,174 +1,174 @@
1
- <!--
2
- * @Author: wei.li
3
- * @Date: 2022-07-15 17:02:56
4
- * @LastEditors: levi7754 levi7754@163.com
5
- * @LastEditTime: 2025-12-05 17:00:29
6
- * @Description: file contentu
7
- -->
8
- <template>
9
- <div class="ut-loview-wrapper">
10
- <vxe-drawer :model-value="show" position="right" :show-header="false" width="90%">
11
- <div v-spinning="loading">
12
- <ut-content :title="$t('message.title.lovView')" @close="handleClose">
13
- <template v-slot:header>
14
- <ut-button icon="ri-save-3-fill" content="save" @tap="handleSave()" />
15
- </template>
16
- <template v-slot:body>
17
- <ut-form ref="formRef" :record="record" :items="items" data-status="update" />
18
- <ut-divider :title="$t('message.title.lovColConfig')" />
19
- <ut-grid
20
- ref="xgrid"
21
- :columns="columns"
22
- :url="subUrl"
23
- :default-value="{ headerId: record.id }"
24
- :default-params="{ headerId: record.id }"
25
- :height="height"
26
- :events="onEvents"
27
- />
28
- </template>
29
- </ut-content>
30
- </div>
31
- </vxe-drawer>
32
- </div>
33
- </template>
34
-
35
- <script setup lang="ts">
36
- import { ref } from 'vue';
37
- import to from 'await-to-js';
38
- import { useRender } from '@utogether/utils';
39
- import { useSystemStoreHook } from '../../../store/modules/system';
40
- import { getServiceApi } from '../../../api';
41
-
42
- interface IProps {
43
- record: IRecord;
44
- show: boolean;
45
- }
46
-
47
- const props = withDefaults(defineProps<IProps>(), {
48
- record: (): IRecord => {
49
- return {};
50
- },
51
- show: false
52
- });
53
-
54
- const renderHook = useRender();
55
- const dictData = useSystemStoreHook().dicts;
56
- const loading = ref(false);
57
- const optionProps = { value: 'dictCode', label: 'dictName' };
58
-
59
- const formRef = ref(null);
60
-
61
- const url = '/upfm/v1/lovViewHeader';
62
- const subUrl = '/upfm/v1/lovViewLine';
63
-
64
- const items = [
65
- { field: 'lovCode', disabled: true },
66
- { field: 'lovName', required: true },
67
- { field: 'valueField', required: true },
68
- // { field: 'displayField', required: true },
69
- { field: 'lovTitle' },
70
- { field: 'lovType', code: 'SU.LOV.TYPE', required: true },
71
- { field: 'lovUrl', required: true, visible: props.record.lovType === 'url' },
72
- {
73
- field: 'sqlStatement',
74
- span: 24,
75
- visible: props.record.lovType === 'sql',
76
- itemRender: { name: '$textarea', props: { rows: 5 } },
77
- required: true
78
- }
79
- ];
80
-
81
- // 列字段
82
- const columns: ITableColProps[] = [
83
- { type: 'checkbox', width: 50, align: 'center' },
84
- { field: 'seqNo', required: true, width: 100, editRender: renderHook.renderNumber() },
85
- { field: 'colField', required: true, editRender: renderHook.renderInput() },
86
- { field: 'colTitle', required: true, editRender: renderHook.renderInput() },
87
- { field: 'colWidth', required: true, width: 120, editRender: renderHook.renderNumber() },
88
- {
89
- field: 'fieldType',
90
- width: 120,
91
- editRender: renderHook.renderDict('SU.FIELD.TYPE', onChange),
92
- formatter: ['formatDict', 'SU.FIELD.TYPE']
93
- },
94
- {
95
- field: 'dictCode',
96
- title: 'message.dictName',
97
- width: 120,
98
- editRender: renderHook.renderSelectLocal({ options: dictData, optionProps }),
99
- formatter: ['formatSelectLocal', [dictData, 'dictCode', 'dictName']]
100
- },
101
- {
102
- field: 'isSearch',
103
- width: 120,
104
- required: true,
105
- editRender: renderHook.renderDict('SU.WHETHER'),
106
- formatter: ['formatDict', 'SU.WHETHER']
107
- },
108
- {
109
- field: 'isCol',
110
- width: 120,
111
- required: true,
112
- editRender: renderHook.renderDict('SU.WHETHER'),
113
- formatter: ['formatDict', 'SU.WHETHER']
114
- }
115
- ];
116
-
117
- const xgrid = ref(null);
118
- const height = window.innerHeight - 195;
119
-
120
- //激活事件
121
- const onEvents = {
122
- editActived({ row }) {
123
- columns[6].editRender.props.disabled = row.fieldType !== 'dictCode';
124
- }
125
- };
126
-
127
- // change事件
128
- function onChange(item) {
129
- item.row.dictName = '';
130
- columns[6].editRender.props.disabled = item.row.fieldType !== 'dictCode';
131
- columns[6].required = item.row.fieldType !== 'dictCode';
132
- }
133
-
134
- /**
135
- * @description: 保存值集视图
136
- * @return {*}
137
- */
138
- const handleSave = () => {
139
- formRef.value.validateForm(async valid => {
140
- if (!valid) {
141
- loading.value = true;
142
- const [err] = await to(getServiceApi().put(url, [props.record]));
143
- if (!err) {
144
- const data = xgrid.value.getInstance().getRecordset();
145
- data.insertRecords.length && (await to(getServiceApi().post(subUrl, data.insertRecords)));
146
- data.updateRecords.length && (await to(getServiceApi().put(subUrl, data.updateRecords)));
147
- }
148
- loading.value = false;
149
- }
150
- });
151
- };
152
-
153
- const emit = defineEmits<{ (e: 'onClose'): void }>();
154
- // 抽屉关闭
155
- function handleClose() {
156
- emit('onClose');
157
- }
158
- </script>
159
-
160
- <style lang="scss">
161
- .ut-loview-wrapper {
162
- .el-drawer__header {
163
- margin-bottom: 0;
164
- }
165
-
166
- .el-drawer__body {
167
- padding: 5px 0;
168
- }
169
-
170
- .ut-content-body {
171
- height: 90%;
172
- }
173
- }
174
- </style>
1
+ <!--
2
+ * @Author: wei.li
3
+ * @Date: 2022-07-15 17:02:56
4
+ * @LastEditors: levi7754 levi7754@163.com
5
+ * @LastEditTime: 2025-12-05 17:00:29
6
+ * @Description: file contentu
7
+ -->
8
+ <template>
9
+ <div class="ut-loview-wrapper">
10
+ <vxe-drawer :model-value="show" position="right" :show-header="false" width="90%">
11
+ <div v-spinning="loading">
12
+ <ut-content :title="$t('message.title.lovView')" @close="handleClose">
13
+ <template v-slot:header>
14
+ <ut-button icon="ri-save-3-fill" content="save" @tap="handleSave()" />
15
+ </template>
16
+ <template v-slot:body>
17
+ <ut-form ref="formRef" :record="record" :items="items" data-status="update" />
18
+ <ut-divider :title="$t('message.title.lovColConfig')" />
19
+ <ut-grid
20
+ ref="xgrid"
21
+ :columns="columns"
22
+ :url="subUrl"
23
+ :default-value="{ headerId: record.id }"
24
+ :default-params="{ headerId: record.id }"
25
+ :height="height"
26
+ :events="onEvents"
27
+ />
28
+ </template>
29
+ </ut-content>
30
+ </div>
31
+ </vxe-drawer>
32
+ </div>
33
+ </template>
34
+
35
+ <script setup lang="ts">
36
+ import { ref } from 'vue';
37
+ import to from 'await-to-js';
38
+ import { useRender } from '@utogether/utils';
39
+ import { useSystemStoreHook } from '../../../store/modules/system';
40
+ import { getServiceApi } from '../../../api';
41
+
42
+ interface IProps {
43
+ record: IRecord;
44
+ show: boolean;
45
+ }
46
+
47
+ const props = withDefaults(defineProps<IProps>(), {
48
+ record: (): IRecord => {
49
+ return {};
50
+ },
51
+ show: false
52
+ });
53
+
54
+ const renderHook = useRender();
55
+ const dictData = useSystemStoreHook().dicts;
56
+ const loading = ref(false);
57
+ const optionProps = { value: 'dictCode', label: 'dictName' };
58
+
59
+ const formRef = ref(null);
60
+
61
+ const url = '/upfm/v1/lovViewHeader';
62
+ const subUrl = '/upfm/v1/lovViewLine';
63
+
64
+ const items = [
65
+ { field: 'lovCode', disabled: true },
66
+ { field: 'lovName', required: true },
67
+ { field: 'valueField', required: true },
68
+ // { field: 'displayField', required: true },
69
+ { field: 'lovTitle' },
70
+ { field: 'lovType', code: 'SU.LOV.TYPE', required: true },
71
+ { field: 'lovUrl', required: true, visible: props.record.lovType === 'url' },
72
+ {
73
+ field: 'sqlStatement',
74
+ span: 24,
75
+ visible: props.record.lovType === 'sql',
76
+ itemRender: { name: '$textarea', props: { rows: 5 } },
77
+ required: true
78
+ }
79
+ ];
80
+
81
+ // 列字段
82
+ const columns: ITableColProps[] = [
83
+ { type: 'checkbox', width: 50, align: 'center' },
84
+ { field: 'seqNo', required: true, width: 100, editRender: renderHook.renderNumber() },
85
+ { field: 'colField', required: true, editRender: renderHook.renderInput() },
86
+ { field: 'colTitle', required: true, editRender: renderHook.renderInput() },
87
+ { field: 'colWidth', required: true, width: 120, editRender: renderHook.renderNumber() },
88
+ {
89
+ field: 'fieldType',
90
+ width: 120,
91
+ editRender: renderHook.renderDict('SU.FIELD.TYPE', onChange),
92
+ formatter: ['formatDict', 'SU.FIELD.TYPE']
93
+ },
94
+ {
95
+ field: 'dictCode',
96
+ title: 'message.dictName',
97
+ width: 120,
98
+ editRender: renderHook.renderSelectLocal({ options: dictData, optionProps }),
99
+ formatter: ['formatSelectLocal', [dictData, 'dictCode', 'dictName']]
100
+ },
101
+ {
102
+ field: 'isSearch',
103
+ width: 120,
104
+ required: true,
105
+ editRender: renderHook.renderDict('SU.WHETHER'),
106
+ formatter: ['formatDict', 'SU.WHETHER']
107
+ },
108
+ {
109
+ field: 'isCol',
110
+ width: 120,
111
+ required: true,
112
+ editRender: renderHook.renderDict('SU.WHETHER'),
113
+ formatter: ['formatDict', 'SU.WHETHER']
114
+ }
115
+ ];
116
+
117
+ const xgrid = ref(null);
118
+ const height = window.innerHeight - 195;
119
+
120
+ //激活事件
121
+ const onEvents = {
122
+ editActived({ row }) {
123
+ columns[6].editRender.props.disabled = row.fieldType !== 'dictCode';
124
+ }
125
+ };
126
+
127
+ // change事件
128
+ function onChange(item) {
129
+ item.row.dictName = '';
130
+ columns[6].editRender.props.disabled = item.row.fieldType !== 'dictCode';
131
+ columns[6].required = item.row.fieldType !== 'dictCode';
132
+ }
133
+
134
+ /**
135
+ * @description: 保存值集视图
136
+ * @return {*}
137
+ */
138
+ const handleSave = () => {
139
+ formRef.value.validateForm(async valid => {
140
+ if (!valid) {
141
+ loading.value = true;
142
+ const [err] = await to(getServiceApi().put(url, [props.record]));
143
+ if (!err) {
144
+ const data = xgrid.value.getInstance().getRecordset();
145
+ data.insertRecords.length && (await to(getServiceApi().post(subUrl, data.insertRecords)));
146
+ data.updateRecords.length && (await to(getServiceApi().put(subUrl, data.updateRecords)));
147
+ }
148
+ loading.value = false;
149
+ }
150
+ });
151
+ };
152
+
153
+ const emit = defineEmits<{ (e: 'onClose'): void }>();
154
+ // 抽屉关闭
155
+ function handleClose() {
156
+ emit('onClose');
157
+ }
158
+ </script>
159
+
160
+ <style lang="scss">
161
+ .ut-loview-wrapper {
162
+ .el-drawer__header {
163
+ margin-bottom: 0;
164
+ }
165
+
166
+ .el-drawer__body {
167
+ padding: 5px 0;
168
+ }
169
+
170
+ .ut-content-body {
171
+ height: 90%;
172
+ }
173
+ }
174
+ </style>
@@ -0,0 +1,118 @@
1
+ <template>
2
+ <div v-spinning="loading">
3
+ <el-card class="mb-2">
4
+ <template #header>
5
+ <div class="flex items-center justify-between dark:bg-black">
6
+ <span class="font-bold">常用菜单</span>
7
+ <span class="text-xs text-gray-400 cursor-pointer" @click="onFavoriteMenu">
8
+ <span>更多</span>
9
+ <i class="vxe-icon-arrow-right" />
10
+ </span>
11
+ </div>
12
+ </template>
13
+
14
+ <div class="default:bg-white dark:bg-black">
15
+ <el-empty v-if="!menuList.length" :image-size="100" description="快来添加常用菜单吧!" class="p-0 pb-3" />
16
+ <ul
17
+ class="p-0 w-full h-full grid grid-rows-1 grid-cols-8 u-dashed-menu"
18
+ :class="{ 'grid-rows-2': menuList.length > 8 }"
19
+ >
20
+ <li
21
+ v-for="(item, idx) in menuList"
22
+ :key="item.id"
23
+ class="text-center list-none bg-white"
24
+ @click="onClickMenu(item)"
25
+ >
26
+ <div class="h-20 flex justify-center items-center flex-col">
27
+ <div
28
+ class="rounded-full w-10 h-10 flex items-center justify-center"
29
+ :style="{ backgroundColor: getColor(idx) }"
30
+ >
31
+ <iconify-icon-offline :icon="item.icon || `ri:${icons[idx]}-line`" class="text-2xl text-white" />
32
+ </div>
33
+ <span class="text-xs mt-2">{{ item.menuName }}</span>
34
+ </div>
35
+ </li>
36
+ </ul>
37
+ </div>
38
+ <div />
39
+ </el-card>
40
+
41
+ <menu-favorite
42
+ v-if="showFavorite"
43
+ :data-source="menuList"
44
+ :user-name="systemHook.getUserInfo.userName"
45
+ :icons="icons"
46
+ @close="showFavorite = false"
47
+ @success="getMenuList"
48
+ />
49
+ </div>
50
+ </template>
51
+
52
+ <script lang="ts" setup>
53
+ import { onMounted, ref } from 'vue';
54
+ import { useRouter } from 'vue-router';
55
+ import { cookies } from '@utogether/utils';
56
+ import menuFavorite from './menu-favorite.vue';
57
+ import { useSystemStoreHook } from '../../../store/modules/system';
58
+ import { kLOGINER } from '../../../contant';
59
+ import { getServiceApi } from '../../../api';
60
+
61
+ const router = useRouter();
62
+ const systemHook = useSystemStoreHook();
63
+
64
+ const menuList = ref([]);
65
+ const showFavorite = ref(false);
66
+ const loading = ref(false);
67
+
68
+ /** 查询收藏菜单功能 */
69
+ const getMenuList = () => {
70
+ const url = '/upfm/v1/menuFavority';
71
+ loading.value = true;
72
+ const query = { pageSize: 20, pageNum: 1, userName: cookies.get(kLOGINER) };
73
+ getServiceApi()
74
+ .get(url, query)
75
+ .then((res: IResponseData) => {
76
+ menuList.value = res?.list || [];
77
+ })
78
+ .finally(() => {
79
+ loading.value = false;
80
+ });
81
+ };
82
+
83
+ const onFavoriteMenu = () => {
84
+ showFavorite.value = true;
85
+ };
86
+
87
+ const onClickMenu = item => {
88
+ router.push(item.menuPath);
89
+ };
90
+
91
+ const getColor = idx => {
92
+ const colorSet = ['#409eff', '#67c23a', '#13c2c2', '#e85f33', 'orange'];
93
+ return colorSet[idx % 5];
94
+ };
95
+
96
+ const icons = [
97
+ 'community',
98
+ 'shield-star',
99
+ 'group',
100
+ 'settings',
101
+ 'star',
102
+ 'train',
103
+ 'send-plane',
104
+ 'rocket',
105
+ 'device',
106
+ 'compass',
107
+ 'map-pin',
108
+ 'keynote',
109
+ 'article',
110
+ 'tv',
111
+ 'database-2',
112
+ 'calendar'
113
+ ];
114
+
115
+ onMounted(() => {
116
+ getMenuList();
117
+ });
118
+ </script>
@@ -0,0 +1,66 @@
1
+ <template>
2
+ <remoteComponent />
3
+ </template>
4
+
5
+ <script setup lang="ts">
6
+ import { defineAsyncComponent } from 'vue';
7
+ import * as Vue from 'vue';
8
+ import XEUtils from 'xe-utils';
9
+ import to from 'await-to-js';
10
+ import dayjs from 'dayjs';
11
+ import vxe from 'vxe-pc-ui';
12
+ import * as udpUtils from '@utogether/utils';
13
+ import * as router from 'vue-router';
14
+ import { loadModule } from 'vue3-sfc-loader';
15
+ import * as echarts from 'echarts';
16
+ import { getEnv } from '../../../config';
17
+ import * as udpCore from '../../../../index';
18
+
19
+ interface IProps {
20
+ data: IRecord;
21
+ }
22
+
23
+ const props = withDefaults(defineProps<IProps>(), {
24
+ data: () => {
25
+ return {};
26
+ }
27
+ });
28
+
29
+ const domain = getEnv().VITE_ROUTER_HISTORY;
30
+
31
+ const options = {
32
+ compileOptions: {
33
+ mode: 'module', // 关键配置
34
+ hoistStatic: true
35
+ },
36
+ moduleCache: {
37
+ vue: Vue,
38
+ 'vue-router': router,
39
+ 'await-to-js': to,
40
+ '@utogether/utils': udpUtils,
41
+ '@utogether/udp-core': udpCore,
42
+ 'xe-utils': XEUtils,
43
+ dayjs: dayjs,
44
+ echarts: echarts,
45
+ 'vxe-pc-ui': vxe
46
+ },
47
+ async getFile(url) {
48
+ const res = await fetch(url);
49
+ const code = await res.text();
50
+ return code;
51
+ },
52
+ addStyle(textContent) {
53
+ const style = Object.assign(document.createElement('style'), {
54
+ textContent
55
+ });
56
+ const ref = document.head.getElementsByTagName('style')[0] || null;
57
+ document.head.insertBefore(style, ref);
58
+ }
59
+ };
60
+
61
+ const remoteComponent = defineAsyncComponent(async () => {
62
+ const res = await loadModule(`${window.origin}${domain ? '/' + domain : ''}${props.data.url}.vue`, options);
63
+ console.log('res', res);
64
+ return res;
65
+ });
66
+ </script>